diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index 2f880a9e32..6934354a70 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,33 +1,49 @@ +--- +name: Bug report +about: Create a report to help us fix issues. +title: '' +labels: 'Type: Bug' +assignees: '' + +--- + -**Application Version** - +**Application version** +(The version of the application this issue occurs with.) **Platform** - +(Information about the operating system the issue occurs on. Include at least the operating system and maybe GPU.) **Printer** - +(Which printer was selected in Cura?) -**Steps to Reproduce** - +**Reproduction steps** +1. (Something you did.) +2. (Something you did next.) -**Actual Results** - +**Screenshot(s)** +(Image showing the problem, perhaps before/after images.) + +**Actual results** +(What happens after the above steps have been followed.) **Expected results** - +(What should happen after the above steps have been followed.) -**Additional Information** - +**Project file** +(For slicing bugs, provide a project which clearly shows the bug, by going to File->Save. For big files you may need to use WeTransfer or similar file sharing sites.) + +**Log file** +(See https://github.com/Ultimaker/Cura#logging-issues to find the log file to upload, or copy a relevant snippet from it.) + +**Additional information** +(Extra information relevant to the issue.) diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md index 033cfd5bcd..6934354a70 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -8,33 +8,42 @@ assignees: '' --- -**Application Version** - +**Application version** +(The version of the application this issue occurs with.) **Platform** - +(Information about the operating system the issue occurs on. Include at least the operating system and maybe GPU.) **Printer** - +(Which printer was selected in Cura?) -**Actual Results** - +**Reproduction steps** +1. (Something you did.) +2. (Something you did next.) + +**Screenshot(s)** +(Image showing the problem, perhaps before/after images.) + +**Actual results** +(What happens after the above steps have been followed.) **Expected results** - +(What should happen after the above steps have been followed.) -**Additional Information** - +**Project file** +(For slicing bugs, provide a project which clearly shows the bug, by going to File->Save. For big files you may need to use WeTransfer or similar file sharing sites.) + +**Log file** +(See https://github.com/Ultimaker/Cura#logging-issues to find the log file to upload, or copy a relevant snippet from it.) + +**Additional information** +(Extra information relevant to the issue.) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 2a0a3e4e7b..a10d664a04 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -8,15 +8,16 @@ assignees: '' --- **Is your feature request related to a problem? Please describe.** - +(A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]) **Describe the solution you'd like** - +(A clear and concise description of what you want to happen. If possible, describe why you think this is a good solution.) **Describe alternatives you've considered** - +(A clear and concise description of any alternative solutions or features you've considered. Again, if possible, think about why these alternatives are not working out.) **Affected users and/or printers** - +(Who do you think will benefit from this? Is everyone going to benefit from these changes? Or specific kinds of users?) + **Additional context** - +(Add any other context or screenshots about the feature request here.) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml new file mode 100644 index 0000000000..5e1e5aa6bb --- /dev/null +++ b/.github/workflows/cicd.yml @@ -0,0 +1,13 @@ +--- +name: CI/CD +on: [push, pull_request] +jobs: + build: + name: Build and test + runs-on: ubuntu-latest + container: ultimaker/cura-build-environment + steps: + - name: Checkout Cura + uses: actions/checkout@v2 + - name: Build and test + run: docker/build.sh diff --git a/.gitignore b/.gitignore index 2ec5af2b9b..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 @@ -72,3 +73,6 @@ run.sh CuraEngine /.coverage + +#Prevents import failures when plugin running tests +plugins/__init__.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index f4a4d0771a..0000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,12 +0,0 @@ -image: registry.gitlab.com/ultimaker/cura/cura-build-environment:centos7 - -stages: - - build - -build-and-test: - stage: build - script: - - docker/build.sh - artifacts: - paths: - - build diff --git a/CMakeLists.txt b/CMakeLists.txt index ba427a745d..4954ac46dc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,11 +20,12 @@ 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) @@ -48,7 +49,7 @@ endif() if(NOT ${URANIUM_DIR} STREQUAL "") - set(CMAKE_MODULE_PATH "${URANIUM_DIR}/cmake") + set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${URANIUM_DIR}/cmake") endif() if(NOT ${URANIUM_SCRIPTS_DIR} STREQUAL "") list(APPEND CMAKE_MODULE_PATH ${URANIUM_DIR}/cmake) @@ -62,8 +63,8 @@ endif() install(DIRECTORY resources DESTINATION ${CMAKE_INSTALL_DATADIR}/cura) -install(DIRECTORY plugins - DESTINATION lib${LIB_SUFFIX}/cura) + +include(CuraPluginInstall) if(NOT APPLE AND NOT WIN32) install(FILES cura_app.py diff --git a/cmake/CuraPluginInstall.cmake b/cmake/CuraPluginInstall.cmake new file mode 100644 index 0000000000..d35e74acb8 --- /dev/null +++ b/cmake/CuraPluginInstall.cmake @@ -0,0 +1,99 @@ +# Copyright (c) 2019 Ultimaker B.V. +# CuraPluginInstall.cmake is released under the terms of the LGPLv3 or higher. + +# +# This module detects all plugins that need to be installed and adds them using the CMake install() command. +# It detects all plugin folder in the path "plugins/*" where there's a "plugin.json" in it. +# +# Plugins can be configured to NOT BE INSTALLED via the variable "CURA_NO_INSTALL_PLUGINS" as a list of string in the +# form of "a;b;c" or "a,b,c". By default all plugins will be installed. +# + +# FIXME: Remove the code for CMake <3.12 once we have switched over completely. +# FindPython3 is a new module since CMake 3.12. It deprecates FindPythonInterp and FindPythonLibs. The FindPython3 +# module is copied from the CMake repository here so in CMake <3.12 we can still use it. +if(${CMAKE_VERSION} VERSION_LESS 3.12) + # Use FindPythonInterp and FindPythonLibs for CMake <3.12 + find_package(PythonInterp 3 REQUIRED) + + set(Python3_EXECUTABLE ${PYTHON_EXECUTABLE}) +else() + # Use FindPython3 for CMake >=3.12 + find_package(Python3 REQUIRED COMPONENTS Interpreter) +endif() + +# Options or configuration variables +set(CURA_NO_INSTALL_PLUGINS "" CACHE STRING "A list of plugins that should not be installed, separated with ';' or ','.") + +file(GLOB_RECURSE _plugin_json_list ${CMAKE_SOURCE_DIR}/plugins/*/plugin.json) +list(LENGTH _plugin_json_list _plugin_json_list_len) + +# Sort the lists alphabetically so we can handle cases like this: +# - plugins/my_plugin/plugin.json +# - plugins/my_plugin/my_module/plugin.json +# In this case, only "plugins/my_plugin" should be added via install(). +set(_no_install_plugin_list ${CURA_NO_INSTALL_PLUGINS}) +# Sanitize the string so the comparison will be case-insensitive. +string(STRIP "${_no_install_plugin_list}" _no_install_plugin_list) +string(TOLOWER "${_no_install_plugin_list}" _no_install_plugin_list) + +# WORKAROUND counterpart of what's in cura-build. +string(REPLACE "," ";" _no_install_plugin_list "${_no_install_plugin_list}") + +list(LENGTH _no_install_plugin_list _no_install_plugin_list_len) + +if(_no_install_plugin_list_len GREATER 0) + list(SORT _no_install_plugin_list) +endif() +if(_plugin_json_list_len GREATER 0) + list(SORT _plugin_json_list) +endif() + +# Check all plugin directories and add them via install() if needed. +set(_install_plugin_list "") +foreach(_plugin_json_path ${_plugin_json_list}) + get_filename_component(_plugin_dir ${_plugin_json_path} DIRECTORY) + file(RELATIVE_PATH _rel_plugin_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_plugin_dir}) + get_filename_component(_plugin_dir_name ${_plugin_dir} NAME) + + # Make plugin name comparison case-insensitive + string(TOLOWER "${_plugin_dir_name}" _plugin_dir_name_lowercase) + + # Check if this plugin needs to be skipped for installation + set(_add_plugin ON) # Indicates if this plugin should be added to the build or not. + set(_is_no_install_plugin OFF) # If this plugin will not be added, this indicates if it's because the plugin is + # specified in the NO_INSTALL_PLUGINS list. + if(_no_install_plugin_list) + if("${_plugin_dir_name_lowercase}" IN_LIST _no_install_plugin_list) + set(_add_plugin OFF) + set(_is_no_install_plugin ON) + endif() + endif() + + # Make sure this is not a subdirectory in a plugin that's already in the install list + if(_add_plugin) + foreach(_known_install_plugin_dir ${_install_plugin_list}) + if(_plugin_dir MATCHES "${_known_install_plugin_dir}.+") + set(_add_plugin OFF) + break() + endif() + endforeach() + endif() + + if(_add_plugin) + message(STATUS "[+] PLUGIN TO INSTALL: ${_rel_plugin_dir}") + get_filename_component(_rel_plugin_parent_dir ${_rel_plugin_dir} DIRECTORY) + install(DIRECTORY ${_rel_plugin_dir} + DESTINATION lib${LIB_SUFFIX}/cura/${_rel_plugin_parent_dir} + PATTERN "__pycache__" EXCLUDE + PATTERN "*.qmlc" EXCLUDE + ) + list(APPEND _install_plugin_list ${_plugin_dir}) + elseif(_is_no_install_plugin) + message(STATUS "[-] PLUGIN TO REMOVE : ${_rel_plugin_dir}") + execute_process(COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/mod_bundled_packages_json.py + -d ${CMAKE_CURRENT_SOURCE_DIR}/resources/bundled_packages + ${_plugin_dir_name} + RESULT_VARIABLE _mod_json_result) + endif() +endforeach() diff --git a/cmake/CuraTests.cmake b/cmake/CuraTests.cmake index c0762e2b91..b1d3e0ddc4 100644 --- a/cmake/CuraTests.cmake +++ b/cmake/CuraTests.cmake @@ -47,7 +47,7 @@ function(cura_add_test) if (NOT ${test_exists}) add_test( NAME ${_NAME} - COMMAND ${Python3_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}") diff --git a/cmake/mod_bundled_packages_json.py b/cmake/mod_bundled_packages_json.py new file mode 100755 index 0000000000..6423591f57 --- /dev/null +++ b/cmake/mod_bundled_packages_json.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +# +# This script removes the given package entries in the bundled_packages JSON files. This is used by the PluginInstall +# CMake module. +# + +import argparse +import collections +import json +import os +import sys + + +## Finds all JSON files in the given directory recursively and returns a list of those files in absolute paths. +# +# \param work_dir The directory to look for JSON files recursively. +# \return A list of JSON files in absolute paths that are found in the given directory. +def find_json_files(work_dir: str) -> list: + json_file_list = [] + for root, dir_names, file_names in os.walk(work_dir): + for file_name in file_names: + abs_path = os.path.abspath(os.path.join(root, file_name)) + json_file_list.append(abs_path) + return json_file_list + + +## Removes the given entries from the given JSON file. The file will modified in-place. +# +# \param file_path The JSON file to modify. +# \param entries A list of strings as entries to remove. +# \return None +def remove_entries_from_json_file(file_path: str, entries: list) -> None: + try: + with open(file_path, "r", encoding = "utf-8") as f: + package_dict = json.load(f, object_hook = collections.OrderedDict) + except Exception as e: + msg = "Failed to load '{file_path}' as a JSON file. This file will be ignored Exception: {e}"\ + .format(file_path = file_path, e = e) + sys.stderr.write(msg + os.linesep) + return + + for entry in entries: + if entry in package_dict: + del package_dict[entry] + print("[INFO] Remove entry [{entry}] from [{file_path}]".format(file_path = file_path, entry = entry)) + + try: + with open(file_path, "w", encoding = "utf-8", newline = "\n") as f: + json.dump(package_dict, f, indent = 4) + except Exception as e: + msg = "Failed to write '{file_path}' as a JSON file. Exception: {e}".format(file_path = file_path, e = e) + raise IOError(msg) + + +def main() -> None: + parser = argparse.ArgumentParser("mod_bundled_packages_json") + parser.add_argument("-d", "--dir", dest = "work_dir", + help = "The directory to look for bundled packages JSON files, recursively.") + parser.add_argument("entries", metavar = "ENTRIES", type = str, nargs = "+") + + args = parser.parse_args() + + json_file_list = find_json_files(args.work_dir) + for json_file_path in json_file_list: + remove_entries_from_json_file(json_file_path, args.entries) + + +if __name__ == "__main__": + main() diff --git a/cura.desktop.in b/cura.desktop.in index b0195015a5..1e17e30f4e 100644 --- a/cura.desktop.in +++ b/cura.desktop.in @@ -13,6 +13,7 @@ TryExec=@CMAKE_INSTALL_FULL_BINDIR@/cura Icon=cura-icon Terminal=false Type=Application -MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;model/x3d+xml;text/x-gcode; +MimeType=model/stl;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;image/bmp;image/gif;image/jpeg;image/png;text/x-gcode;application/x-amf;application/x-ply;application/x-ctm;model/vnd.collada+xml;model/gltf-binary;model/gltf+json;model/vnd.collada+xml+zip; Categories=Graphics; Keywords=3D;Printing;Slicer; +StartupWMClass=cura.real diff --git a/cura/ApplicationMetadata.py b/cura/ApplicationMetadata.py index 06fdd7a3f0..8da64beead 100644 --- a/cura/ApplicationMetadata.py +++ b/cura/ApplicationMetadata.py @@ -9,7 +9,11 @@ DEFAULT_CURA_DISPLAY_NAME = "Ultimaker Cura" DEFAULT_CURA_VERSION = "master" DEFAULT_CURA_BUILD_TYPE = "" DEFAULT_CURA_DEBUG_MODE = False -DEFAULT_CURA_SDK_VERSION = "6.1.0" + +# Each release has a fixed SDK version coupled with it. It doesn't make sense to make it configurable because, for +# example Cura 3.2 with SDK version 6.1 will not work. So the SDK version is hard-coded here and left out of the +# CuraVersion.py.in template. +CuraSDKVersion = "7.0.0" try: from cura.CuraVersion import CuraAppName # type: ignore @@ -18,13 +22,6 @@ try: except ImportError: CuraAppName = DEFAULT_CURA_APP_NAME -try: - from cura.CuraVersion import CuraAppDisplayName # type: ignore - if CuraAppDisplayName == "": - CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME -except ImportError: - CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME - try: from cura.CuraVersion import CuraVersion # type: ignore if CuraVersion == "": @@ -32,6 +29,9 @@ try: except ImportError: CuraVersion = DEFAULT_CURA_VERSION # [CodeStyle: Reflecting imported value] +# CURA-6569 +# This string indicates what type of version it is. For example, "enterprise". By default it's empty which indicates +# a default/normal Cura build. try: from cura.CuraVersion import CuraBuildType # type: ignore except ImportError: @@ -42,9 +42,17 @@ try: except ImportError: CuraDebugMode = DEFAULT_CURA_DEBUG_MODE +# CURA-6569 +# Various convenience flags indicating what kind of Cura build it is. +__ENTERPRISE_VERSION_TYPE = "enterprise" +IsEnterpriseVersion = CuraBuildType.lower() == __ENTERPRISE_VERSION_TYPE + try: - from cura.CuraVersion import CuraSDKVersion # type: ignore - if CuraSDKVersion == "": - CuraSDKVersion = DEFAULT_CURA_SDK_VERSION + from cura.CuraVersion import CuraAppDisplayName # type: ignore + if CuraAppDisplayName == "": + CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME + if IsEnterpriseVersion: + CuraAppDisplayName = CuraAppDisplayName + " Enterprise" + except ImportError: - CuraSDKVersion = DEFAULT_CURA_SDK_VERSION + CuraAppDisplayName = DEFAULT_CURA_DISPLAY_NAME 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/BuildVolume.py b/cura/BuildVolume.py index 8e74a81842..aba94e8c60 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -1,6 +1,6 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - +from UM.Mesh.MeshData import MeshData from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Settings.ExtruderManager import ExtruderManager from UM.Application import Application #To modify the maximum zoom level. @@ -20,13 +20,19 @@ from UM.Signal import Signal from PyQt5.QtCore import QTimer from UM.View.RenderBatch import RenderBatch from UM.View.GL.OpenGL import OpenGL +from cura.Settings.GlobalStack import GlobalStack + catalog = i18nCatalog("cura") import numpy import math -import copy -from typing import List, Optional +from typing import List, Optional, TYPE_CHECKING, Any, Set, cast, Iterable, Dict + +if TYPE_CHECKING: + from cura.CuraApplication import CuraApplication + from cura.Settings.ExtruderStack import ExtruderStack + from UM.Settings.ContainerStack import ContainerStack # Radius of disallowed area in mm around prime. I.e. how much distance to keep from prime position. PRIME_CLEARANCE = 6.5 @@ -36,45 +42,47 @@ PRIME_CLEARANCE = 6.5 class BuildVolume(SceneNode): raftThicknessChanged = Signal() - def __init__(self, application, parent = None): + def __init__(self, application: "CuraApplication", parent: Optional[SceneNode] = None) -> None: super().__init__(parent) self._application = application self._machine_manager = self._application.getMachineManager() - self._volume_outline_color = None - self._x_axis_color = None - self._y_axis_color = None - self._z_axis_color = None - self._disallowed_area_color = None - self._error_area_color = None + self._volume_outline_color = None # type: Optional[Color] + self._x_axis_color = None # type: Optional[Color] + self._y_axis_color = None # type: Optional[Color] + self._z_axis_color = None # type: Optional[Color] + self._disallowed_area_color = None # type: Optional[Color] + self._error_area_color = None # type: Optional[Color] - self._width = 0 #type: float - self._height = 0 #type: float - self._depth = 0 #type: float - self._shape = "" #type: str + self._width = 0 # type: float + self._height = 0 # type: float + self._depth = 0 # type: float + self._shape = "" # type: str self._shader = None - self._origin_mesh = None + self._origin_mesh = None # type: Optional[MeshData] self._origin_line_length = 20 - self._origin_line_width = 0.5 + self._origin_line_width = 1.5 + self._enabled = False - self._grid_mesh = None + self._grid_mesh = None # type: Optional[MeshData] self._grid_shader = None - self._disallowed_areas = [] - self._disallowed_areas_no_brim = [] - self._disallowed_area_mesh = None + self._disallowed_areas = [] # type: List[Polygon] + self._disallowed_areas_no_brim = [] # type: List[Polygon] + self._disallowed_area_mesh = None # type: Optional[MeshData] + self._disallowed_area_size = 0. - self._error_areas = [] - self._error_mesh = None + self._error_areas = [] # type: List[Polygon] + self._error_mesh = None # type: Optional[MeshData] self.setCalculateBoundingBox(False) - self._volume_aabb = None + self._volume_aabb = None # type: Optional[AxisAlignedBox] self._raft_thickness = 0.0 self._extra_z_clearance = 0.0 - self._adhesion_type = None + self._adhesion_type = None # type: Any self._platform = Platform(self) self._build_volume_message = Message(catalog.i18nc("@info:status", @@ -82,7 +90,7 @@ class BuildVolume(SceneNode): " \"Print Sequence\" setting to prevent the gantry from colliding" " with printed models."), title = catalog.i18nc("@info:title", "Build Volume")) - self._global_container_stack = None + self._global_container_stack = None # type: Optional[GlobalStack] self._stack_change_timer = QTimer() self._stack_change_timer.setInterval(100) @@ -100,7 +108,7 @@ class BuildVolume(SceneNode): self._application.getController().getScene().sceneChanged.connect(self._onSceneChanged) #Objects loaded at the moment. We are connected to the property changed events of these objects. - self._scene_objects = set() + self._scene_objects = set() # type: Set[SceneNode] self._scene_change_timer = QTimer() self._scene_change_timer.setInterval(100) @@ -117,15 +125,11 @@ class BuildVolume(SceneNode): # Therefore this works. self._machine_manager.activeQualityChanged.connect(self._onStackChanged) - # This should also ways work, and it is semantically more correct, - # but it does not update the disallowed areas after material change - self._machine_manager.activeStackChanged.connect(self._onStackChanged) - # Enable and disable extruder self._machine_manager.extruderChanged.connect(self.updateNodeBoundaryCheck) - # list of settings which were updated - self._changed_settings_since_last_rebuild = [] + # List of settings which were updated + self._changed_settings_since_last_rebuild = [] # type: List[str] def _onSceneChanged(self, source): if self._global_container_stack: @@ -193,7 +197,7 @@ class BuildVolume(SceneNode): self._disallowed_areas = areas def render(self, renderer): - if not self.getMeshData(): + if not self.getMeshData() or not self.isVisible(): return True if not self._shader: @@ -219,9 +223,12 @@ 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: @@ -240,11 +247,14 @@ 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. @@ -254,10 +264,11 @@ class BuildVolume(SceneNode): continue # Mark the node as outside build volume if the set extruder is disabled extruder_position = node.callDecoration("getActiveExtruderPosition") - if extruder_position not in self._global_container_stack.extruders: - continue - if not self._global_container_stack.extruders[extruder_position].isEnabled: - node.setOutsideBuildArea(True) + try: + if not self._global_container_stack.extruderList[int(extruder_position)].isEnabled: + node.setOutsideBuildArea(True) + continue + except IndexError: continue node.setOutsideBuildArea(False) @@ -277,8 +288,8 @@ class BuildVolume(SceneNode): child_node.setOutsideBuildArea(group_node.isOutsideBuildArea()) ## Update the outsideBuildArea of a single node, given bounds or current build volume - def checkBoundsAndUpdate(self, node: CuraSceneNode, bounds: Optional[AxisAlignedBox] = None): - if not isinstance(node, CuraSceneNode): + def checkBoundsAndUpdate(self, node: CuraSceneNode, bounds: Optional[AxisAlignedBox] = None) -> None: + if not isinstance(node, CuraSceneNode) or self._global_container_stack is None: return if bounds is None: @@ -298,19 +309,19 @@ class BuildVolume(SceneNode): node.setOutsideBuildArea(True) return - if node.collidesWithArea(self.getDisallowedAreas()): + if node.collidesWithAreas(self.getDisallowedAreas()): node.setOutsideBuildArea(True) return # Mark the node as outside build volume if the set extruder is disabled extruder_position = node.callDecoration("getActiveExtruderPosition") - if not self._global_container_stack.extruders[extruder_position].isEnabled: + if not self._global_container_stack.extruderList[int(extruder_position)].isEnabled: node.setOutsideBuildArea(True) return node.setOutsideBuildArea(False) - def _buildGridMesh(self, min_w, max_w, min_h, max_h, min_d, max_d, z_fight_distance): + 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 @@ -346,7 +357,7 @@ class BuildVolume(SceneNode): mb.setVertexUVCoordinates(n, v[0], v[2] * aspect) return mb.build().getTransformed(scale_matrix) - def _buildMesh(self, min_w, max_w, min_h, max_h, min_d, max_d, z_fight_distance): + 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() @@ -379,7 +390,7 @@ class BuildVolume(SceneNode): mb.addArc(max_w, Vector.Unit_Y, center = (0, max_h, 0), color = self._volume_outline_color) return mb.build().getTransformed(scale_matrix) - def _buildOriginMesh(self, origin): + def _buildOriginMesh(self, origin: Vector) -> MeshData: mb = MeshBuilder() mb.addCube( width=self._origin_line_length, @@ -404,22 +415,80 @@ class BuildVolume(SceneNode): ) return mb.build() + 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): + 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: - 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()) + self._updateColors() min_w = -self._width / 2 max_w = self._width / 2 @@ -442,52 +511,10 @@ class BuildVolume(SceneNode): 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), @@ -499,23 +526,26 @@ class BuildVolume(SceneNode): # This is probably wrong in all other cases. TODO! # The +1 and -1 is added as there is always a bit of extra room required to work properly. scale_to_max_bounds = AxisAlignedBox( - minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + disallowed_area_size - bed_adhesion_size + 1), - maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - disallowed_area_size + bed_adhesion_size - 1) + minimum = Vector(min_w + bed_adhesion_size + 1, min_h, min_d + self._disallowed_area_size - bed_adhesion_size + 1), + maximum = Vector(max_w - bed_adhesion_size - 1, max_h - self._raft_thickness - self._extra_z_clearance, max_d - self._disallowed_area_size + bed_adhesion_size - 1) ) - self._application.getController().getScene()._maximum_bounds = scale_to_max_bounds + self._application.getController().getScene()._maximum_bounds = scale_to_max_bounds # type: ignore self.updateNodeBoundaryCheck() - def getBoundingBox(self) -> AxisAlignedBox: + def getBoundingBox(self): return self._volume_aabb def getRaftThickness(self) -> float: return self._raft_thickness - def _updateRaftThickness(self): + def _updateRaftThickness(self) -> None: + if not self._global_container_stack: + return + old_raft_thickness = self._raft_thickness - if self._global_container_stack.extruders: + if self._global_container_stack.extruderList: # This might be called before the extruder stacks have initialised, in which case getting the adhesion_type fails self._adhesion_type = self._global_container_stack.getProperty("adhesion_type", "value") self._raft_thickness = 0.0 @@ -524,7 +554,7 @@ class BuildVolume(SceneNode): self._global_container_stack.getProperty("raft_base_thickness", "value") + self._global_container_stack.getProperty("raft_interface_thickness", "value") + self._global_container_stack.getProperty("raft_surface_layers", "value") * - self._global_container_stack.getProperty("raft_surface_thickness", "value") + + self._global_container_stack.getProperty("raft_surface_thickness", "value") + self._global_container_stack.getProperty("raft_airgap", "value") - self._global_container_stack.getProperty("layer_0_z_overlap", "value")) @@ -533,28 +563,23 @@ class BuildVolume(SceneNode): self.setPosition(Vector(0, -self._raft_thickness, 0), SceneNode.TransformSpace.World) self.raftThicknessChanged.emit() - def _updateExtraZClearance(self) -> None: + def _calculateExtraZClearance(self, extruders: List["ContainerStack"]) -> float: + if not self._global_container_stack: + return 0 + extra_z = 0.0 - extruders = ExtruderManager.getInstance().getUsedExtruderStacks() - use_extruders = False for extruder in extruders: if extruder.getProperty("retraction_hop_enabled", "value"): retraction_hop = extruder.getProperty("retraction_hop", "value") if extra_z is None or retraction_hop > extra_z: extra_z = retraction_hop - use_extruders = True - if not use_extruders: - # If no extruders, take global value. - if self._global_container_stack.getProperty("retraction_hop_enabled", "value"): - extra_z = self._global_container_stack.getProperty("retraction_hop", "value") - if extra_z != self._extra_z_clearance: - self._extra_z_clearance = extra_z + return extra_z def _onStackChanged(self): self._stack_change_timer.start() ## Update the build volume visualization - def _onStackChangeTimerFinished(self): + def _onStackChangeTimerFinished(self) -> None: if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onSettingPropertyChanged) extruders = ExtruderManager.getInstance().getActiveExtruderStacks() @@ -585,7 +610,7 @@ class BuildVolume(SceneNode): self._updateDisallowedAreas() self._updateRaftThickness() - self._updateExtraZClearance() + self._extra_z_clearance = self._calculateExtraZClearance(ExtruderManager.getInstance().getUsedExtruderStacks()) if self._engine_ready: self.rebuild() @@ -594,20 +619,23 @@ class BuildVolume(SceneNode): if camera: diagonal = self.getDiagonalSize() if diagonal > 1: - camera.setZoomRange(min = 0.1, max = diagonal * 5) #You can zoom out up to 5 times the diagonal. This gives some space around the volume. + # You can zoom out up to 5 times the diagonal. This gives some space around the volume. + camera.setZoomRange(min = 0.1, max = diagonal * 5) # type: ignore - def _onEngineCreated(self): + def _onEngineCreated(self) -> None: self._engine_ready = True self.rebuild() - def _onSettingChangeTimerFinished(self): + def _onSettingChangeTimerFinished(self) -> None: + if not self._global_container_stack: + return + rebuild_me = False update_disallowed_areas = False update_raft_thickness = False update_extra_z_clearance = True for setting_key in self._changed_settings_since_last_rebuild: - if setting_key == "print_sequence": machine_height = self._global_container_stack.getProperty("machine_height", "value") if self._application.getGlobalContainerStack().getProperty("print_sequence", "value") == "one_at_a_time" and len(self._scene_objects) > 1: @@ -620,33 +648,26 @@ class BuildVolume(SceneNode): self._height = self._global_container_stack.getProperty("machine_height", "value") self._build_volume_message.hide() update_disallowed_areas = True - rebuild_me = True # sometimes the machine size or shape settings are adjusted on the active machine, we should reflect this if setting_key in self._machine_settings: - self._height = self._global_container_stack.getProperty("machine_height", "value") - self._width = self._global_container_stack.getProperty("machine_width", "value") - self._depth = self._global_container_stack.getProperty("machine_depth", "value") - self._shape = self._global_container_stack.getProperty("machine_shape", "value") + self._updateMachineSizeProperties() update_extra_z_clearance = True update_disallowed_areas = True - rebuild_me = True - if setting_key in self._skirt_settings + self._prime_settings + self._tower_settings + self._ooze_shield_settings + self._distance_settings + self._extruder_settings: + if setting_key in self._disallowed_area_settings: update_disallowed_areas = True - rebuild_me = True if setting_key in self._raft_settings: update_raft_thickness = True - rebuild_me = True if setting_key in self._extra_z_settings: update_extra_z_clearance = True - rebuild_me = True if setting_key in self._limit_to_extruder_settings: update_disallowed_areas = True - rebuild_me = True + + rebuild_me = update_extra_z_clearance or update_disallowed_areas or update_raft_thickness # We only want to update all of them once. if update_disallowed_areas: @@ -656,7 +677,7 @@ class BuildVolume(SceneNode): self._updateRaftThickness() if update_extra_z_clearance: - self._updateExtraZClearance() + self._extra_z_clearance = self._calculateExtraZClearance(ExtruderManager.getInstance().getUsedExtruderStacks()) if rebuild_me: self.rebuild() @@ -664,7 +685,7 @@ class BuildVolume(SceneNode): # We just did a rebuild, reset the list. self._changed_settings_since_last_rebuild = [] - def _onSettingPropertyChanged(self, setting_key: str, property_name: str): + def _onSettingPropertyChanged(self, setting_key: str, property_name: str) -> None: if property_name != "value": return @@ -675,6 +696,14 @@ class BuildVolume(SceneNode): def hasErrors(self) -> bool: return self._has_errors + def _updateMachineSizeProperties(self) -> None: + if not self._global_container_stack: + return + self._height = self._global_container_stack.getProperty("machine_height", "value") + self._width = self._global_container_stack.getProperty("machine_width", "value") + self._depth = self._global_container_stack.getProperty("machine_depth", "value") + self._shape = self._global_container_stack.getProperty("machine_shape", "value") + ## Calls _updateDisallowedAreas and makes sure the changes appear in the # scene. # @@ -686,57 +715,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]) @@ -744,33 +742,28 @@ class BuildVolume(SceneNode): for area in nozzle_disallowed_areas: polygon = Polygon(numpy.array(area, numpy.float32)) polygon_disallowed_border = polygon.getMinkowskiHull(Polygon.approximatedCircle(disallowed_border_size)) - result_areas[extruder_id].append(polygon_disallowed_border) #Don't perform the offset on these. - #polygon_minimal_border = polygon.getMinkowskiHull(5) - result_areas_no_brim[extruder_id].append(polygon) # no brim + result_areas[extruder_id].append(polygon_disallowed_border) # Don't perform the offset on these. + result_areas_no_brim[extruder_id].append(polygon) # No brim # Add prime tower location as disallowed area. - if len(used_extruders) > 1: #No prime tower in single-extrusion. - - if len([x for x in used_extruders if x.isEnabled]) > 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 @@ -791,11 +784,14 @@ class BuildVolume(SceneNode): # where that extruder may not print. def _computeDisallowedAreasPrinted(self, used_extruders): result = {} + adhesion_extruder = None #type: ExtruderStack for extruder in used_extruders: + if int(extruder.getProperty("extruder_nr", "value")) == int(self._global_container_stack.getProperty("adhesion_extruder_nr", "value")): + adhesion_extruder = extruder result[extruder.getId()] = [] - #Currently, the only normally printed object is the prime tower. - if ExtruderManager.getInstance().getResolveOrValue("prime_tower_enable"): + # Currently, the only normally printed object is the prime tower. + if self._global_container_stack.getProperty("prime_tower_enable", "value"): prime_tower_size = self._global_container_stack.getProperty("prime_tower_size", "value") machine_width = self._global_container_stack.getProperty("machine_width", "value") machine_depth = self._global_container_stack.getProperty("machine_depth", "value") @@ -805,27 +801,19 @@ class BuildVolume(SceneNode): prime_tower_x = prime_tower_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left. prime_tower_y = prime_tower_y + machine_depth / 2 - if (ExtruderManager.getInstance().getResolveOrValue("prime_tower_brim_enable") and - ExtruderManager.getInstance().getResolveOrValue("adhesion_type") != "raft"): + if adhesion_extruder is not None and self._global_container_stack.getProperty("prime_tower_brim_enable", "value") and self._global_container_stack.getProperty("adhesion_type", "value") != "raft": brim_size = ( - extruder.getProperty("brim_line_count", "value") * - extruder.getProperty("skirt_brim_line_width", "value") / 100.0 * - extruder.getProperty("initial_layer_line_width_factor", "value") + adhesion_extruder.getProperty("brim_line_count", "value") * + adhesion_extruder.getProperty("skirt_brim_line_width", "value") / 100.0 * + adhesion_extruder.getProperty("initial_layer_line_width_factor", "value") ) prime_tower_x -= brim_size prime_tower_y += brim_size - if self._global_container_stack.getProperty("prime_tower_circular", "value"): - radius = prime_tower_size / 2 - prime_tower_area = Polygon.approximatedCircle(radius) - prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - radius) - else: - prime_tower_area = Polygon([ - [prime_tower_x - prime_tower_size, prime_tower_y - prime_tower_size], - [prime_tower_x, prime_tower_y - prime_tower_size], - [prime_tower_x, prime_tower_y], - [prime_tower_x - prime_tower_size, prime_tower_y], - ]) + radius = prime_tower_size / 2 + prime_tower_area = Polygon.approximatedCircle(radius) + prime_tower_area = prime_tower_area.translate(prime_tower_x - radius, prime_tower_y - radius) + prime_tower_area = prime_tower_area.getMinkowskiHull(Polygon.approximatedCircle(0)) for extruder in used_extruders: result[extruder.getId()].append(prime_tower_area) #The prime tower location is the same for each extruder, regardless of offset. @@ -843,9 +831,10 @@ class BuildVolume(SceneNode): # \param used_extruders The extruder stacks to generate disallowed areas # for. # \return A dictionary with for each used extruder ID the prime areas. - def _computeDisallowedAreasPrimeBlob(self, border_size, used_extruders): - result = {} - + def _computeDisallowedAreasPrimeBlob(self, border_size: float, used_extruders: List["ExtruderStack"]) -> Dict[str, List[Polygon]]: + result = {} # type: Dict[str, List[Polygon]] + if not self._global_container_stack: + return result machine_width = self._global_container_stack.getProperty("machine_width", "value") machine_depth = self._global_container_stack.getProperty("machine_depth", "value") for extruder in used_extruders: @@ -853,13 +842,13 @@ class BuildVolume(SceneNode): prime_x = extruder.getProperty("extruder_prime_pos_x", "value") prime_y = -extruder.getProperty("extruder_prime_pos_y", "value") - #Ignore extruder prime position if it is not set or if blob is disabled + # Ignore extruder prime position if it is not set or if blob is disabled if (prime_x == 0 and prime_y == 0) or not prime_blob_enabled: result[extruder.getId()] = [] continue if not self._global_container_stack.getProperty("machine_center_is_zero", "value"): - prime_x = prime_x - machine_width / 2 #Offset by half machine_width and _depth to put the origin in the front-left. + prime_x = prime_x - machine_width / 2 # Offset by half machine_width and _depth to put the origin in the front-left. prime_y = prime_y + machine_depth / 2 prime_polygon = Polygon.approximatedCircle(PRIME_CLEARANCE) @@ -882,9 +871,12 @@ class BuildVolume(SceneNode): # for. # \return A dictionary with for each used extruder ID the disallowed areas # where that extruder may not print. - def _computeDisallowedAreasStatic(self, border_size, used_extruders): - #Convert disallowed areas to polygons and dilate them. + def _computeDisallowedAreasStatic(self, border_size:float, used_extruders: List["ExtruderStack"]) -> Dict[str, List[Polygon]]: + # Convert disallowed areas to polygons and dilate them. machine_disallowed_polygons = [] + if self._global_container_stack is None: + return {} + for area in self._global_container_stack.getProperty("machine_disallowed_areas", "value"): polygon = Polygon(numpy.array(area, numpy.float32)) polygon = polygon.getMinkowskiHull(Polygon.approximatedCircle(border_size)) @@ -895,7 +887,7 @@ class BuildVolume(SceneNode): nozzle_offsetting_for_disallowed_areas = self._global_container_stack.getMetaDataEntry( "nozzle_offsetting_for_disallowed_areas", True) - result = {} + result = {} # type: Dict[str, List[Polygon]] for extruder in used_extruders: extruder_id = extruder.getId() offset_x = extruder.getProperty("machine_nozzle_offset_x", "value") @@ -904,13 +896,13 @@ class BuildVolume(SceneNode): offset_y = extruder.getProperty("machine_nozzle_offset_y", "value") if offset_y is None: offset_y = 0 - offset_y = -offset_y #Y direction of g-code is the inverse of Y direction of Cura's scene space. + offset_y = -offset_y # Y direction of g-code is the inverse of Y direction of Cura's scene space. result[extruder_id] = [] for polygon in machine_disallowed_polygons: - result[extruder_id].append(polygon.translate(offset_x, offset_y)) #Compensate for the nozzle offset of this extruder. + result[extruder_id].append(polygon.translate(offset_x, offset_y)) # Compensate for the nozzle offset of this extruder. - #Add the border around the edge of the build volume. + # Add the border around the edge of the build volume. left_unreachable_border = 0 right_unreachable_border = 0 top_unreachable_border = 0 @@ -918,7 +910,8 @@ class BuildVolume(SceneNode): # Only do nozzle offsetting if needed if nozzle_offsetting_for_disallowed_areas: - #The build volume is defined as the union of the area that all extruders can reach, so we need to know the relative offset to all extruders. + # The build volume is defined as the union of the area that all extruders can reach, so we need to know + # the relative offset to all extruders. for other_extruder in ExtruderManager.getInstance().getActiveExtruderStacks(): other_offset_x = other_extruder.getProperty("machine_nozzle_offset_x", "value") if other_offset_x is None: @@ -1002,8 +995,8 @@ class BuildVolume(SceneNode): [ half_machine_width - border_size, 0] ], numpy.float32))) result[extruder_id].append(Polygon(numpy.array([ - [ half_machine_width,-half_machine_depth], - [-half_machine_width,-half_machine_depth], + [ half_machine_width, -half_machine_depth], + [-half_machine_width, -half_machine_depth], [ 0, -half_machine_depth + border_size] ], numpy.float32))) @@ -1015,36 +1008,24 @@ class BuildVolume(SceneNode): # stack. # # \return A sequence of setting values, one for each extruder. - def _getSettingFromAllExtruders(self, setting_key): + def _getSettingFromAllExtruders(self, setting_key: str) -> List[Any]: all_values = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, "value") all_types = ExtruderManager.getInstance().getAllExtruderSettings(setting_key, "type") - for i in range(len(all_values)): - if not all_values[i] and (all_types[i] == "int" or all_types[i] == "float"): + for i, (setting_value, setting_type) in enumerate(zip(all_values, all_types)): + if not setting_value and (setting_type == "int" or setting_type == "float"): all_values[i] = 0 return all_values - ## Calculate the disallowed radius around the edge. - # - # This disallowed radius is to allow for space around the models that is - # not part of the collision radius, such as bed adhesion (skirt/brim/raft) - # and travel avoid distance. - def getEdgeDisallowedSize(self): - if not self._global_container_stack or not self._global_container_stack.extruders: - return 0 + def _calculateBedAdhesionSize(self, used_extruders): + if self._global_container_stack is None: + return container_stack = self._global_container_stack - used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() - - # If we are printing one at a time, we need to add the bed adhesion size to the disallowed areas of the objects - if container_stack.getProperty("print_sequence", "value") == "one_at_a_time": - return 0.1 # Return a very small value, so we do draw disallowed area's near the edges. - adhesion_type = container_stack.getProperty("adhesion_type", "value") skirt_brim_line_width = self._global_container_stack.getProperty("skirt_brim_line_width", "value") initial_layer_line_width_factor = self._global_container_stack.getProperty("initial_layer_line_width_factor", "value") - #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"): + # 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 @@ -1053,11 +1034,12 @@ class BuildVolume(SceneNode): # We don't create an additional line for the extruder we're printing the brim with. bed_adhesion_size -= skirt_brim_line_width * initial_layer_line_width_factor / 100.0 - elif adhesion_type == "skirt": #No brim? Also not on prime tower? Then use whatever the adhesion type is saying: Skirt, raft or none. + 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 + 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 @@ -1066,10 +1048,8 @@ class BuildVolume(SceneNode): 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?") @@ -1078,26 +1058,56 @@ class BuildVolume(SceneNode): self._global_container_stack.getProperty("machine_depth", "value") ) bed_adhesion_size = min(bed_adhesion_size, max_length_available) + return bed_adhesion_size + def _calculateFarthestShieldDistance(self, container_stack): + farthest_shield_distance = 0 + if container_stack.getProperty("draft_shield_enabled", "value"): + farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("draft_shield_dist", "value")) + if container_stack.getProperty("ooze_shield_enabled", "value"): + farthest_shield_distance = max(farthest_shield_distance,container_stack.getProperty("ooze_shield_dist", "value")) + return farthest_shield_distance + + def _calculateSupportExpansion(self, container_stack): support_expansion = 0 support_enabled = self._global_container_stack.getProperty("support_enable", "value") support_offset = self._global_container_stack.getProperty("support_offset", "value") if support_enabled and support_offset: support_expansion += support_offset + return support_expansion - farthest_shield_distance = 0 - if container_stack.getProperty("draft_shield_enabled", "value"): - farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("draft_shield_dist", "value")) - if container_stack.getProperty("ooze_shield_enabled", "value"): - farthest_shield_distance = max(farthest_shield_distance, container_stack.getProperty("ooze_shield_dist", "value")) - + def _calculateMoveFromWallRadius(self, used_extruders): move_from_wall_radius = 0 # Moves that start from outer wall. - move_from_wall_radius = max(move_from_wall_radius, max(self._getSettingFromAllExtruders("infill_wipe_dist"))) - avoid_enabled_per_extruder = [stack.getProperty("travel_avoid_other_parts","value") for stack in used_extruders] + all_values = [move_from_wall_radius] + all_values.extend(self._getSettingFromAllExtruders("infill_wipe_dist")) + move_from_wall_radius = max(all_values) + avoid_enabled_per_extruder = [stack.getProperty("travel_avoid_other_parts", "value") for stack in used_extruders] travel_avoid_distance_per_extruder = [stack.getProperty("travel_avoid_distance", "value") for stack in used_extruders] - for avoid_other_parts_enabled, avoid_distance in zip(avoid_enabled_per_extruder, travel_avoid_distance_per_extruder): #For each extruder (or just global). + for avoid_other_parts_enabled, avoid_distance in zip(avoid_enabled_per_extruder, travel_avoid_distance_per_extruder): # For each extruder (or just global). if avoid_other_parts_enabled: move_from_wall_radius = max(move_from_wall_radius, avoid_distance) + return move_from_wall_radius + + ## Calculate the disallowed radius around the edge. + # + # This disallowed radius is to allow for space around the models that is + # not part of the collision radius, such as bed adhesion (skirt/brim/raft) + # and travel avoid distance. + def getEdgeDisallowedSize(self): + if not self._global_container_stack or not self._global_container_stack.extruderList: + return 0 + + container_stack = self._global_container_stack + used_extruders = ExtruderManager.getInstance().getUsedExtruderStacks() + + # If we are printing one at a time, we need to add the bed adhesion size to the disallowed areas of the objects + if container_stack.getProperty("print_sequence", "value") == "one_at_a_time": + return 0.1 + + bed_adhesion_size = self._calculateBedAdhesionSize(used_extruders) + support_expansion = self._calculateSupportExpansion(self._global_container_stack) + farthest_shield_distance = self._calculateFarthestShieldDistance(self._global_container_stack) + move_from_wall_radius = self._calculateMoveFromWallRadius(used_extruders) # Now combine our different pieces of data to get the final border size. # Support expansion is added to the bed adhesion, since the bed adhesion goes around support. @@ -1113,8 +1123,9 @@ class BuildVolume(SceneNode): _raft_settings = ["adhesion_type", "raft_base_thickness", "raft_interface_thickness", "raft_surface_layers", "raft_surface_thickness", "raft_airgap", "layer_0_z_overlap"] _extra_z_settings = ["retraction_hop_enabled", "retraction_hop"] _prime_settings = ["extruder_prime_pos_x", "extruder_prime_pos_y", "extruder_prime_pos_z", "prime_blob_enable"] - _tower_settings = ["prime_tower_enable", "prime_tower_circular", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"] + _tower_settings = ["prime_tower_enable", "prime_tower_size", "prime_tower_position_x", "prime_tower_position_y", "prime_tower_brim_enable"] _ooze_shield_settings = ["ooze_shield_enabled", "ooze_shield_dist"] _distance_settings = ["infill_wipe_dist", "travel_avoid_distance", "support_offset", "support_enable", "travel_avoid_other_parts", "travel_avoid_supports"] _extruder_settings = ["support_enable", "support_bottom_enable", "support_roof_enable", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "brim_line_count", "adhesion_extruder_nr", "adhesion_type"] #Settings that can affect which extruders are used. _limit_to_extruder_settings = ["wall_extruder_nr", "wall_0_extruder_nr", "wall_x_extruder_nr", "top_bottom_extruder_nr", "infill_extruder_nr", "support_infill_extruder_nr", "support_extruder_nr_layer_0", "support_bottom_extruder_nr", "support_roof_extruder_nr", "adhesion_extruder_nr"] + _disallowed_area_settings = _skirt_settings + _prime_settings + _tower_settings + _ooze_shield_settings + _distance_settings + _extruder_settings diff --git a/cura/CrashHandler.py b/cura/CrashHandler.py index 6e6da99b0f..1ec00787d7 100644 --- a/cura/CrashHandler.py +++ b/cura/CrashHandler.py @@ -12,9 +12,10 @@ import json import ssl import urllib.request import urllib.error -import shutil -from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, Qt, QUrl +import certifi + +from PyQt5.QtCore import QT_VERSION_STR, PYQT_VERSION_STR, QUrl from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, QTextEdit, QGroupBox, QCheckBox, QPushButton from PyQt5.QtGui import QDesktopServices @@ -22,9 +23,10 @@ from UM.Application import Application from UM.Logger import Logger from UM.View.GL.OpenGL import OpenGL from UM.i18n import i18nCatalog -from UM.Platform import Platform from UM.Resources import Resources +from cura import ApplicationMetadata + catalog = i18nCatalog("cura") MYPY = False @@ -181,6 +183,7 @@ class CrashHandler: self.cura_version = catalog.i18nc("@label unknown version of Cura", "Unknown") crash_info = "" + catalog.i18nc("@label Cura version number", "Cura version") + ": " + str(self.cura_version) + "
" + crash_info += "" + catalog.i18nc("@label Cura build type", "Cura build type") + ": " + str(ApplicationMetadata.CuraBuildType) + "
" crash_info += "" + catalog.i18nc("@label Type of platform", "Platform") + ": " + str(platform.platform()) + "
" crash_info += "" + catalog.i18nc("@label", "Qt version") + ": " + str(QT_VERSION_STR) + "
" crash_info += "" + catalog.i18nc("@label", "PyQt version") + ": " + str(PYQT_VERSION_STR) + "
" @@ -191,6 +194,7 @@ class CrashHandler: group.setLayout(layout) self.data["cura_version"] = self.cura_version + self.data["cura_build_type"] = ApplicationMetadata.CuraBuildType self.data["os"] = {"type": platform.system(), "version": platform.version()} self.data["qt_version"] = QT_VERSION_STR self.data["pyqt_version"] = PYQT_VERSION_STR @@ -352,11 +356,13 @@ class CrashHandler: # Convert data to bytes binary_data = json.dumps(self.data).encode("utf-8") + # CURA-6698 Create an SSL context and use certifi CA certificates for verification. + context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLSv1_2) + context.load_verify_locations(cafile = certifi.where()) # Submit data - kwoptions = {"data": binary_data, "timeout": 5} - - if Platform.isOSX(): - kwoptions["context"] = ssl._create_unverified_context() + kwoptions = {"data": binary_data, + "timeout": 5, + "context": context} Logger.log("i", "Sending crash report info to [%s]...", self.crash_url) if not self.has_started: diff --git a/cura/CuraActions.py b/cura/CuraActions.py index 91e0966fed..b92abbe706 100644 --- a/cura/CuraActions.py +++ b/cura/CuraActions.py @@ -3,15 +3,17 @@ from PyQt5.QtCore import QObject, QUrl from PyQt5.QtGui import QDesktopServices -from typing import List, TYPE_CHECKING, cast +from typing import List, Optional, cast from UM.Event import CallFunctionEvent from UM.FlameProfiler import pyqtSlot +from UM.Math.Quaternion import Quaternion from UM.Math.Vector import Vector from UM.Scene.Selection import Selection from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Operations.GroupedOperation import GroupedOperation from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation +from UM.Operations.RotateOperation import RotateOperation from UM.Operations.TranslateOperation import TranslateOperation import cura.CuraApplication @@ -23,9 +25,8 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura.Operations.SetBuildPlateNumberOperation import SetBuildPlateNumberOperation from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode -if TYPE_CHECKING: - from UM.Scene.SceneNode import SceneNode class CuraActions(QObject): def __init__(self, parent: QObject = None) -> None: diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 58fc9fc394..93f7fa97ff 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -15,7 +15,7 @@ from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType, qm from UM.i18n import i18nCatalog from UM.Application import Application -from UM.Decorators import override +from UM.Decorators import override, deprecated from UM.FlameProfiler import pyqtSlot from UM.Logger import Logger from UM.Message import Message @@ -23,7 +23,6 @@ from UM.Platform import Platform from UM.PluginError import PluginNotFoundError 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. @@ -47,7 +46,6 @@ 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 @@ -69,11 +67,10 @@ from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.ConvexHullDecorator import ConvexHullDecorator from cura.Scene.CuraSceneController import CuraSceneController from cura.Scene.CuraSceneNode import CuraSceneNode + 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 @@ -84,6 +81,7 @@ from cura.Machines.Models.FirstStartMachineActionsModel import FirstStartMachine from cura.Machines.Models.GenericMaterialsModel import GenericMaterialsModel from cura.Machines.Models.GlobalStacksModel import GlobalStacksModel from cura.Machines.Models.MaterialBrandsModel import MaterialBrandsModel +from cura.Machines.Models.MaterialManagementModel import MaterialManagementModel from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel from cura.Machines.Models.NozzleModel import NozzleModel from cura.Machines.Models.QualityManagementModel import QualityManagementModel @@ -91,6 +89,8 @@ from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfile from cura.Machines.Models.QualitySettingsModel import QualitySettingsModel from cura.Machines.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel from cura.Machines.Models.UserChangesModel import UserChangesModel +from cura.Machines.Models.IntentModel import IntentModel +from cura.Machines.Models.IntentCategoryModel import IntentCategoryModel from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage @@ -100,8 +100,10 @@ from cura.Settings.ContainerManager import ContainerManager from cura.Settings.CuraContainerRegistry import CuraContainerRegistry from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.MachineManager import MachineManager from cura.Settings.MachineNameValidator import MachineNameValidator +from cura.Settings.IntentManager import IntentManager from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler from cura.Settings.SettingInheritanceManager import SettingInheritanceManager from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel @@ -129,13 +131,10 @@ from . import CuraActions from . import PrintJobPreviewImageProvider from cura import ApplicationMetadata, UltimakerCloudAuthentication +from cura.Settings.GlobalStack import GlobalStack if TYPE_CHECKING: - from cura.Machines.MaterialManager import MaterialManager - from cura.Machines.QualityManager import QualityManager from UM.Settings.EmptyInstanceContainer import EmptyInstanceContainer - from cura.Settings.GlobalStack import GlobalStack - numpy.seterr(all = "ignore") @@ -144,7 +143,7 @@ class CuraApplication(QtApplication): # SettingVersion represents the set of settings available in the machine/extruder definitions. # You need to make sure that this version number needs to be increased if there is any non-backwards-compatible # changes of the settings. - SettingVersion = 7 + SettingVersion = 11 Created = False @@ -160,6 +159,7 @@ class CuraApplication(QtApplication): ExtruderStack = Resources.UserType + 9 DefinitionChangesContainer = Resources.UserType + 10 SettingVisibilityPreset = Resources.UserType + 11 + IntentInstanceContainer = Resources.UserType + 12 Q_ENUMS(ResourceTypes) @@ -168,7 +168,7 @@ class CuraApplication(QtApplication): app_display_name = ApplicationMetadata.CuraAppDisplayName, version = ApplicationMetadata.CuraVersion, api_version = ApplicationMetadata.CuraSDKVersion, - buildtype = ApplicationMetadata.CuraBuildType, + build_type = ApplicationMetadata.CuraBuildType, is_debug_mode = ApplicationMetadata.CuraDebugMode, tray_icon_name = "cura-icon-32.png", **kwargs) @@ -196,13 +196,12 @@ class CuraApplication(QtApplication): self.empty_container = None # type: EmptyInstanceContainer self.empty_definition_changes_container = None # type: EmptyInstanceContainer self.empty_variant_container = None # type: EmptyInstanceContainer + self.empty_intent_container = None # type: EmptyInstanceContainer self.empty_material_container = None # type: EmptyInstanceContainer self.empty_quality_container = None # type: EmptyInstanceContainer self.empty_quality_changes_container = None # type: EmptyInstanceContainer - self._variant_manager = None self._material_manager = None - self._quality_manager = None self._machine_manager = None self._extruder_manager = None self._container_manager = None @@ -219,9 +218,11 @@ class CuraApplication(QtApplication): self._machine_error_checker = None self._machine_settings_manager = MachineSettingsManager(self, parent = self) + self._material_management_model = None + self._quality_management_model = None self._discovered_printer_model = DiscoveredPrintersModel(self, parent = self) - self._first_start_machine_actions_model = FirstStartMachineActionsModel(self, parent = self) + self._first_start_machine_actions_model = None self._welcome_pages_model = WelcomePagesModel(self, parent = self) self._add_printer_pages_model = AddPrinterPagesModel(self, parent = self) self._whats_new_pages_model = WhatsNewPagesModel(self, parent = self) @@ -345,7 +346,7 @@ class CuraApplication(QtApplication): # Adds expected directory names and search paths for Resources. def __addExpectedResourceDirsAndSearchPaths(self): # this list of dir names will be used by UM to detect an old cura directory - for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "quality_changes", "user", "variants"]: + for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "quality_changes", "user", "variants", "intent"]: Resources.addExpectedDirNameInData(dir_name) Resources.addSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources")) @@ -403,6 +404,7 @@ class CuraApplication(QtApplication): Resources.addStorageType(self.ResourceTypes.MachineStack, "machine_instances") Resources.addStorageType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") Resources.addStorageType(self.ResourceTypes.SettingVisibilityPreset, "setting_visibility") + Resources.addStorageType(self.ResourceTypes.IntentInstanceContainer, "intent") self._container_registry.addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality") self._container_registry.addResourceType(self.ResourceTypes.QualityChangesInstanceContainer, "quality_changes") @@ -412,6 +414,7 @@ class CuraApplication(QtApplication): self._container_registry.addResourceType(self.ResourceTypes.ExtruderStack, "extruder_train") self._container_registry.addResourceType(self.ResourceTypes.MachineStack, "machine") self._container_registry.addResourceType(self.ResourceTypes.DefinitionChangesContainer, "definition_changes") + self._container_registry.addResourceType(self.ResourceTypes.IntentInstanceContainer, "intent") Resources.addType(self.ResourceTypes.QmlFiles, "qml") Resources.addType(self.ResourceTypes.Firmware, "firmware") @@ -421,7 +424,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) @@ -430,6 +433,9 @@ class CuraApplication(QtApplication): self._container_registry.addContainer(cura.Settings.cura_empty_instance_containers.empty_variant_container) self.empty_variant_container = cura.Settings.cura_empty_instance_containers.empty_variant_container + self._container_registry.addContainer(cura.Settings.cura_empty_instance_containers.empty_intent_container) + self.empty_intent_container = cura.Settings.cura_empty_instance_containers.empty_intent_container + self._container_registry.addContainer(cura.Settings.cura_empty_instance_containers.empty_material_container) self.empty_material_container = cura.Settings.cura_empty_instance_containers.empty_material_container @@ -444,14 +450,15 @@ class CuraApplication(QtApplication): def __setLatestResouceVersionsForVersionUpgrade(self): self._version_upgrade_manager.setCurrentVersions( { - ("quality", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), - ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityChangesInstanceContainer, "application/x-uranium-instancecontainer"), - ("machine_stack", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), - ("extruder_train", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), - ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), - ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer"), - ("definition_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.DefinitionChangesContainer, "application/x-uranium-instancecontainer"), - ("variant", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.VariantInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityChangesInstanceContainer, "application/x-uranium-instancecontainer"), + ("intent", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.IntentInstanceContainer, "application/x-uranium-instancecontainer"), + ("machine_stack", GlobalStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), + ("extruder_train", ExtruderStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), + ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), + ("user", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.UserInstanceContainer, "application/x-uranium-instancecontainer"), + ("definition_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.DefinitionChangesContainer, "application/x-uranium-instancecontainer"), + ("variant", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.VariantInstanceContainer, "application/x-uranium-instancecontainer"), } ) @@ -503,10 +510,13 @@ class CuraApplication(QtApplication): self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Loading machines...")) + self._container_registry.allMetadataLoaded.connect(ContainerRegistry.getInstance) + with self._container_registry.lockFile(): self._container_registry.loadAllMetadata() - # set the setting version for Preferences + self.showSplashMessage(self._i18n_catalog.i18nc("@info:progress", "Setting up preferences...")) + # Set the setting version for Preferences preferences = self.getPreferences() preferences.addPreference("metadata/setting_version", 0) preferences.setValue("metadata/setting_version", self.SettingVersion) #Don't make it equal to the default so that the setting version always gets written to the file. @@ -631,9 +641,17 @@ class CuraApplication(QtApplication): ## A reusable dialogbox # - showMessageBox = pyqtSignal(str, str, str, str, int, int, arguments = ["title", "text", "informativeText", "detailedText", "buttons", "icon"]) + showMessageBox = pyqtSignal(str,str, str, str, int, int, + arguments = ["title", "text", "informativeText", "detailedText","buttons", "icon"]) - def messageBox(self, title, text, informativeText = "", detailedText = "", buttons = QMessageBox.Ok, icon = QMessageBox.NoIcon, callback = None, callback_arguments = []): + def messageBox(self, title, text, + informativeText = "", + detailedText = "", + buttons = QMessageBox.Ok, + icon = QMessageBox.NoIcon, + callback = None, + callback_arguments = [] + ): self._message_box_callback = callback self._message_box_callback_arguments = callback_arguments self.showMessageBox.emit(title, text, informativeText, detailedText, buttons, icon) @@ -659,14 +677,14 @@ class CuraApplication(QtApplication): def discardOrKeepProfileChangesClosed(self, option: str) -> None: global_stack = self.getGlobalContainerStack() if option == "discard": - for extruder in global_stack.extruders.values(): + for extruder in global_stack.extruderList: extruder.userChanges.clear() global_stack.userChanges.clear() # if the user decided to keep settings then the user settings should be re-calculated and validated for errors # before slicing. To ensure that slicer uses right settings values elif option == "keep": - for extruder in global_stack.extruders.values(): + for extruder in global_stack.extruderList: extruder.userChanges.update() global_stack.userChanges.update() @@ -700,6 +718,8 @@ class CuraApplication(QtApplication): ## Handle loading of all plugin types (and the backend explicitly) # \sa PluginRegistry def _loadPlugins(self) -> None: + self._plugin_registry.setCheckIfTrusted(ApplicationMetadata.IsEnterpriseVersion) + self._plugin_registry.addType("profile_reader", self._addProfileReader) self._plugin_registry.addType("profile_writer", self._addProfileWriter) @@ -723,21 +743,6 @@ class CuraApplication(QtApplication): def run(self): super().run() - container_registry = self._container_registry - - Logger.log("i", "Initializing variant manager") - self._variant_manager = VariantManager(container_registry) - self._variant_manager.initialize() - - Logger.log("i", "Initializing material manager") - from cura.Machines.MaterialManager import MaterialManager - self._material_manager = MaterialManager(container_registry, parent = self) - self._material_manager.initialize() - - Logger.log("i", "Initializing quality manager") - from cura.Machines.QualityManager import QualityManager - self._quality_manager = QualityManager(self, parent = self) - self._quality_manager.initialize() Logger.log("i", "Initializing machine manager") self._machine_manager = MachineManager(self, parent = self) @@ -839,7 +844,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") @@ -874,6 +878,10 @@ class CuraApplication(QtApplication): @pyqtSlot(result = QObject) def getFirstStartMachineActionsModel(self, *args) -> "FirstStartMachineActionsModel": + if self._first_start_machine_actions_model is None: + self._first_start_machine_actions_model = FirstStartMachineActionsModel(self, parent = self) + if self.started: + self._first_start_machine_actions_model.initialize() return self._first_start_machine_actions_model @pyqtSlot(result = QObject) @@ -918,16 +926,8 @@ class CuraApplication(QtApplication): self._extruder_manager = ExtruderManager() return self._extruder_manager - def getVariantManager(self, *args) -> VariantManager: - return self._variant_manager - - @pyqtSlot(result = QObject) - def getMaterialManager(self, *args) -> "MaterialManager": - return self._material_manager - - @pyqtSlot(result = QObject) - def getQualityManager(self, *args) -> "QualityManager": - return self._quality_manager + def getIntentManager(self, *args) -> IntentManager: + return IntentManager.getInstance() def getObjectsModel(self, *args): if self._object_manager is None: @@ -975,6 +975,18 @@ class CuraApplication(QtApplication): def getMachineActionManager(self, *args): return self._machine_action_manager + @pyqtSlot(result = QObject) + def getMaterialManagementModel(self) -> MaterialManagementModel: + if not self._material_management_model: + self._material_management_model = MaterialManagementModel(parent = self) + return self._material_management_model + + @pyqtSlot(result = QObject) + def getQualityManagementModel(self) -> QualityManagementModel: + if not self._quality_management_model: + self._quality_management_model = QualityManagementModel(parent = self) + return self._quality_management_model + def getSimpleModeSettingsManager(self, *args): if self._simple_mode_settings_manager is None: self._simple_mode_settings_manager = SimpleModeSettingsManager() @@ -1028,6 +1040,7 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(CuraSceneController, "Cura", 1, 0, "SceneController", self.getCuraSceneController) qmlRegisterSingletonType(ExtruderManager, "Cura", 1, 0, "ExtruderManager", self.getExtruderManager) qmlRegisterSingletonType(MachineManager, "Cura", 1, 0, "MachineManager", self.getMachineManager) + qmlRegisterSingletonType(IntentManager, "Cura", 1, 6, "IntentManager", self.getIntentManager) qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, "SettingInheritanceManager", self.getSettingInheritanceManager) qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 0, "SimpleModeSettingsManager", self.getSimpleModeSettingsManager) qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, "MachineActionManager", self.getMachineActionManager) @@ -1052,7 +1065,8 @@ class CuraApplication(QtApplication): qmlRegisterType(FavoriteMaterialsModel, "Cura", 1, 0, "FavoriteMaterialsModel") qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel") qmlRegisterType(MaterialBrandsModel, "Cura", 1, 0, "MaterialBrandsModel") - qmlRegisterType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel") + qmlRegisterSingletonType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel", self.getQualityManagementModel) + qmlRegisterSingletonType(MaterialManagementModel, "Cura", 1, 5, "MaterialManagementModel", self.getMaterialManagementModel) qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel") @@ -1061,6 +1075,8 @@ class CuraApplication(QtApplication): qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0, "CustomQualityProfilesDropDownMenuModel", self.getCustomQualityProfilesDropDownMenuModel) qmlRegisterType(NozzleModel, "Cura", 1, 0, "NozzleModel") + qmlRegisterType(IntentModel, "Cura", 1, 6, "IntentModel") + qmlRegisterType(IntentCategoryModel, "Cura", 1, 6, "IntentCategoryModel") qmlRegisterType(MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler") qmlRegisterType(SettingVisibilityPresetsModel, "Cura", 1, 0, "SettingVisibilityPresetsModel") @@ -1263,7 +1279,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 @@ -1290,7 +1306,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 @@ -1328,7 +1344,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 @@ -1336,21 +1358,29 @@ class CuraApplication(QtApplication): nodes.append(node) + # We can open only one gcode file at the same time. If the current view has a gcode file open, just reopen it + # for reloading. + if gcode_filename: + self._openFile(gcode_filename) + if not nodes: return for node in nodes: - file_name = node.getMeshData().getFileName() - if file_name: - job = ReadMeshJob(file_name) - job._node = node # type: ignore - job.finished.connect(self._reloadMeshFinished) - if has_merged_nodes: - job.finished.connect(self.updateOriginOfMergedMeshes) + mesh_data = node.getMeshData() - job.start() - else: - Logger.log("w", "Unable to reload data because we don't have a filename.") + if mesh_data: + file_name = mesh_data.getFileName() + if file_name: + job = ReadMeshJob(file_name) + job._node = node # type: ignore + job.finished.connect(self._reloadMeshFinished) + if has_merged_nodes: + job.finished.connect(self.updateOriginOfMergedMeshes) + + job.start() + else: + Logger.log("w", "Unable to reload data because we don't have a filename.") @pyqtSlot("QStringList") def setExpandedCategories(self, categories: List[str]) -> None: @@ -1581,8 +1611,12 @@ class CuraApplication(QtApplication): openProjectFile = pyqtSignal(QUrl, arguments = ["project_file"]) # Emitted when a project file is about to open. - @pyqtSlot(QUrl, bool) - def readLocalFile(self, file, skip_project_file_check = False): + @pyqtSlot(QUrl, str) + @pyqtSlot(QUrl) + ## Open a local file + # \param project_mode How to handle project files. Either None(default): Follow user preference, "open_as_model" or + # "open_as_project". This parameter is only considered if the file is a project file. + def readLocalFile(self, file: QUrl, project_mode: Optional[str] = None): if not file.isValid(): return @@ -1593,10 +1627,24 @@ class CuraApplication(QtApplication): self.deleteAll() break - if not skip_project_file_check and self.checkIsValidProjectFile(file): + is_project_file = self.checkIsValidProjectFile(file) + + if project_mode is None: + project_mode = self.getPreferences().getValue("cura/choice_on_open_project") + + if is_project_file and project_mode == "open_as_project": + # open as project immediately without presenting a dialog + workspace_handler = self.getWorkspaceFileHandler() + workspace_handler.readLocalFile(file) + return + + if is_project_file and project_mode == "always_ask": + # present a dialog asking to open as project or import models self.callLater(self.openProjectFile.emit, file) return + # Either the file is a model file or we want to load only models from project. Continue to load models. + if self.getPreferences().getValue("cura/select_models_on_load"): Selection.clear() @@ -1657,7 +1705,7 @@ class CuraApplication(QtApplication): arranger = Arrange.create(x = machine_width, y = machine_depth, fixed_nodes = fixed_nodes) min_offset = 8 default_extruder_position = self.getMachineManager().defaultExtruderPosition - default_extruder_id = self._global_container_stack.extruders[default_extruder_position].getId() + default_extruder_id = self._global_container_stack.extruderList[int(default_extruder_position)].getId() select_models_on_load = self.getPreferences().getValue("cura/select_models_on_load") @@ -1751,7 +1799,7 @@ class CuraApplication(QtApplication): try: result = workspace_reader.preRead(file_path, show_dialog=False) return result == WorkspaceReader.PreReadResult.accepted - except Exception as e: + except Exception: Logger.logException("e", "Could not check file %s", file_url) return False @@ -1810,3 +1858,44 @@ class CuraApplication(QtApplication): return main_window.height() else: return 0 + + @pyqtSlot() + def deleteAll(self, only_selectable: bool = True) -> None: + super().deleteAll(only_selectable = only_selectable) + + # Also remove nodes with LayerData + self._removeNodesWithLayerData(only_selectable = only_selectable) + + def _removeNodesWithLayerData(self, only_selectable: bool = True) -> None: + Logger.log("i", "Clearing scene") + nodes = [] + for node in DepthFirstIterator(self.getController().getScene().getRoot()): + if not isinstance(node, SceneNode): + continue + if not node.isEnabled(): + continue + if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"): + continue # Node that doesnt have a mesh and is not a group. + if only_selectable and not node.isSelectable(): + continue # Only remove nodes that are selectable. + if not node.callDecoration("isSliceable") and not node.callDecoration("getLayerData") and not node.callDecoration("isGroup"): + continue # Grouped nodes don't need resetting as their parent (the group) is resetted) + nodes.append(node) + if nodes: + from UM.Operations.GroupedOperation import GroupedOperation + op = GroupedOperation() + + for node in nodes: + from UM.Operations.RemoveSceneNodeOperation import RemoveSceneNodeOperation + op.addOperation(RemoveSceneNodeOperation(node)) + + # Reset the print information + self.getController().getScene().sceneChanged.emit(node) + + op.push() + from UM.Scene.Selection import Selection + Selection.clear() + + @classmethod + def getInstance(cls, *args, **kwargs) -> "CuraApplication": + return cast(CuraApplication, super().getInstance(**kwargs)) diff --git a/cura/CuraVersion.py.in b/cura/CuraVersion.py.in index 1a500df248..4583e76f67 100644 --- a/cura/CuraVersion.py.in +++ b/cura/CuraVersion.py.in @@ -6,7 +6,6 @@ CuraAppDisplayName = "@CURA_APP_DISPLAY_NAME@" CuraVersion = "@CURA_VERSION@" CuraBuildType = "@CURA_BUILDTYPE@" CuraDebugMode = True if "@_cura_debugmode@" == "ON" else False -CuraSDKVersion = "@CURA_SDK_VERSION@" CuraCloudAPIRoot = "@CURA_CLOUD_API_ROOT@" CuraCloudAPIVersion = "@CURA_CLOUD_API_VERSION@" CuraCloudAccountAPIRoot = "@CURA_CLOUD_ACCOUNT_API_ROOT@" diff --git a/cura/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 ddf1450664..0d6489aaa2 100644 --- a/cura/LayerPolygon.py +++ b/cura/LayerPolygon.py @@ -1,7 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from UM.Application import Application +from UM.Qt.QtApplication import QtApplication from typing import Any, Optional import numpy @@ -61,19 +61,19 @@ class LayerPolygon: # When type is used as index returns true if type == LayerPolygon.InfillType or type == LayerPolygon.SkinType or type == LayerPolygon.SupportInfillType # Should be generated in better way, not hardcoded. - self._isInfillOrSkinTypeMap = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1], dtype=numpy.bool) + self._isInfillOrSkinTypeMap = numpy.array([0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0], dtype = numpy.bool) self._build_cache_line_mesh_mask = None # type: Optional[numpy.ndarray] self._build_cache_needed_points = None # type: Optional[numpy.ndarray] def buildCache(self) -> None: # For the line mesh we do not draw Infill or Jumps. Therefore those lines are filtered out. - self._build_cache_line_mesh_mask = numpy.ones(self._jump_mask.shape, dtype=bool) + self._build_cache_line_mesh_mask = numpy.ones(self._jump_mask.shape, dtype = bool) mesh_line_count = numpy.sum(self._build_cache_line_mesh_mask) self._index_begin = 0 self._index_end = mesh_line_count - self._build_cache_needed_points = numpy.ones((len(self._types), 2), dtype=numpy.bool) + self._build_cache_needed_points = numpy.ones((len(self._types), 2), dtype = numpy.bool) # Only if the type of line segment changes do we need to add an extra vertex to change colors self._build_cache_needed_points[1:, 0][:, numpy.newaxis] = self._types[1:] != self._types[:-1] # Mark points as unneeded if they are of types we don't want in the line mesh according to the calculated mask @@ -136,9 +136,9 @@ class LayerPolygon: self._index_begin += index_offset self._index_end += index_offset - indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype=numpy.int32).reshape((-1, 1)) + indices[self._index_begin:self._index_end, :] = numpy.arange(self._index_end-self._index_begin, dtype = numpy.int32).reshape((-1, 1)) # When the line type changes the index needs to be increased by 2. - indices[self._index_begin:self._index_end, :] += numpy.cumsum(needed_points_list[line_mesh_mask.ravel(), 0], dtype=numpy.int32).reshape((-1, 1)) + indices[self._index_begin:self._index_end, :] += numpy.cumsum(needed_points_list[line_mesh_mask.ravel(), 0], dtype = numpy.int32).reshape((-1, 1)) # Each line segment goes from it's starting point p to p+1, offset by the vertex index. # The -1 is to compensate for the neccecarily True value of needed_points_list[0,0] which causes an unwanted +1 in cumsum above. indices[self._index_begin:self._index_end, :] += numpy.array([self._vertex_begin - 1, self._vertex_begin]) @@ -232,7 +232,7 @@ class LayerPolygon: @classmethod def getColorMap(cls): if cls.__color_map is None: - theme = Application.getInstance().getTheme() + theme = QtApplication.getInstance().getTheme() cls.__color_map = numpy.array([ theme.getColor("layerview_none").getRgbF(), # NoneType theme.getColor("layerview_inset_0").getRgbF(), # Inset0Type diff --git a/cura/Machines/ContainerNode.py b/cura/Machines/ContainerNode.py index eef1c63127..a8bbf0a537 100644 --- a/cura/Machines/ContainerNode.py +++ b/cura/Machines/ContainerNode.py @@ -1,64 +1,64 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Any, Dict, Union, TYPE_CHECKING - -from collections import OrderedDict +from typing import Any, Dict, Optional from UM.ConfigurationErrorMessage import ConfigurationErrorMessage +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Logger import Logger from UM.Settings.InstanceContainer import InstanceContainer -## -# A metadata / container combination. Use getContainer() to get the container corresponding to the metadata. -# -# ContainerNode is a multi-purpose class. It has two main purposes: -# 1. It encapsulates an InstanceContainer. It contains that InstanceContainer's -# - metadata (Always) -# - container (lazy-loaded when needed) -# 2. It also serves as a node in a hierarchical InstanceContainer lookup table/tree. -# This is used in Variant, Material, and Quality Managers. +## A node in the container tree. It represents one container. # +# The container it represents is referenced by its container_id. During normal +# use of the tree, this container is not constructed. Only when parts of the +# tree need to get loaded in the container stack should it get constructed. class ContainerNode: - __slots__ = ("_metadata", "_container", "children_map") + ## Creates a new node for the container tree. + # \param container_id The ID of the container that this node should + # represent. + def __init__(self, container_id: str) -> None: + self.container_id = container_id + self._container = None # type: Optional[InstanceContainer] + self.children_map = {} # type: Dict[str, ContainerNode] # Mapping from container ID to container node. - def __init__(self, metadata: Optional[Dict[str, Any]] = None) -> None: - self._metadata = metadata - self._container = None # type: Optional[InstanceContainer] - self.children_map = OrderedDict() # type: ignore # This is because it's children are supposed to override it. + ## Gets the metadata of the container that this node represents. + # Getting the metadata from the container directly is about 10x as fast. + # \return The metadata of the container in this node. + def getMetadata(self): + return ContainerRegistry.getInstance().findContainersMetadata(id = self.container_id)[0] - ## Get an entry value from the metadata + ## Get an entry from the metadata of the container that this node contains. + # + # This is just a convenience function. + # \param entry The metadata entry key to return. + # \param default If the metadata is not present or the container is not + # found, the value of this default is returned. + # \return The value of the metadata entry, or the default if it was not + # present. def getMetaDataEntry(self, entry: str, default: Any = None) -> Any: - if self._metadata is None: + container_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = self.container_id) + if len(container_metadata) == 0: return default - return self._metadata.get(entry, default) + return container_metadata[0].get(entry, default) - def getMetadata(self) -> Dict[str, Any]: - if self._metadata is None: - return {} - return self._metadata - - def getChildNode(self, child_key: str) -> Optional["ContainerNode"]: - return self.children_map.get(child_key) - - def getContainer(self) -> Optional["InstanceContainer"]: - if self._metadata is None: - Logger.log("e", "Cannot get container for a ContainerNode without metadata.") - return None - - if self._container is None: - container_id = self._metadata["id"] - from UM.Settings.ContainerRegistry import ContainerRegistry - container_list = ContainerRegistry.getInstance().findInstanceContainers(id = container_id) - if not container_list: - Logger.log("e", "Failed to lazy-load container [{container_id}]. Cannot find it.".format(container_id = container_id)) + ## The container that this node's container ID refers to. + # + # This can be used to finally instantiate the container in order to put it + # in the container stack. + # \return A container. + @property + def container(self) -> Optional[InstanceContainer]: + if not self._container: + container_list = ContainerRegistry.getInstance().findInstanceContainers(id = self.container_id) + if len(container_list) == 0: + Logger.log("e", "Failed to lazy-load container [{container_id}]. Cannot find it.".format(container_id = self.container_id)) error_message = ConfigurationErrorMessage.getInstance() - error_message.addFaultyContainers(container_id) + error_message.addFaultyContainers(self.container_id) return None self._container = container_list[0] - return self._container def __str__(self) -> str: - return "%s[%s]" % (self.__class__.__name__, self.getMetaDataEntry("id")) + return "%s[%s]" % (self.__class__.__name__, self.container_id) \ No newline at end of file diff --git a/cura/Machines/ContainerTree.py b/cura/Machines/ContainerTree.py new file mode 100644 index 0000000000..c2bfabea2c --- /dev/null +++ b/cura/Machines/ContainerTree.py @@ -0,0 +1,158 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from UM.Job import Job # For our background task of loading MachineNodes lazily. +from UM.JobQueue import JobQueue # For our background task of loading MachineNodes lazily. +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry # To listen to containers being added. +from UM.Signal import Signal +import cura.CuraApplication # Imported like this to prevent circular dependencies. +from cura.Machines.MachineNode import MachineNode +from cura.Settings.GlobalStack import GlobalStack # To listen only to global stacks being added. + +from typing import Dict, List, Optional, TYPE_CHECKING +import time + +if TYPE_CHECKING: + from cura.Machines.QualityGroup import QualityGroup + from cura.Machines.QualityChangesGroup import QualityChangesGroup + from UM.Settings.ContainerStack import ContainerStack + + +## This class contains a look-up tree for which containers are available at +# which stages of configuration. +# +# The tree starts at the machine definitions. For every distinct definition +# there will be one machine node here. +# +# All of the fallbacks for material choices, quality choices, etc. should be +# encoded in this tree. There must always be at least one child node (for +# nodes that have children) but that child node may be a node representing the +# empty instance container. +class ContainerTree: + __instance = None + + @classmethod + def getInstance(cls): + if cls.__instance is None: + cls.__instance = ContainerTree() + return cls.__instance + + def __init__(self) -> None: + self.machines = self._MachineNodeMap() # Mapping from definition ID to machine nodes with lazy loading. + self.materialsChanged = Signal() # Emitted when any of the material nodes in the tree got changed. + cura.CuraApplication.CuraApplication.getInstance().initializationFinished.connect(self._onStartupFinished) # Start the background task to load more machine nodes after start-up is completed. + + ## Get the quality groups available for the currently activated printer. + # + # This contains all quality groups, enabled or disabled. To check whether + # the quality group can be activated, test for the + # ``QualityGroup.is_available`` property. + # \return For every quality type, one quality group. + def getCurrentQualityGroups(self) -> Dict[str, "QualityGroup"]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return {} + variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] + material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] + extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] + return self.machines[global_stack.definition.getId()].getQualityGroups(variant_names, material_bases, extruder_enabled) + + ## Get the quality changes groups available for the currently activated + # printer. + # + # This contains all quality changes groups, enabled or disabled. To check + # whether the quality changes group can be activated, test for the + # ``QualityChangesGroup.is_available`` property. + # \return A list of all quality changes groups. + def getCurrentQualityChangesGroups(self) -> List["QualityChangesGroup"]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return [] + variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] + material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] + extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] + return self.machines[global_stack.definition.getId()].getQualityChangesGroups(variant_names, material_bases, extruder_enabled) + + ## Ran after completely starting up the application. + def _onStartupFinished(self): + currently_added = ContainerRegistry.getInstance().findContainerStacks() # Find all currently added global stacks. + JobQueue.getInstance().add(self._MachineNodeLoadJob(self, currently_added)) + + ## Dictionary-like object that contains the machines. + # + # This handles the lazy loading of MachineNodes. + class _MachineNodeMap: + def __init__(self) -> None: + self._machines = {} # type: Dict[str, MachineNode] + + ## Returns whether a printer with a certain definition ID exists. This + # is regardless of whether or not the printer is loaded yet. + # \param definition_id The definition to look for. + # \return Whether or not a printer definition exists with that name. + def __contains__(self, definition_id: str) -> bool: + return len(ContainerRegistry.getInstance().findContainersMetadata(id = definition_id)) > 0 + + ## Returns a machine node for the specified definition ID. + # + # If the machine node wasn't loaded yet, this will load it lazily. + # \param definition_id The definition to look for. + # \return A machine node for that definition. + def __getitem__(self, definition_id: str) -> MachineNode: + if definition_id not in self._machines: + start_time = time.time() + self._machines[definition_id] = MachineNode(definition_id) + self._machines[definition_id].materialsChanged.connect(ContainerTree.getInstance().materialsChanged) + Logger.log("d", "Adding container tree for {definition_id} took {duration} seconds.".format(definition_id = definition_id, duration = time.time() - start_time)) + return self._machines[definition_id] + + ## Gets a machine node for the specified definition ID, with default. + # + # The default is returned if there is no definition with the specified + # ID. If the machine node wasn't loaded yet, this will load it lazily. + # \param definition_id The definition to look for. + # \param default The machine node to return if there is no machine + # with that definition (can be ``None`` optionally or if not + # provided). + # \return A machine node for that definition, or the default if there + # is no definition with the provided definition_id. + def get(self, definition_id: str, default: Optional[MachineNode] = None) -> Optional[MachineNode]: + if definition_id not in self: + return default + return self[definition_id] + + ## Returns whether we've already cached this definition's node. + # \param definition_id The definition that we may have cached. + # \return ``True`` if it's cached. + def is_loaded(self, definition_id: str) -> bool: + return definition_id in self._machines + + ## Pre-loads all currently added printers as a background task so that + # switching printers in the interface is faster. + class _MachineNodeLoadJob(Job): + ## Creates a new background task. + # \param tree_root The container tree instance. This cannot be + # obtained through the singleton static function since the instance + # may not yet be constructed completely. + # \param container_stacks All of the stacks to pre-load the container + # trees for. This needs to be provided from here because the stacks + # need to be constructed on the main thread because they are QObject. + def __init__(self, tree_root: "ContainerTree", container_stacks: List["ContainerStack"]): + self.tree_root = tree_root + self.container_stacks = container_stacks + super().__init__() + + ## Starts the background task. + # + # The ``JobQueue`` will schedule this on a different thread. + def run(self) -> None: + for stack in self.container_stacks: # Load all currently-added containers. + if not isinstance(stack, GlobalStack): + continue + # Allow a thread switch after every container. + # Experimentally, sleep(0) didn't allow switching. sleep(0.1) or sleep(0.2) neither. + # We're in no hurry though. Half a second is fine. + time.sleep(0.5) + definition_id = stack.definition.getId() + if not self.tree_root.machines.is_loaded(definition_id): + _ = self.tree_root.machines[definition_id] diff --git a/cura/Machines/IntentNode.py b/cura/Machines/IntentNode.py new file mode 100644 index 0000000000..2b3a596f81 --- /dev/null +++ b/cura/Machines/IntentNode.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import TYPE_CHECKING + +from UM.Settings.ContainerRegistry import ContainerRegistry + +from cura.Machines.ContainerNode import ContainerNode + +if TYPE_CHECKING: + from cura.Machines.QualityNode import QualityNode + + +## This class represents an intent profile in the container tree. +# +# This class has no more subnodes. +class IntentNode(ContainerNode): + def __init__(self, container_id: str, quality: "QualityNode") -> None: + super().__init__(container_id) + self.quality = quality + self.intent_category = ContainerRegistry.getInstance().findContainersMetadata(id = container_id)[0].get("intent_category", "default") diff --git a/cura/Machines/MachineErrorChecker.py b/cura/Machines/MachineErrorChecker.py index 857f0bc1c4..4c6ed891b1 100644 --- a/cura/Machines/MachineErrorChecker.py +++ b/cura/Machines/MachineErrorChecker.py @@ -58,7 +58,6 @@ class MachineErrorChecker(QObject): # Whenever the machine settings get changed, we schedule an error check. self._machine_manager.globalContainerChanged.connect(self.startErrorCheck) - self._machine_manager.globalValueChanged.connect(self.startErrorCheck) self._onMachineChanged() @@ -67,7 +66,7 @@ class MachineErrorChecker(QObject): self._global_stack.propertyChanged.disconnect(self.startErrorCheckPropertyChanged) self._global_stack.containersChanged.disconnect(self.startErrorCheck) - for extruder in self._global_stack.extruders.values(): + for extruder in self._global_stack.extruderList: extruder.propertyChanged.disconnect(self.startErrorCheckPropertyChanged) extruder.containersChanged.disconnect(self.startErrorCheck) @@ -77,7 +76,7 @@ class MachineErrorChecker(QObject): self._global_stack.propertyChanged.connect(self.startErrorCheckPropertyChanged) self._global_stack.containersChanged.connect(self.startErrorCheck) - for extruder in self._global_stack.extruders.values(): + for extruder in self._global_stack.extruderList: extruder.propertyChanged.connect(self.startErrorCheckPropertyChanged) extruder.containersChanged.connect(self.startErrorCheck) @@ -127,7 +126,7 @@ class MachineErrorChecker(QObject): # Populate the (stack, key) tuples to check self._stacks_and_keys_to_check = deque() - for stack in [global_stack] + list(global_stack.extruders.values()): + for stack in global_stack.extruderList: for key in stack.getAllKeys(): self._stacks_and_keys_to_check.append((stack, key)) diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py new file mode 100644 index 0000000000..cee71160d2 --- /dev/null +++ b/cura/Machines/MachineNode.py @@ -0,0 +1,184 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Dict, List + +from UM.Logger import Logger +from UM.Signal import Signal +from UM.Util import parseBool +from UM.Settings.ContainerRegistry import ContainerRegistry # To find all the variants for this machine. + +import cura.CuraApplication # Imported like this to prevent circular dependencies. +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.QualityChangesGroup import QualityChangesGroup # To construct groups of quality changes profiles that belong together. +from cura.Machines.QualityGroup import QualityGroup # To construct groups of quality profiles that belong together. +from cura.Machines.QualityNode import QualityNode +from cura.Machines.VariantNode import VariantNode +import UM.FlameProfiler + + +## This class represents a machine in the container tree. +# +# The subnodes of these nodes are variants. +class MachineNode(ContainerNode): + def __init__(self, container_id: str) -> None: + super().__init__(container_id) + self.variants = {} # type: Dict[str, VariantNode] # Mapping variant names to their nodes. + self.global_qualities = {} # type: Dict[str, QualityNode] # Mapping quality types to the global quality for those types. + self.materialsChanged = Signal() # Emitted when one of the materials underneath this machine has been changed. + + container_registry = ContainerRegistry.getInstance() + try: + my_metadata = container_registry.findContainersMetadata(id = container_id)[0] + except IndexError: + Logger.log("Unable to find metadata for container %s", container_id) + my_metadata = {} + # Some of the metadata is cached upon construction here. + # ONLY DO THAT FOR METADATA THAT DOESN'T CHANGE DURING RUNTIME! + # Otherwise you need to keep it up-to-date during runtime. + self.has_materials = parseBool(my_metadata.get("has_materials", "true")) + self.has_variants = parseBool(my_metadata.get("has_variants", "false")) + self.has_machine_quality = parseBool(my_metadata.get("has_machine_quality", "false")) + self.quality_definition = my_metadata.get("quality_definition", container_id) if self.has_machine_quality else "fdmprinter" + self.exclude_materials = my_metadata.get("exclude_materials", []) + self.preferred_variant_name = my_metadata.get("preferred_variant_name", "") + self.preferred_material = my_metadata.get("preferred_material", "") + self.preferred_quality_type = my_metadata.get("preferred_quality_type", "") + + self._loadAll() + + ## Get the available quality groups for this machine. + # + # This returns all quality groups, regardless of whether they are + # available to the combination of extruders or not. On the resulting + # quality groups, the is_available property is set to indicate whether the + # quality group can be selected according to the combination of extruders + # in the parameters. + # \param variant_names The names of the variants loaded in each extruder. + # \param material_bases The base file names of the materials loaded in + # each extruder. + # \param extruder_enabled Whether or not the extruders are enabled. This + # allows the function to set the is_available properly. + # \return For each available quality type, a QualityGroup instance. + def getQualityGroups(self, variant_names: List[str], material_bases: List[str], extruder_enabled: List[bool]) -> Dict[str, QualityGroup]: + if len(variant_names) != len(material_bases) or len(variant_names) != len(extruder_enabled): + Logger.log("e", "The number of extruders in the list of variants (" + str(len(variant_names)) + ") is not equal to the number of extruders in the list of materials (" + str(len(material_bases)) + ") or the list of enabled extruders (" + str(len(extruder_enabled)) + ").") + return {} + # For each extruder, find which quality profiles are available. Later we'll intersect the quality types. + qualities_per_type_per_extruder = [{}] * len(variant_names) # type: List[Dict[str, QualityNode]] + for extruder_nr, variant_name in enumerate(variant_names): + if not extruder_enabled[extruder_nr]: + continue # No qualities are available in this extruder. It'll get skipped when calculating the available quality types. + material_base = material_bases[extruder_nr] + if variant_name not in self.variants or material_base not in self.variants[variant_name].materials: + # The printer has no variant/material-specific quality profiles. Use the global quality profiles. + qualities_per_type_per_extruder[extruder_nr] = self.global_qualities + else: + # Use the actually specialised quality profiles. + qualities_per_type_per_extruder[extruder_nr] = {node.quality_type: node for node in self.variants[variant_name].materials[material_base].qualities.values()} + + # Create the quality group for each available type. + quality_groups = {} + for quality_type, global_quality_node in self.global_qualities.items(): + if not global_quality_node.container: + Logger.log("w", "Node {0} doesn't have a container.".format(global_quality_node.container_id)) + continue + quality_groups[quality_type] = QualityGroup(name = global_quality_node.getMetaDataEntry("name", "Unnamed profile"), quality_type = quality_type) + quality_groups[quality_type].node_for_global = global_quality_node + for extruder_position, qualities_per_type in enumerate(qualities_per_type_per_extruder): + if quality_type in qualities_per_type: + quality_groups[quality_type].setExtruderNode(extruder_position, qualities_per_type[quality_type]) + + available_quality_types = set(quality_groups.keys()) + for extruder_nr, qualities_per_type in enumerate(qualities_per_type_per_extruder): + if not extruder_enabled[extruder_nr]: + continue + available_quality_types.intersection_update(qualities_per_type.keys()) + for quality_type in available_quality_types: + quality_groups[quality_type].is_available = True + return quality_groups + + ## Returns all of the quality changes groups available to this printer. + # + # The quality changes groups store which quality type and intent category + # they were made for, but not which material and nozzle. Instead for the + # quality type and intent category, the quality changes will always be + # available but change the quality type and intent category when + # activated. + # + # The quality changes group does depend on the printer: Which quality + # definition is used. + # + # The quality changes groups that are available do depend on the quality + # types that are available, so it must still be known which extruders are + # enabled and which materials and variants are loaded in them. This allows + # setting the correct is_available flag. + # \param variant_names The names of the variants loaded in each extruder. + # \param material_bases The base file names of the materials loaded in + # each extruder. + # \param extruder_enabled For each extruder whether or not they are + # enabled. + # \return List of all quality changes groups for the printer. + def getQualityChangesGroups(self, variant_names: List[str], material_bases: List[str], extruder_enabled: List[bool]) -> List[QualityChangesGroup]: + machine_quality_changes = ContainerRegistry.getInstance().findContainersMetadata(type = "quality_changes", definition = self.quality_definition) # All quality changes for each extruder. + + groups_by_name = {} #type: Dict[str, QualityChangesGroup] # Group quality changes profiles by their display name. The display name must be unique for quality changes. This finds profiles that belong together in a group. + for quality_changes in machine_quality_changes: + name = quality_changes["name"] + if name not in groups_by_name: + # CURA-6599 + # For some reason, QML will get null or fail to convert type for MachineManager.activeQualityChangesGroup() to + # a QObject. Setting the object ownership to QQmlEngine.CppOwnership doesn't work, but setting the object + # parent to application seems to work. + from cura.CuraApplication import CuraApplication + groups_by_name[name] = QualityChangesGroup(name, quality_type = quality_changes["quality_type"], + intent_category = quality_changes.get("intent_category", "default"), + parent = CuraApplication.getInstance()) + # CURA-6882 + # Custom qualities are always available, even if they are based on the "not supported" profile. + groups_by_name[name].is_available = True + elif groups_by_name[name].intent_category == "default": # Intent category should be stored as "default" if everything is default or as the intent if any of the extruder have an actual intent. + groups_by_name[name].intent_category = quality_changes.get("intent_category", "default") + + if quality_changes.get("position") is not None and quality_changes.get("position") != "None": # An extruder profile. + groups_by_name[name].metadata_per_extruder[int(quality_changes["position"])] = quality_changes + else: # Global profile. + groups_by_name[name].metadata_for_global = quality_changes + + return list(groups_by_name.values()) + + ## Gets the preferred global quality node, going by the preferred quality + # type. + # + # If the preferred global quality is not in there, an arbitrary global + # quality is taken. + # If there are no global qualities, an empty quality is returned. + def preferredGlobalQuality(self) -> "QualityNode": + return self.global_qualities.get(self.preferred_quality_type, next(iter(self.global_qualities.values()))) + + ## (Re)loads all variants under this printer. + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() + if not self.has_variants: + self.variants["empty"] = VariantNode("empty_variant", machine = self) + self.variants["empty"].materialsChanged.connect(self.materialsChanged) + else: + # Find all the variants for this definition ID. + variants = container_registry.findInstanceContainersMetadata(type = "variant", definition = self.container_id, hardware_type = "nozzle") + for variant in variants: + variant_name = variant["name"] + if variant_name not in self.variants: + self.variants[variant_name] = VariantNode(variant["id"], machine = self) + self.variants[variant_name].materialsChanged.connect(self.materialsChanged) + if not self.variants: + self.variants["empty"] = VariantNode("empty_variant", machine = self) + + # Find the global qualities for this printer. + global_qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.quality_definition, global_quality = "True") # First try specific to this printer. + if len(global_qualities) == 0: # This printer doesn't override the global qualities. + global_qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter", global_quality = "True") # Otherwise pick the global global qualities. + if len(global_qualities) == 0: # There are no global qualities either?! Something went very wrong, but we'll not crash and properly fill the tree. + global_qualities = [cura.CuraApplication.CuraApplication.getInstance().empty_quality_container.getMetaData()] + for global_quality in global_qualities: + self.global_qualities[global_quality["quality_type"]] = QualityNode(global_quality["id"], parent = self) diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py deleted file mode 100644 index 2163cde623..0000000000 --- a/cura/Machines/MaterialManager.py +++ /dev/null @@ -1,723 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import defaultdict, OrderedDict -import copy -import uuid -from typing import Dict, Optional, TYPE_CHECKING, Any, Set, List, cast, Tuple - -from PyQt5.Qt import QTimer, QObject, pyqtSignal, pyqtSlot - -from UM.Application import Application -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Settings.SettingFunction import SettingFunction -from UM.Util import parseBool - -from .MaterialNode import MaterialNode -from .MaterialGroup import MaterialGroup -from .VariantType import VariantType - -if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer - from UM.Settings.InstanceContainer import InstanceContainer - from cura.Settings.GlobalStack import GlobalStack - from cura.Settings.ExtruderStack import ExtruderStack - - -# -# MaterialManager maintains a number of maps and trees for material lookup. -# The models GUI and QML use are now only dependent on the MaterialManager. That means as long as the data in -# MaterialManager gets updated correctly, the GUI models should be updated correctly too, and the same goes for GUI. -# -# For now, updating the lookup maps and trees here is very simple: we discard the old data completely and recreate them -# again. This means the update is exactly the same as initialization. There are performance concerns about this approach -# but so far the creation of the tables and maps is very fast and there is no noticeable slowness, we keep it like this -# because it's simple. -# -class MaterialManager(QObject): - - materialsUpdated = pyqtSignal() # Emitted whenever the material lookup tables are updated. - favoritesUpdated = pyqtSignal() # Emitted whenever the favorites are changed - - def __init__(self, container_registry, parent = None): - super().__init__(parent) - self._application = Application.getInstance() - self._container_registry = container_registry # type: ContainerRegistry - - # Material_type -> generic material metadata - self._fallback_materials_map = dict() # type: Dict[str, Dict[str, Any]] - - # Root_material_id -> MaterialGroup - self._material_group_map = dict() # type: Dict[str, MaterialGroup] - - # Approximate diameter str - self._diameter_machine_nozzle_buildplate_material_map = dict() # type: Dict[str, Dict[str, MaterialNode]] - - # We're using these two maps to convert between the specific diameter material id and the generic material id - # because the generic material ids are used in qualities and definitions, while the specific diameter material is meant - # i.e. generic_pla -> generic_pla_175 - # root_material_id -> approximate diameter str -> root_material_id for that diameter - self._material_diameter_map = defaultdict(dict) # type: Dict[str, Dict[str, str]] - - # Material id including diameter (generic_pla_175) -> material root id (generic_pla) - self._diameter_material_map = dict() # type: Dict[str, str] - - # This is used in Legacy UM3 send material function and the material management page. - # GUID -> a list of material_groups - self._guid_material_groups_map = defaultdict(list) # type: Dict[str, List[MaterialGroup]] - - # The machine definition ID for the non-machine-specific materials. - # This is used as the last fallback option if the given machine-specific material(s) cannot be found. - self._default_machine_definition_id = "fdmprinter" - self._default_approximate_diameter_for_quality_search = "3" - - # When a material gets added/imported, there can be more than one InstanceContainers. In those cases, we don't - # want to react on every container/metadata changed signal. The timer here is to buffer it a bit so we don't - # react too many time. - self._update_timer = QTimer(self) - self._update_timer.setInterval(300) - self._update_timer.setSingleShot(True) - self._update_timer.timeout.connect(self._updateMaps) - - self._container_registry.containerMetaDataChanged.connect(self._onContainerMetadataChanged) - self._container_registry.containerAdded.connect(self._onContainerMetadataChanged) - self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged) - - self._favorites = set() # type: Set[str] - - def initialize(self) -> None: - # Find all materials and put them in a matrix for quick search. - material_metadatas = {metadata["id"]: metadata for metadata in - self._container_registry.findContainersMetadata(type = "material") if - metadata.get("GUID")} # type: Dict[str, Dict[str, Any]] - - self._material_group_map = dict() # type: Dict[str, MaterialGroup] - - # Map #1 - # root_material_id -> MaterialGroup - for material_id, material_metadata in material_metadatas.items(): - # We don't store empty material in the lookup tables - if material_id == "empty_material": - continue - - root_material_id = material_metadata.get("base_file", "") - if root_material_id not in 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) - group = self._material_group_map[root_material_id] - - # Store this material in the group of the appropriate root material. - if material_id != root_material_id: - new_node = MaterialNode(material_metadata) - group.derived_material_node_list.append(new_node) - - # Order this map alphabetically so it's easier to navigate in a debugger - self._material_group_map = OrderedDict(sorted(self._material_group_map.items(), key = lambda x: x[0])) - - # Map #1.5 - # GUID -> material group list - self._guid_material_groups_map = defaultdict(list) # type: Dict[str, List[MaterialGroup]] - for root_material_id, material_group in self._material_group_map.items(): - guid = material_group.root_material_node.getMetaDataEntry("GUID", "") - self._guid_material_groups_map[guid].append(material_group) - - # Map #2 - # Lookup table for material type -> fallback material metadata, only for read-only materials - grouped_by_type_dict = dict() # type: Dict[str, Any] - material_types_without_fallback = set() - for root_material_id, material_node in self._material_group_map.items(): - material_type = material_node.root_material_node.getMetaDataEntry("material", "") - if material_type not in grouped_by_type_dict: - grouped_by_type_dict[material_type] = {"generic": None, - "others": []} - material_types_without_fallback.add(material_type) - brand = material_node.root_material_node.getMetaDataEntry("brand", "") - if brand.lower() == "generic": - to_add = True - if material_type in grouped_by_type_dict: - diameter = material_node.root_material_node.getMetaDataEntry("approximate_diameter", "") - if diameter != self._default_approximate_diameter_for_quality_search: - to_add = False # don't add if it's not the default diameter - - if to_add: - # Checking this first allow us to differentiate between not read only materials: - # - if it's in the list, it means that is a new material without fallback - # - if it is not, then it is a custom material with a fallback material (parent) - if material_type in material_types_without_fallback: - grouped_by_type_dict[material_type] = material_node.root_material_node._metadata - material_types_without_fallback.remove(material_type) - - # Remove the materials that have no fallback materials - for material_type in material_types_without_fallback: - del grouped_by_type_dict[material_type] - self._fallback_materials_map = grouped_by_type_dict - - # Map #3 - # There can be multiple material profiles for the same material with different diameters, such as "generic_pla" - # and "generic_pla_175". This is inconvenient when we do material-specific quality lookup because a quality can - # be for either "generic_pla" or "generic_pla_175", but not both. This map helps to get the correct material ID - # for quality search. - self._material_diameter_map = defaultdict(dict) - self._diameter_material_map = dict() - - # Group the material IDs by the same name, material, brand, and color but with different diameters. - material_group_dict = dict() # type: Dict[Tuple[Any], Dict[str, str]] - keys_to_fetch = ("name", "material", "brand", "color") - for root_material_id, machine_node in self._material_group_map.items(): - root_material_metadata = machine_node.root_material_node._metadata - - key_data_list = [] # type: List[Any] - for key in keys_to_fetch: - key_data_list.append(machine_node.root_material_node.getMetaDataEntry(key)) - key_data = cast(Tuple[Any], tuple(key_data_list)) # type: Tuple[Any] - - # If the key_data doesn't exist, it doesn't matter if the material is read only... - if key_data not in material_group_dict: - material_group_dict[key_data] = dict() - else: - # ...but if key_data exists, we just overwrite it if the material is read only, otherwise we skip it - if not machine_node.is_read_only: - continue - approximate_diameter = machine_node.root_material_node.getMetaDataEntry("approximate_diameter", "") - material_group_dict[key_data][approximate_diameter] = machine_node.root_material_node.getMetaDataEntry("id", "") - - # Map [root_material_id][diameter] -> root_material_id for this diameter - for data_dict in material_group_dict.values(): - for root_material_id1 in data_dict.values(): - if root_material_id1 in self._material_diameter_map: - continue - diameter_map = data_dict - for root_material_id2 in data_dict.values(): - self._material_diameter_map[root_material_id2] = diameter_map - - default_root_material_id = data_dict.get(self._default_approximate_diameter_for_quality_search) - if default_root_material_id is None: - default_root_material_id = list(data_dict.values())[0] # no default diameter present, just take "the" only one - for root_material_id in data_dict.values(): - self._diameter_material_map[root_material_id] = default_root_material_id - - # Map #4 - # "machine" -> "nozzle name" -> "buildplate name" -> "root material ID" -> specific material InstanceContainer - self._diameter_machine_nozzle_buildplate_material_map = dict() # type: Dict[str, Dict[str, MaterialNode]] - for material_metadata in material_metadatas.values(): - self.__addMaterialMetadataIntoLookupTree(material_metadata) - - favorites = self._application.getPreferences().getValue("cura/favorite_materials") - for item in favorites.split(";"): - self._favorites.add(item) - - self.materialsUpdated.emit() - - def __addMaterialMetadataIntoLookupTree(self, material_metadata: Dict[str, Any]) -> None: - material_id = material_metadata["id"] - - # We don't store empty material in the lookup tables - if material_id == "empty_material": - return - - root_material_id = material_metadata["base_file"] - definition = material_metadata["definition"] - approximate_diameter = str(material_metadata["approximate_diameter"]) - - if approximate_diameter not in self._diameter_machine_nozzle_buildplate_material_map: - self._diameter_machine_nozzle_buildplate_material_map[approximate_diameter] = {} - - machine_nozzle_buildplate_material_map = self._diameter_machine_nozzle_buildplate_material_map[ - approximate_diameter] - if definition not in machine_nozzle_buildplate_material_map: - machine_nozzle_buildplate_material_map[definition] = MaterialNode() - - # This is a list of information regarding the intermediate nodes: - # nozzle -> buildplate - nozzle_name = material_metadata.get("variant_name") - buildplate_name = material_metadata.get("buildplate_name") - intermediate_node_info_list = [(nozzle_name, VariantType.NOZZLE), - (buildplate_name, VariantType.BUILD_PLATE), - ] - - variant_manager = self._application.getVariantManager() - - machine_node = machine_nozzle_buildplate_material_map[definition] - current_node = machine_node - current_intermediate_node_info_idx = 0 - error_message = None # type: Optional[str] - while current_intermediate_node_info_idx < len(intermediate_node_info_list): - variant_name, variant_type = intermediate_node_info_list[current_intermediate_node_info_idx] - if variant_name is not None: - # The new material has a specific variant, so it needs to be added to that specific branch in the tree. - variant = variant_manager.getVariantNode(definition, variant_name, variant_type) - if variant is None: - error_message = "Material {id} contains a variant {name} that does not exist.".format( - id = material_metadata["id"], name = variant_name) - break - - # Update the current node to advance to a more specific branch - if variant_name not in current_node.children_map: - current_node.children_map[variant_name] = MaterialNode() - current_node = current_node.children_map[variant_name] - - current_intermediate_node_info_idx += 1 - - if error_message is not None: - Logger.log("e", "%s It will not be added into the material lookup tree.", error_message) - self._container_registry.addWrongContainerId(material_metadata["id"]) - return - - # Add the material to the current tree node, which is the deepest (the most specific) branch we can find. - # Sanity check: Make sure that there is no duplicated materials. - if root_material_id in current_node.material_map: - Logger.log("e", "Duplicated material [%s] with root ID [%s]. It has already been added.", - material_id, root_material_id) - ConfigurationErrorMessage.getInstance().addFaultyContainers(root_material_id) - return - - current_node.material_map[root_material_id] = MaterialNode(material_metadata) - - def _updateMaps(self): - Logger.log("i", "Updating material lookup data ...") - self.initialize() - - def _onContainerMetadataChanged(self, container): - self._onContainerChanged(container) - - def _onContainerChanged(self, container): - container_type = container.getMetaDataEntry("type") - if container_type != "material": - return - - # update the maps - self._update_timer.start() - - def getMaterialGroup(self, root_material_id: str) -> Optional[MaterialGroup]: - return self._material_group_map.get(root_material_id) - - def getRootMaterialIDForDiameter(self, root_material_id: str, approximate_diameter: str) -> str: - return self._material_diameter_map.get(root_material_id, {}).get(approximate_diameter, root_material_id) - - def getRootMaterialIDWithoutDiameter(self, root_material_id: str) -> str: - return self._diameter_material_map.get(root_material_id, "") - - def getMaterialGroupListByGUID(self, guid: str) -> Optional[List[MaterialGroup]]: - return self._guid_material_groups_map.get(guid) - - # Returns a dict of all material groups organized by root_material_id. - def getAllMaterialGroups(self) -> Dict[str, "MaterialGroup"]: - return self._material_group_map - - # - # Return a dict with all root material IDs (k) and ContainerNodes (v) that's suitable for the given setup. - # - def getAvailableMaterials(self, machine_definition: "DefinitionContainer", nozzle_name: Optional[str], - buildplate_name: Optional[str], diameter: float) -> Dict[str, MaterialNode]: - # round the diameter to get the approximate diameter - rounded_diameter = str(round(diameter)) - if rounded_diameter not in self._diameter_machine_nozzle_buildplate_material_map: - Logger.log("i", "Cannot find materials with diameter [%s] (rounded to [%s])", diameter, rounded_diameter) - return dict() - - machine_definition_id = machine_definition.getId() - - # If there are nozzle-and-or-buildplate materials, get the nozzle-and-or-buildplate material - machine_nozzle_buildplate_material_map = self._diameter_machine_nozzle_buildplate_material_map[rounded_diameter] - machine_node = machine_nozzle_buildplate_material_map.get(machine_definition_id) - default_machine_node = machine_nozzle_buildplate_material_map.get(self._default_machine_definition_id) - nozzle_node = None - buildplate_node = None - if nozzle_name is not None and machine_node is not None: - nozzle_node = machine_node.getChildNode(nozzle_name) - # Get buildplate node if possible - if nozzle_node is not None and buildplate_name is not None: - buildplate_node = nozzle_node.getChildNode(buildplate_name) - - nodes_to_check = [buildplate_node, nozzle_node, machine_node, default_machine_node] - # Fallback mechanism of finding materials: - # 1. buildplate-specific material - # 2. nozzle-specific material - # 3. machine-specific material - # 4. generic material (for fdmprinter) - machine_exclude_materials = machine_definition.getMetaDataEntry("exclude_materials", []) - - material_id_metadata_dict = dict() # type: Dict[str, MaterialNode] - excluded_materials = set() - for current_node in nodes_to_check: - if current_node is None: - continue - - # Only exclude the materials that are explicitly specified in the "exclude_materials" field. - # Do not exclude other materials that are of the same type. - for material_id, node in current_node.material_map.items(): - if material_id in machine_exclude_materials: - excluded_materials.add(material_id) - continue - - if material_id not in material_id_metadata_dict: - material_id_metadata_dict[material_id] = node - - if excluded_materials: - Logger.log("d", "Exclude materials {excluded_materials} for machine {machine_definition_id}".format(excluded_materials = ", ".join(excluded_materials), machine_definition_id = machine_definition_id)) - - return material_id_metadata_dict - - # - # A convenience function to get available materials for the given machine with the extruder position. - # - def getAvailableMaterialsForMachineExtruder(self, machine: "GlobalStack", - extruder_stack: "ExtruderStack") -> Optional[Dict[str, MaterialNode]]: - buildplate_name = machine.getBuildplateName() - nozzle_name = None - if extruder_stack.variant.getId() != "empty_variant": - nozzle_name = extruder_stack.variant.getName() - diameter = extruder_stack.getApproximateMaterialDiameter() - - # Fetch the available materials (ContainerNode) for the current active machine and extruder setup. - return self.getAvailableMaterials(machine.definition, nozzle_name, buildplate_name, diameter) - - # - # Gets MaterialNode for the given extruder and machine with the given material name. - # Returns None if: - # 1. the given machine doesn't have materials; - # 2. cannot find any material InstanceContainers with the given settings. - # - def getMaterialNode(self, machine_definition_id: str, nozzle_name: Optional[str], - buildplate_name: Optional[str], diameter: float, root_material_id: str) -> Optional["MaterialNode"]: - # round the diameter to get the approximate diameter - rounded_diameter = str(round(diameter)) - if rounded_diameter not in self._diameter_machine_nozzle_buildplate_material_map: - Logger.log("i", "Cannot find materials with diameter [%s] (rounded to [%s]) for root material id [%s]", - diameter, rounded_diameter, root_material_id) - return None - - # If there are nozzle materials, get the nozzle-specific material - machine_nozzle_buildplate_material_map = self._diameter_machine_nozzle_buildplate_material_map[rounded_diameter] # type: Dict[str, MaterialNode] - machine_node = machine_nozzle_buildplate_material_map.get(machine_definition_id) - nozzle_node = None - buildplate_node = None - - # Fallback for "fdmprinter" if the machine-specific materials cannot be found - if machine_node is None: - machine_node = machine_nozzle_buildplate_material_map.get(self._default_machine_definition_id) - if machine_node is not None and nozzle_name is not None: - nozzle_node = machine_node.getChildNode(nozzle_name) - if nozzle_node is not None and buildplate_name is not None: - buildplate_node = nozzle_node.getChildNode(buildplate_name) - - # Fallback mechanism of finding materials: - # 1. buildplate-specific material - # 2. nozzle-specific material - # 3. machine-specific material - # 4. generic material (for fdmprinter) - nodes_to_check = [buildplate_node, nozzle_node, machine_node, - machine_nozzle_buildplate_material_map.get(self._default_machine_definition_id)] - - material_node = None - for node in nodes_to_check: - if node is not None: - material_node = node.material_map.get(root_material_id) - if material_node: - break - - return material_node - - # - # Gets MaterialNode for the given extruder and machine with the given material type. - # Returns None if: - # 1. the given machine doesn't have materials; - # 2. cannot find any material InstanceContainers with the given settings. - # - def getMaterialNodeByType(self, global_stack: "GlobalStack", position: str, nozzle_name: str, - buildplate_name: Optional[str], material_guid: str) -> Optional["MaterialNode"]: - node = None - machine_definition = global_stack.definition - extruder_definition = global_stack.extruders[position].definition - if parseBool(machine_definition.getMetaDataEntry("has_materials", False)): - material_diameter = extruder_definition.getProperty("material_diameter", "value") - if isinstance(material_diameter, SettingFunction): - material_diameter = material_diameter(global_stack) - - # Look at the guid to material dictionary - root_material_id = None - for material_group in self._guid_material_groups_map[material_guid]: - root_material_id = cast(str, material_group.root_material_node.getMetaDataEntry("id", "")) - break - - if not root_material_id: - Logger.log("i", "Cannot find materials with guid [%s] ", material_guid) - return None - - node = self.getMaterialNode(machine_definition.getId(), nozzle_name, buildplate_name, - material_diameter, root_material_id) - return node - - # There are 2 ways to get fallback materials; - # - A fallback by type (@sa getFallbackMaterialIdByMaterialType), which adds the generic version of this material - # - A fallback by GUID; If a material has been duplicated, it should also check if the original materials do have - # a GUID. This should only be done if the material itself does not have a quality just yet. - def getFallBackMaterialIdsByMaterial(self, material: "InstanceContainer") -> List[str]: - results = [] # type: List[str] - - material_groups = self.getMaterialGroupListByGUID(material.getMetaDataEntry("GUID")) - for material_group in material_groups: # type: ignore - if material_group.name != material.getId(): - # If the material in the group is read only, put it at the front of the list (since that is the most - # likely one to get a result) - if material_group.is_read_only: - results.insert(0, material_group.name) - else: - results.append(material_group.name) - - fallback = self.getFallbackMaterialIdByMaterialType(material.getMetaDataEntry("material")) - if fallback is not None: - results.append(fallback) - return results - - # - # Used by QualityManager. Built-in quality profiles may be based on generic material IDs such as "generic_pla". - # For materials such as ultimaker_pla_orange, no quality profiles may be found, so we should fall back to use - # the generic material IDs to search for qualities. - # - # An example would be, suppose we have machine with preferred material set to "filo3d_pla" (1.75mm), but its - # extruders only use 2.85mm materials, then we won't be able to find the preferred material for this machine. - # A fallback would be to fetch a generic material of the same type "PLA" as "filo3d_pla", and in this case it will - # be "generic_pla". This function is intended to get a generic fallback material for the given material type. - # - # This function returns the generic root material ID for the given material type, where material types are "PLA", - # "ABS", etc. - # - def getFallbackMaterialIdByMaterialType(self, material_type: str) -> Optional[str]: - # For safety - if material_type not in self._fallback_materials_map: - Logger.log("w", "The material type [%s] does not have a fallback material" % material_type) - return None - fallback_material = self._fallback_materials_map[material_type] - if fallback_material: - return self.getRootMaterialIDWithoutDiameter(fallback_material["id"]) - else: - return None - - ## Get default material for given global stack, extruder position and extruder nozzle name - # you can provide the extruder_definition and then the position is ignored (useful when building up global stack in CuraStackBuilder) - def getDefaultMaterial(self, global_stack: "GlobalStack", position: str, nozzle_name: Optional[str], - extruder_definition: Optional["DefinitionContainer"] = None) -> Optional["MaterialNode"]: - node = None - - buildplate_name = global_stack.getBuildplateName() - machine_definition = global_stack.definition - - # The extruder-compatible material diameter in the extruder definition may not be the correct value because - # the user can change it in the definition_changes container. - if extruder_definition is None: - extruder_stack_or_definition = global_stack.extruders[position] - is_extruder_stack = True - else: - extruder_stack_or_definition = extruder_definition - is_extruder_stack = False - - if extruder_stack_or_definition and parseBool(global_stack.getMetaDataEntry("has_materials", False)): - if is_extruder_stack: - material_diameter = extruder_stack_or_definition.getCompatibleMaterialDiameter() - else: - material_diameter = extruder_stack_or_definition.getProperty("material_diameter", "value") - - if isinstance(material_diameter, SettingFunction): - material_diameter = material_diameter(global_stack) - approximate_material_diameter = str(round(material_diameter)) - root_material_id = machine_definition.getMetaDataEntry("preferred_material") - root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_material_diameter) - node = self.getMaterialNode(machine_definition.getId(), nozzle_name, buildplate_name, - material_diameter, root_material_id) - return node - - def removeMaterialByRootId(self, root_material_id: str): - material_group = self.getMaterialGroup(root_material_id) - if not material_group: - Logger.log("i", "Unable to remove the material with id %s, because it doesn't exist.", root_material_id) - return - - nodes_to_remove = [material_group.root_material_node] + material_group.derived_material_node_list - # Sort all nodes with respect to the container ID lengths in the ascending order so the base material container - # will be the first one to be removed. We need to do this to ensure that all containers get loaded & deleted. - nodes_to_remove = sorted(nodes_to_remove, key = lambda x: len(x.getMetaDataEntry("id", ""))) - # Try to load all containers first. If there is any faulty ones, they will be put into the faulty container - # list, so removeContainer() can ignore those ones. - for node in nodes_to_remove: - container_id = node.getMetaDataEntry("id", "") - results = self._container_registry.findContainers(id = container_id) - if not results: - self._container_registry.addWrongContainerId(container_id) - for node in nodes_to_remove: - self._container_registry.removeContainer(node.getMetaDataEntry("id", "")) - - # - # Methods for GUI - # - @pyqtSlot("QVariant", result=bool) - def canMaterialBeRemoved(self, material_node: "MaterialNode"): - # Check if the material is active in any extruder train. In that case, the material shouldn't be removed! - # In the future we might enable this again, but right now, it's causing a ton of issues if we do (since it - # corrupts the configuration) - root_material_id = material_node.getMetaDataEntry("base_file") - material_group = self.getMaterialGroup(root_material_id) - if not material_group: - return False - - nodes_to_remove = [material_group.root_material_node] + material_group.derived_material_node_list - ids_to_remove = [node.getMetaDataEntry("id", "") for node in nodes_to_remove] - - for extruder_stack in self._container_registry.findContainerStacks(type="extruder_train"): - if extruder_stack.material.getId() in ids_to_remove: - return False - return True - - @pyqtSlot("QVariant", str) - def setMaterialName(self, material_node: "MaterialNode", name: str) -> None: - root_material_id = material_node.getMetaDataEntry("base_file") - if root_material_id is None: - return - if self._container_registry.isReadOnly(root_material_id): - Logger.log("w", "Cannot set name of read-only container %s.", root_material_id) - return - - material_group = self.getMaterialGroup(root_material_id) - if material_group: - container = material_group.root_material_node.getContainer() - if container: - container.setName(name) - - # - # Removes the given material. - # - @pyqtSlot("QVariant") - def removeMaterial(self, material_node: "MaterialNode") -> None: - root_material_id = material_node.getMetaDataEntry("base_file") - if root_material_id is not None: - self.removeMaterialByRootId(root_material_id) - - # - # Creates a duplicate of a material, which has the same GUID and base_file metadata. - # Returns the root material ID of the duplicated material if successful. - # - @pyqtSlot("QVariant", result = str) - def duplicateMaterial(self, material_node: MaterialNode, new_base_id: Optional[str] = None, new_metadata: Dict[str, Any] = None) -> Optional[str]: - root_material_id = cast(str, material_node.getMetaDataEntry("base_file", "")) - - material_group = self.getMaterialGroup(root_material_id) - if not material_group: - Logger.log("i", "Unable to duplicate the material with id %s, because it doesn't exist.", root_material_id) - return None - - base_container = material_group.root_material_node.getContainer() - if not base_container: - return None - - # Ensure all settings are saved. - self._application.saveSettings() - - # Create a new ID & container to hold the data. - new_containers = [] - if new_base_id is None: - new_base_id = self._container_registry.uniqueName(base_container.getId()) - new_base_container = copy.deepcopy(base_container) - new_base_container.getMetaData()["id"] = new_base_id - new_base_container.getMetaData()["base_file"] = new_base_id - if new_metadata is not None: - for key, value in new_metadata.items(): - new_base_container.getMetaData()[key] = value - new_containers.append(new_base_container) - - # Clone all of them. - for node in material_group.derived_material_node_list: - container_to_copy = node.getContainer() - if not container_to_copy: - continue - # Create unique IDs for every clone. - new_id = new_base_id - if container_to_copy.getMetaDataEntry("definition") != "fdmprinter": - new_id += "_" + container_to_copy.getMetaDataEntry("definition") - if container_to_copy.getMetaDataEntry("variant_name"): - nozzle_name = container_to_copy.getMetaDataEntry("variant_name") - new_id += "_" + nozzle_name.replace(" ", "_") - - new_container = copy.deepcopy(container_to_copy) - new_container.getMetaData()["id"] = new_id - new_container.getMetaData()["base_file"] = new_base_id - if new_metadata is not None: - for key, value in new_metadata.items(): - new_container.getMetaData()[key] = value - - new_containers.append(new_container) - - for container_to_add in new_containers: - container_to_add.setDirty(True) - self._container_registry.addContainer(container_to_add) - - # if the duplicated material was favorite then the new material should also be added to favorite. - if root_material_id in self.getFavorites(): - self.addFavorite(new_base_id) - - return new_base_id - - # - # Create a new material by cloning Generic PLA for the current material diameter and generate a new GUID. - # Returns the ID of the newly created material. - @pyqtSlot(result = str) - def createMaterial(self) -> str: - from UM.i18n import i18nCatalog - catalog = i18nCatalog("cura") - # Ensure all settings are saved. - self._application.saveSettings() - - machine_manager = self._application.getMachineManager() - extruder_stack = machine_manager.activeStack - - machine_definition = self._application.getGlobalContainerStack().definition - root_material_id = machine_definition.getMetaDataEntry("preferred_material", default = "generic_pla") - - approximate_diameter = str(extruder_stack.approximateMaterialDiameter) - root_material_id = self.getRootMaterialIDForDiameter(root_material_id, approximate_diameter) - material_group = self.getMaterialGroup(root_material_id) - - if not material_group: # This should never happen - Logger.log("w", "Cannot get the material group of %s.", root_material_id) - return "" - - # Create a new ID & container to hold the data. - new_id = self._container_registry.uniqueName("custom_material") - new_metadata = {"name": catalog.i18nc("@label", "Custom Material"), - "brand": catalog.i18nc("@label", "Custom"), - "GUID": str(uuid.uuid4()), - } - - self.duplicateMaterial(material_group.root_material_node, - new_base_id = new_id, - new_metadata = new_metadata) - return new_id - - @pyqtSlot(str) - def addFavorite(self, root_material_id: str) -> None: - self._favorites.add(root_material_id) - self.materialsUpdated.emit() - - # Ensure all settings are saved. - self._application.getPreferences().setValue("cura/favorite_materials", ";".join(list(self._favorites))) - self._application.saveSettings() - - @pyqtSlot(str) - def removeFavorite(self, root_material_id: str) -> None: - try: - self._favorites.remove(root_material_id) - except KeyError: - Logger.log("w", "Could not delete material %s from favorites as it was already deleted", root_material_id) - return - self.materialsUpdated.emit() - - # Ensure all settings are saved. - self._application.getPreferences().setValue("cura/favorite_materials", ";".join(list(self._favorites))) - self._application.saveSettings() - - @pyqtSlot() - def getFavorites(self): - return self._favorites diff --git a/cura/Machines/MaterialNode.py b/cura/Machines/MaterialNode.py index a4dcb0564f..8f04a90204 100644 --- a/cura/Machines/MaterialNode.py +++ b/cura/Machines/MaterialNode.py @@ -1,25 +1,136 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Dict, Any -from collections import OrderedDict -from .ContainerNode import ContainerNode +from typing import Any, Optional, TYPE_CHECKING +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.Interfaces import ContainerInterface +from UM.Signal import Signal +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.QualityNode import QualityNode +import UM.FlameProfiler +if TYPE_CHECKING: + from typing import Dict + from cura.Machines.VariantNode import VariantNode + +## Represents a material in the container tree. # -# A MaterialNode is a node in the material lookup tree/map/table. It contains 2 (extra) fields: -# - material_map: a one-to-one map of "material_root_id" to material_node. -# - children_map: the key-value map for child nodes of this node. This is used in a lookup tree. -# -# +# Its subcontainers are quality profiles. class MaterialNode(ContainerNode): - __slots__ = ("material_map", "children_map") + def __init__(self, container_id: str, variant: "VariantNode") -> None: + super().__init__(container_id) + self.variant = variant + self.qualities = {} # type: Dict[str, QualityNode] # Mapping container IDs to quality profiles. + self.materialChanged = Signal() # Triggered when the material is removed or its metadata is updated. - def __init__(self, metadata: Optional[Dict[str, Any]] = None) -> None: - super().__init__(metadata = metadata) - self.material_map = {} # type: Dict[str, MaterialNode] # material_root_id -> material_node + container_registry = ContainerRegistry.getInstance() + my_metadata = container_registry.findContainersMetadata(id = container_id)[0] + self.base_file = my_metadata["base_file"] + self.material_type = my_metadata["material"] + self.guid = my_metadata["GUID"] + self._loadAll() + container_registry.containerRemoved.connect(self._onRemoved) + container_registry.containerMetaDataChanged.connect(self._onMetadataChanged) - # We overide this as we want to indicate that MaterialNodes can only contain other material nodes. - self.children_map = OrderedDict() # type: OrderedDict[str, "MaterialNode"] + ## Finds the preferred quality for this printer with this material and this + # variant loaded. + # + # If the preferred quality is not available, an arbitrary quality is + # returned. If there is a configuration mistake (like a typo in the + # preferred quality) this returns a random available quality. If there are + # no available qualities, this will return the empty quality node. + # \return The node for the preferred quality, or any arbitrary quality if + # there is no match. + def preferredQuality(self) -> QualityNode: + for quality_id, quality_node in self.qualities.items(): + if self.variant.machine.preferred_quality_type == quality_node.quality_type: + return quality_node + fallback = next(iter(self.qualities.values())) # Should only happen with empty quality node. + Logger.log("w", "Could not find preferred quality type {preferred_quality_type} for material {material_id} and variant {variant_id}, falling back to {fallback}.".format( + preferred_quality_type = self.variant.machine.preferred_quality_type, + material_id = self.container_id, + variant_id = self.variant.container_id, + fallback = fallback.container_id + )) + return fallback - def getChildNode(self, child_key: str) -> Optional["MaterialNode"]: - return self.children_map.get(child_key) \ No newline at end of file + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() + # Find all quality profiles that fit on this material. + if not self.variant.machine.has_machine_quality: # Need to find the global qualities. + qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = "fdmprinter") + elif not self.variant.machine.has_materials: + qualities = container_registry.findInstanceContainersMetadata(type="quality", definition=self.variant.machine.quality_definition) + else: + if self.variant.machine.has_variants: + # Need to find the qualities that specify a material profile with the same material type. + qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name, material = self.container_id) # First try by exact material ID. + else: + qualities = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, material = self.container_id) + if not qualities: + my_material_type = self.material_type + if self.variant.machine.has_variants: + qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition, variant = self.variant.variant_name) + else: + qualities_any_material = container_registry.findInstanceContainersMetadata(type = "quality", definition = self.variant.machine.quality_definition) + for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type): + qualities.extend((quality for quality in qualities_any_material if quality.get("material") == material_metadata["id"])) + + if not qualities: # No quality profiles found. Go by GUID then. + my_guid = self.guid + for material_metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_guid): + qualities.extend((quality for quality in qualities_any_material if quality["material"] == material_metadata["id"])) + + if not qualities: + # There are still some machines that should use global profiles in the extruder, so do that now. + # These are mostly older machines that haven't received updates (so single extruder machines without specific qualities + # but that do have materials and profiles specific to that machine) + qualities.extend([quality for quality in qualities_any_material if quality.get("global_quality", "False") != "False"]) + + for quality in qualities: + quality_id = quality["id"] + if quality_id not in self.qualities: + self.qualities[quality_id] = QualityNode(quality_id, parent = self) + if not self.qualities: + self.qualities["empty_quality"] = QualityNode("empty_quality", parent = self) + + ## Triggered when any container is removed, but only handles it when the + # container is removed that this node represents. + # \param container The container that was allegedly removed. + def _onRemoved(self, container: ContainerInterface) -> None: + if container.getId() == self.container_id: + # Remove myself from my parent. + if self.base_file in self.variant.materials: + del self.variant.materials[self.base_file] + if not self.variant.materials: + self.variant.materials["empty_material"] = MaterialNode("empty_material", variant = self.variant) + self.materialChanged.emit(self) + + ## Triggered when any metadata changed in any container, but only handles + # it when the metadata of this node is changed. + # \param container The container whose metadata changed. + # \param kwargs Key-word arguments provided when changing the metadata. + # These are ignored. As far as I know they are never provided to this + # call. + def _onMetadataChanged(self, container: ContainerInterface, **kwargs: Any) -> None: + if container.getId() != self.container_id: + return + + new_metadata = container.getMetaData() + old_base_file = self.base_file + if new_metadata["base_file"] != old_base_file: + self.base_file = new_metadata["base_file"] + if old_base_file in self.variant.materials: # Move in parent node. + del self.variant.materials[old_base_file] + self.variant.materials[self.base_file] = self + + old_material_type = self.material_type + self.material_type = new_metadata["material"] + old_guid = self.guid + self.guid = new_metadata["GUID"] + if self.base_file != old_base_file or self.material_type != old_material_type or self.guid != old_guid: # List of quality profiles could've changed. + self.qualities = {} + self._loadAll() # Re-load the quality profiles for this node. + self.materialChanged.emit(self) diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index e936877923..db660704b5 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -1,18 +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 Optional, Dict, Set -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty +from typing import Dict, Set + +from PyQt5.QtCore import Qt, QTimer, pyqtSignal, pyqtProperty + from UM.Qt.ListModel import ListModel +from UM.Logger import Logger +import cura.CuraApplication # Imported like this to prevent a circular reference. +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.MaterialNode import MaterialNode +from cura.Settings.CuraContainerRegistry import CuraContainerRegistry ## This is the base model class for GenericMaterialsModel and MaterialBrandsModel. # Those 2 models are used by the material drop down menu to show generic materials and branded materials separately. # The extruder position defined here is being used to bound a menu to the correct extruder. This is used in the top # bar menu "Settings" -> "Extruder nr" -> "Material" -> this menu -from cura.Machines.MaterialNode import MaterialNode - - class BaseMaterialsModel(ListModel): extruderPositionChanged = pyqtSignal() @@ -24,19 +28,36 @@ class BaseMaterialsModel(ListModel): self._application = CuraApplication.getInstance() + self._available_materials = {} # type: Dict[str, MaterialNode] + self._favorite_ids = set() # type: Set[str] + # Make these managers available to all material models self._container_registry = self._application.getInstance().getContainerRegistry() self._machine_manager = self._application.getMachineManager() - self._material_manager = self._application.getMaterialManager() + + self._extruder_position = 0 + self._extruder_stack = None + self._enabled = True + + # CURA-6904 + # Updating the material model requires information from material nodes and containers. We use a timer here to + # make sure that an update function call will not be directly invoked by an event. Because the triggered event + # can be caused in the middle of a XMLMaterial loading, and the material container we try to find may not be + # in the system yet. This will cause an infinite recursion of (1) trying to load a material, (2) trying to + # update the material model, (3) cannot find the material container, load it, (4) repeat #1. + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) # Update the stack and the model data when the machine changes self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack) + self._updateExtruderStack() - # Update this model when switching machines - self._machine_manager.activeStackChanged.connect(self._update) - - # Update this model when list of materials changes - self._material_manager.materialsUpdated.connect(self._update) + # Update this model when switching machines or tabs, when adding materials or changing their metadata. + self._machine_manager.activeStackChanged.connect(self._onChanged) + ContainerTree.getInstance().materialsChanged.connect(self._materialsListChanged) + self._application.getMaterialManagementModel().favoritesChanged.connect(self._onChanged) self.addRoleName(Qt.UserRole + 1, "root_material_id") self.addRoleName(Qt.UserRole + 2, "id") @@ -55,12 +76,8 @@ class BaseMaterialsModel(ListModel): self.addRoleName(Qt.UserRole + 15, "container_node") self.addRoleName(Qt.UserRole + 16, "is_favorite") - self._extruder_position = 0 - self._extruder_stack = None - - self._available_materials = None # type: Optional[Dict[str, MaterialNode]] - self._favorite_ids = set() # type: Set[str] - self._enabled = True + def _onChanged(self) -> None: + self._update_timer.start() def _updateExtruderStack(self): global_stack = self._machine_manager.activeMachine @@ -68,14 +85,19 @@ class BaseMaterialsModel(ListModel): return if self._extruder_stack is not None: - self._extruder_stack.pyqtContainersChanged.disconnect(self._update) - self._extruder_stack.approximateMaterialDiameterChanged.disconnect(self._update) - self._extruder_stack = global_stack.extruders.get(str(self._extruder_position)) + self._extruder_stack.pyqtContainersChanged.disconnect(self._onChanged) + self._extruder_stack.approximateMaterialDiameterChanged.disconnect(self._onChanged) + + try: + self._extruder_stack = global_stack.extruderList[self._extruder_position] + except IndexError: + self._extruder_stack = None + if self._extruder_stack is not None: - self._extruder_stack.pyqtContainersChanged.connect(self._update) - self._extruder_stack.approximateMaterialDiameterChanged.connect(self._update) + self._extruder_stack.pyqtContainersChanged.connect(self._onChanged) + self._extruder_stack.approximateMaterialDiameterChanged.connect(self._onChanged) # Force update the model when the extruder stack changes - self._update() + self._onChanged() def setExtruderPosition(self, position: int): if self._extruder_stack is None or self._extruder_position != position: @@ -92,43 +114,76 @@ class BaseMaterialsModel(ListModel): self._enabled = enabled if self._enabled: # ensure the data is there again. - self._update() + self._onChanged() self.enabledChanged.emit() - @pyqtProperty(bool, fset=setEnabled, notify=enabledChanged) + @pyqtProperty(bool, fset = setEnabled, notify = enabledChanged) def enabled(self): return self._enabled - ## This is an abstract method that needs to be implemented by the specific - # models themselves. + ## Triggered when a list of materials changed somewhere in the container + # tree. This change may trigger an _update() call when the materials + # changed for the configuration that this model is looking for. + def _materialsListChanged(self, material: MaterialNode) -> None: + if self._extruder_stack is None: + return + if material.variant.container_id != self._extruder_stack.variant.getId(): + return + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + return + if material.variant.machine.container_id != global_stack.definition.getId(): + return + self._onChanged() + + ## Triggered when the list of favorite materials is changed. + def _favoritesChanged(self, material_base_file: str) -> None: + if material_base_file in self._available_materials: + self._onChanged() + + ## This is an abstract method that needs to be implemented by the specific + # models themselves. def _update(self): - pass + self._favorite_ids = set(cura.CuraApplication.CuraApplication.getInstance().getPreferences().getValue("cura/favorite_materials").split(";")) + + # Update the available materials (ContainerNode) for the current active machine and extruder setup. + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack.hasMaterials: + return # There are no materials for this machine, so nothing to do. + extruder_stack = global_stack.extruders.get(str(self._extruder_position)) + if not extruder_stack: + return + nozzle_name = extruder_stack.variant.getName() + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + if nozzle_name not in machine_node.variants: + Logger.log("w", "Unable to find variant %s in container tree", nozzle_name) + self._available_materials = {} + return + materials = machine_node.variants[nozzle_name].materials + approximate_material_diameter = extruder_stack.getApproximateMaterialDiameter() + self._available_materials = {key: material for key, material in materials.items() if float(material.getMetaDataEntry("approximate_diameter", -1)) == approximate_material_diameter} ## This method is used by all material models in the beginning of the # _update() method in order to prevent errors. It's the same in all models # so it's placed here for easy access. def _canUpdate(self): global_stack = self._machine_manager.activeMachine - if global_stack is None or not self._enabled: return False extruder_position = str(self._extruder_position) - if extruder_position not in global_stack.extruders: return False - - extruder_stack = global_stack.extruders[extruder_position] - self._available_materials = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack, extruder_stack) - if self._available_materials is None: - return False return True ## This is another convenience function which is shared by all material # models so it's put here to avoid having so much duplicated code. def _createMaterialItem(self, root_material_id, container_node): - metadata = container_node.getMetadata() + metadata_list = CuraContainerRegistry.getInstance().findContainersMetadata(id = container_node.container_id) + if not metadata_list: + return None + metadata = metadata_list[0] item = { "root_material_id": root_material_id, "id": metadata["id"], @@ -149,4 +204,3 @@ class BaseMaterialsModel(ListModel): "is_favorite": root_material_id in self._favorite_ids } return item - diff --git a/cura/Machines/Models/BuildPlateModel.py b/cura/Machines/Models/BuildPlateModel.py index 82b9db4d64..3697dd2762 100644 --- a/cura/Machines/Models/BuildPlateModel.py +++ b/cura/Machines/Models/BuildPlateModel.py @@ -1,14 +1,9 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt - -from UM.Application import Application from UM.Logger import Logger from UM.Qt.ListModel import ListModel -from UM.Util import parseBool - -from cura.Machines.VariantType import VariantType class BuildPlateModel(ListModel): @@ -21,31 +16,9 @@ class BuildPlateModel(ListModel): self.addRoleName(self.NameRole, "name") self.addRoleName(self.ContainerNodeRole, "container_node") - self._application = Application.getInstance() - self._variant_manager = self._application._variant_manager - self._machine_manager = self._application.getMachineManager() - - self._machine_manager.globalContainerChanged.connect(self._update) - self._update() def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - global_stack = self._machine_manager._global_container_stack - if not global_stack: - self.setItems([]) - return - - has_variants = parseBool(global_stack.getMetaDataEntry("has_variant_buildplates", False)) - if not has_variants: - self.setItems([]) - return - - variant_dict = self._variant_manager.getVariantNodes(global_stack, variant_type = VariantType.BUILD_PLATE) - - item_list = [] - for name, variant_node in variant_dict.items(): - item = {"name": name, - "container_node": variant_node} - item_list.append(item) - self.setItems(item_list) + self.setItems([]) + return diff --git a/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py b/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py index dcade8cb0d..1ab7e21700 100644 --- a/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py +++ b/cura/Machines/Models/CustomQualityProfilesDropDownMenuModel.py @@ -1,31 +1,48 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, TYPE_CHECKING + from UM.Logger import Logger +import cura.CuraApplication # Imported this way to prevent circular references. +from cura.Machines.ContainerTree import ContainerTree from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel +if TYPE_CHECKING: + from PyQt5.QtCore import QObject + from UM.Settings.Interfaces import ContainerInterface -# -# This model is used for the custom profile items in the profile drop down menu. -# + +## This model is used for the custom profile items in the profile drop down +# menu. class CustomQualityProfilesDropDownMenuModel(QualityProfilesDropDownMenuModel): - def _update(self): + def __init__(self, parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + container_registry.containerAdded.connect(self._qualityChangesListChanged) + container_registry.containerRemoved.connect(self._qualityChangesListChanged) + container_registry.containerMetaDataChanged.connect(self._qualityChangesListChanged) + + def _qualityChangesListChanged(self, container: "ContainerInterface") -> None: + if container.getMetaDataEntry("type") == "quality_changes": + self._update() + + def _update(self) -> None: Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - active_global_stack = self._machine_manager.activeMachine + active_global_stack = cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeMachine if active_global_stack is None: self.setItems([]) Logger.log("d", "No active GlobalStack, set %s as empty.", self.__class__.__name__) return - quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(active_global_stack) + quality_changes_list = ContainerTree.getInstance().getCurrentQualityChangesGroups() item_list = [] - for key in sorted(quality_changes_group_dict, key = lambda name: name.upper()): - quality_changes_group = quality_changes_group_dict[key] - + for quality_changes_group in sorted(quality_changes_list, key = lambda qgc: qgc.name.lower()): item = {"name": quality_changes_group.name, "layer_height": "", "layer_height_without_unit": "", diff --git a/cura/Machines/Models/DiscoveredPrintersModel.py b/cura/Machines/Models/DiscoveredPrintersModel.py index a2a1fac3f7..c662334470 100644 --- a/cura/Machines/Models/DiscoveredPrintersModel.py +++ b/cura/Machines/Models/DiscoveredPrintersModel.py @@ -11,7 +11,6 @@ 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 @@ -62,32 +61,46 @@ class DiscoveredPrinter(QObject): 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 ClusterUM3OutputDevice, when it updates a printer information, it updates the machine type using the field + # 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 machine_manager.hasHumanReadableMachineTypeName(self._machine_type): + if self._hasHumanReadableMachineTypeName(self._machine_type): readable_type = self._machine_type else: - readable_type = machine_manager.getMachineTypeNameFromId(self._machine_type) + 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: - from cura.CuraApplication import CuraApplication - machine_manager = CuraApplication.getInstance().getMachineManager() - if machine_manager.hasHumanReadableMachineTypeName(self._machine_type): + if self._hasHumanReadableMachineTypeName(self._machine_type): readable_type = self._machine_type else: - readable_type = machine_manager.getMachineTypeNameFromId(self._machine_type) + 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 diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index 98a2a01597..6b8f0e8e56 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -1,28 +1,33 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel +import cura.CuraApplication # To listen to changes to the preferences. ## Model that shows the list of favorite materials. class FavoriteMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) - self._update() + cura.CuraApplication.CuraApplication.getInstance().getPreferences().preferenceChanged.connect(self._onFavoritesChanged) + self._onChanged() + + ## Triggered when any preference changes, but only handles it when the list + # of favourites is changed. + def _onFavoritesChanged(self, preference_key: str) -> None: + if preference_key != "cura/favorite_materials": + return + self._onChanged() def _update(self): if not self._canUpdate(): return - - # Get updated list of favorites - self._favorite_ids = self._material_manager.getFavorites() + super()._update() item_list = [] for root_material_id, container_node in self._available_materials.items(): - metadata = container_node.getMetadata() - # Do not include the materials from a to-be-removed package - if bool(metadata.get("removed", False)): + if bool(container_node.getMetaDataEntry("removed", False)): continue # Only add results for favorite materials @@ -30,7 +35,8 @@ class FavoriteMaterialsModel(BaseMaterialsModel): continue item = self._createMaterialItem(root_material_id, container_node) - item_list.append(item) + if item: + item_list.append(item) # Sort the item list alphabetically by name item_list = sorted(item_list, key = lambda d: d["brand"].upper()) diff --git a/cura/Machines/Models/FirstStartMachineActionsModel.py b/cura/Machines/Models/FirstStartMachineActionsModel.py index ce0e9bf856..92caed7b12 100644 --- a/cura/Machines/Models/FirstStartMachineActionsModel.py +++ b/cura/Machines/Models/FirstStartMachineActionsModel.py @@ -33,11 +33,11 @@ class FirstStartMachineActionsModel(ListModel): self._current_action_index = 0 self._application = application - self._application.initializationFinished.connect(self._initialize) + self._application.initializationFinished.connect(self.initialize) self._previous_global_stack = None - def _initialize(self) -> None: + def initialize(self) -> None: self._application.getMachineManager().globalContainerChanged.connect(self._update) self._update() diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index e81a73de24..9ed1632b87 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.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 cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel @@ -7,30 +7,27 @@ class GenericMaterialsModel(BaseMaterialsModel): def __init__(self, parent = None): super().__init__(parent) - self._update() + self._onChanged() def _update(self): if not self._canUpdate(): return - - # Get updated list of favorites - self._favorite_ids = self._material_manager.getFavorites() + super()._update() item_list = [] for root_material_id, container_node in self._available_materials.items(): - metadata = container_node.getMetadata() - # Do not include the materials from a to-be-removed package - if bool(metadata.get("removed", False)): + if bool(container_node.getMetaDataEntry("removed", False)): continue # Only add results for generic materials - if metadata["brand"].lower() != "generic": + if container_node.getMetaDataEntry("brand", "unknown").lower() != "generic": continue item = self._createMaterialItem(root_material_id, container_node) - item_list.append(item) + if item: + item_list.append(item) # Sort the item list alphabetically by name item_list = sorted(item_list, key = lambda d: d["name"].upper()) diff --git a/cura/Machines/Models/IntentCategoryModel.py b/cura/Machines/Models/IntentCategoryModel.py new file mode 100644 index 0000000000..202d79bb15 --- /dev/null +++ b/cura/Machines/Models/IntentCategoryModel.py @@ -0,0 +1,118 @@ +#Copyright (c) 2019 Ultimaker B.V. +#Cura is released under the terms of the LGPLv3 or higher. + +import collections +from PyQt5.QtCore import Qt, QTimer +from typing import TYPE_CHECKING, Optional, Dict +from cura.Machines.Models.IntentTranslations import intent_translations + +from cura.Machines.Models.IntentModel import IntentModel +from cura.Settings.IntentManager import IntentManager +from UM.Qt.ListModel import ListModel +from UM.Settings.ContainerRegistry import ContainerRegistry #To update the list if anything changes. +from PyQt5.QtCore import pyqtProperty, pyqtSignal +import cura.CuraApplication +if TYPE_CHECKING: + from UM.Settings.ContainerRegistry import ContainerInterface + +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") + + +## Lists the intent categories that are available for the current printer +# configuration. +class IntentCategoryModel(ListModel): + NameRole = Qt.UserRole + 1 + IntentCategoryRole = Qt.UserRole + 2 + WeightRole = Qt.UserRole + 3 + QualitiesRole = Qt.UserRole + 4 + DescriptionRole = Qt.UserRole + 5 + + modelUpdated = pyqtSignal() + + _translations = collections.OrderedDict() # type: "collections.OrderedDict[str,Dict[str,Optional[str]]]" + + # Translations to user-visible string. Ordered by weight. + # TODO: Create a solution for this name and weight to be used dynamically. + @classmethod + def _get_translations(cls): + if len(cls._translations) == 0: + cls._translations["default"] = { + "name": catalog.i18nc("@label", "Default") + } + cls._translations["visual"] = { + "name": catalog.i18nc("@label", "Visual"), + "description": catalog.i18nc("@text", "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality.") + } + cls._translations["engineering"] = { + "name": catalog.i18nc("@label", "Engineering"), + "description": catalog.i18nc("@text", "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances.") + } + cls._translations["quick"] = { + "name": catalog.i18nc("@label", "Draft"), + "description": catalog.i18nc("@text", "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction.") + } + return cls._translations + + ## Creates a new model for a certain intent category. + # \param The category to list the intent profiles for. + def __init__(self, intent_category: str) -> None: + super().__init__() + self._intent_category = intent_category + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.IntentCategoryRole, "intent_category") + self.addRoleName(self.WeightRole, "weight") + self.addRoleName(self.QualitiesRole, "qualities") + self.addRoleName(self.DescriptionRole, "description") + + application = cura.CuraApplication.CuraApplication.getInstance() + + ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChange) + ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChange) + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.activeMaterialChanged.connect(self.update) + machine_manager.activeVariantChanged.connect(self.update) + machine_manager.extruderChanged.connect(self.update) + + extruder_manager = application.getExtruderManager() + extruder_manager.extrudersChanged.connect(self.update) + + self._update_timer = QTimer() + self._update_timer.setInterval(500) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + + self.update() + + ## Updates the list of intents if an intent profile was added or removed. + def _onContainerChange(self, container: "ContainerInterface") -> None: + if container.getMetaDataEntry("type") == "intent": + self.update() + + def update(self): + self._update_timer.start() + + ## Updates the list of intents. + def _update(self) -> None: + available_categories = IntentManager.getInstance().currentAvailableIntentCategories() + result = [] + for category in available_categories: + qualities = IntentModel() + qualities.setIntentCategory(category) + result.append({ + "name": IntentCategoryModel.translation(category, "name", catalog.i18nc("@label", "Unknown")), + "description": IntentCategoryModel.translation(category, "description", None), + "intent_category": category, + "weight": list(IntentCategoryModel._get_translations().keys()).index(category), + "qualities": qualities + }) + result.sort(key = lambda k: k["weight"]) + self.setItems(result) + + ## Get a display value for a category. + ## for categories and keys + @staticmethod + def translation(category: str, key: str, default: Optional[str] = None): + display_strings = IntentCategoryModel._get_translations().get(category, {}) + return display_strings.get(key, default) diff --git a/cura/Machines/Models/IntentModel.py b/cura/Machines/Models/IntentModel.py new file mode 100644 index 0000000000..986f28a826 --- /dev/null +++ b/cura/Machines/Models/IntentModel.py @@ -0,0 +1,135 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional, Dict, Any, Set, List + +from PyQt5.QtCore import Qt, QObject, pyqtProperty, pyqtSignal + +import cura.CuraApplication +from UM.Qt.ListModel import ListModel +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Logger import Logger +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.MaterialNode import MaterialNode +from cura.Machines.Models.MachineModelUtils import fetchLayerHeight +from cura.Machines.QualityGroup import QualityGroup + + +class IntentModel(ListModel): + NameRole = Qt.UserRole + 1 + QualityTypeRole = Qt.UserRole + 2 + LayerHeightRole = Qt.UserRole + 3 + AvailableRole = Qt.UserRole + 4 + IntentRole = Qt.UserRole + 5 + + def __init__(self, parent: Optional[QObject] = None) -> None: + super().__init__(parent) + + self.addRoleName(self.NameRole, "name") + self.addRoleName(self.QualityTypeRole, "quality_type") + self.addRoleName(self.LayerHeightRole, "layer_height") + self.addRoleName(self.AvailableRole, "available") + self.addRoleName(self.IntentRole, "intent_category") + + self._intent_category = "engineering" + + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.globalContainerChanged.connect(self._update) + machine_manager.extruderChanged.connect(self._update) # We also need to update if an extruder gets disabled + ContainerRegistry.getInstance().containerAdded.connect(self._onChanged) + ContainerRegistry.getInstance().containerRemoved.connect(self._onChanged) + self._layer_height_unit = "" # This is cached + self._update() + + intentCategoryChanged = pyqtSignal() + + def setIntentCategory(self, new_category: str) -> None: + if self._intent_category != new_category: + self._intent_category = new_category + self.intentCategoryChanged.emit() + self._update() + + @pyqtProperty(str, fset = setIntentCategory, notify = intentCategoryChanged) + def intentCategory(self) -> str: + return self._intent_category + + def _onChanged(self, container): + if container.getMetaDataEntry("type") == "intent": + self._update() + + def _update(self) -> None: + new_items = [] # type: List[Dict[str, Any]] + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + self.setItems(new_items) + return + quality_groups = ContainerTree.getInstance().getCurrentQualityGroups() + + material_nodes = self._getActiveMaterials() + + added_quality_type_set = set() # type: Set[str] + for material_node in material_nodes: + intents = self._getIntentsForMaterial(material_node, quality_groups) + for intent in intents: + if intent["quality_type"] not in added_quality_type_set: + new_items.append(intent) + added_quality_type_set.add(intent["quality_type"]) + + # Now that we added all intents that we found something for, ensure that we set add ticks (and layer_heights) + # for all groups that we don't have anything for (and set it to not available) + for quality_type, quality_group in quality_groups.items(): + # Add the intents that are of the correct category + if quality_type not in added_quality_type_set: + layer_height = fetchLayerHeight(quality_group) + new_items.append({"name": "Unavailable", + "quality_type": quality_type, + "layer_height": layer_height, + "intent_category": self._intent_category, + "available": False}) + added_quality_type_set.add(quality_type) + + new_items = sorted(new_items, key = lambda x: x["layer_height"]) + self.setItems(new_items) + + ## Get the active materials for all extruders. No duplicates will be returned + def _getActiveMaterials(self) -> Set["MaterialNode"]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return set() + + container_tree = ContainerTree.getInstance() + machine_node = container_tree.machines[global_stack.definition.getId()] + nodes = set() # type: Set[MaterialNode] + + for extruder in global_stack.extruderList: + active_variant_name = extruder.variant.getMetaDataEntry("name") + if active_variant_name not in machine_node.variants: + Logger.log("w", "Could not find the variant %s", active_variant_name) + continue + active_variant_node = machine_node.variants[active_variant_name] + active_material_node = active_variant_node.materials[extruder.material.getMetaDataEntry("base_file")] + nodes.add(active_material_node) + + return nodes + + def _getIntentsForMaterial(self, active_material_node: "MaterialNode", quality_groups: Dict[str, "QualityGroup"]) -> List[Dict[str, Any]]: + extruder_intents = [] # type: List[Dict[str, Any]] + + for quality_id, quality_node in active_material_node.qualities.items(): + if quality_node.quality_type not in quality_groups: # Don't add the empty quality type (or anything else that would crash, defensively). + continue + quality_group = quality_groups[quality_node.quality_type] + layer_height = fetchLayerHeight(quality_group) + + for intent_id, intent_node in quality_node.intents.items(): + if intent_node.intent_category != self._intent_category: + continue + extruder_intents.append({"name": quality_group.name, + "quality_type": quality_group.quality_type, + "layer_height": layer_height, + "available": quality_group.is_available, + "intent_category": self._intent_category + }) + return extruder_intents + + def __repr__(self): + return str(self.items) diff --git a/cura/Machines/Models/IntentTranslations.py b/cura/Machines/Models/IntentTranslations.py new file mode 100644 index 0000000000..050fb1de56 --- /dev/null +++ b/cura/Machines/Models/IntentTranslations.py @@ -0,0 +1,24 @@ +import collections +from typing import Dict, Optional + +from UM.i18n import i18nCatalog +from typing import Dict, Optional +catalog = i18nCatalog("cura") + + +intent_translations = collections.OrderedDict() # type: collections.OrderedDict[str, Dict[str, Optional[str]]] +intent_translations["default"] = { + "name": catalog.i18nc("@label", "Default") +} +intent_translations["visual"] = { + "name": catalog.i18nc("@label", "Visual"), + "description": catalog.i18nc("@text", "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality.") +} +intent_translations["engineering"] = { + "name": catalog.i18nc("@label", "Engineering"), + "description": catalog.i18nc("@text", "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances.") +} +intent_translations["quick"] = { + "name": catalog.i18nc("@label", "Draft"), + "description": catalog.i18nc("@text", "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction.") +} diff --git a/cura/Machines/Models/MachineModelUtils.py b/cura/Machines/Models/MachineModelUtils.py new file mode 100644 index 0000000000..a23b1ff3a5 --- /dev/null +++ b/cura/Machines/Models/MachineModelUtils.py @@ -0,0 +1,37 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import TYPE_CHECKING + +from UM.Settings.SettingFunction import SettingFunction + +if TYPE_CHECKING: + from cura.Machines.QualityGroup import QualityGroup + +layer_height_unit = "" + + +def fetchLayerHeight(quality_group: "QualityGroup") -> float: + from cura.CuraApplication import CuraApplication + global_stack = CuraApplication.getInstance().getMachineManager().activeMachine + + default_layer_height = global_stack.definition.getProperty("layer_height", "value") + + # Get layer_height from the quality profile for the GlobalStack + if quality_group.node_for_global is None: + return float(default_layer_height) + container = quality_group.node_for_global.container + + layer_height = default_layer_height + if container and container.hasProperty("layer_height", "value"): + layer_height = container.getProperty("layer_height", "value") + else: + # Look for layer_height in the GlobalStack from material -> definition + container = global_stack.definition + if container and container.hasProperty("layer_height", "value"): + layer_height = container.getProperty("layer_height", "value") + + if isinstance(layer_height, SettingFunction): + layer_height = layer_height(global_stack) + + return float(layer_height) diff --git a/cura/Machines/Models/MaterialBrandsModel.py b/cura/Machines/Models/MaterialBrandsModel.py index c4721db5f7..184d27f390 100644 --- a/cura/Machines/Models/MaterialBrandsModel.py +++ b/cura/Machines/Models/MaterialBrandsModel.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt, pyqtSignal @@ -29,8 +29,7 @@ class MaterialBrandsModel(BaseMaterialsModel): def _update(self): if not self._canUpdate(): return - # Get updated list of favorites - self._favorite_ids = self._material_manager.getFavorites() + super()._update() brand_item_list = [] brand_group_dict = {} @@ -55,7 +54,8 @@ class MaterialBrandsModel(BaseMaterialsModel): # Now handle the individual materials item = self._createMaterialItem(root_material_id, container_node) - brand_group_dict[brand][material_type].append(item) + if item: + brand_group_dict[brand][material_type].append(item) # Part 2: Organize the tree into models # diff --git a/cura/Machines/Models/MaterialManagementModel.py b/cura/Machines/Models/MaterialManagementModel.py new file mode 100644 index 0000000000..f00b81e987 --- /dev/null +++ b/cura/Machines/Models/MaterialManagementModel.py @@ -0,0 +1,246 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import copy # To duplicate materials. +from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot # To allow the preference page proxy to be used from the actual preferences page. +from typing import Any, Dict, Optional, TYPE_CHECKING +import uuid # To generate new GUIDs for new materials. + +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Signal import postponeSignals, CompressTechnique + +import cura.CuraApplication # Imported like this to prevent circular imports. +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.CuraContainerRegistry import CuraContainerRegistry # To find the sets of materials belonging to each other, and currently loaded extruder stacks. + +if TYPE_CHECKING: + from cura.Machines.MaterialNode import MaterialNode + +catalog = i18nCatalog("cura") + +## Proxy class to the materials page in the preferences. +# +# This class handles the actions in that page, such as creating new materials, +# renaming them, etc. +class MaterialManagementModel(QObject): + ## Triggered when a favorite is added or removed. + # \param The base file of the material is provided as parameter when this + # emits. + favoritesChanged = pyqtSignal(str) + + ## Can a certain material be deleted, or is it still in use in one of the + # container stacks anywhere? + # + # We forbid the user from deleting a material if it's in use in any stack. + # Deleting it while it's in use can lead to corrupted stacks. In the + # future we might enable this functionality again (deleting the material + # from those stacks) but for now it is easier to prevent the user from + # doing this. + # \param material_node The ContainerTree node of the material to check. + # \return Whether or not the material can be removed. + @pyqtSlot("QVariant", result = bool) + def canMaterialBeRemoved(self, material_node: "MaterialNode") -> bool: + container_registry = CuraContainerRegistry.getInstance() + ids_to_remove = {metadata.get("id", "") for metadata in container_registry.findInstanceContainersMetadata(base_file = material_node.base_file)} + for extruder_stack in container_registry.findContainerStacks(type = "extruder_train"): + if extruder_stack.material.getId() in ids_to_remove: + return False + return True + + ## Change the user-visible name of a material. + # \param material_node The ContainerTree node of the material to rename. + # \param name The new name for the material. + @pyqtSlot("QVariant", str) + def setMaterialName(self, material_node: "MaterialNode", name: str) -> None: + container_registry = CuraContainerRegistry.getInstance() + root_material_id = material_node.base_file + if container_registry.isReadOnly(root_material_id): + Logger.log("w", "Cannot set name of read-only container %s.", root_material_id) + return + return container_registry.findContainers(id = root_material_id)[0].setName(name) + + ## Deletes a material from Cura. + # + # This function does not do any safety checking any more. Please call this + # function only if: + # - The material is not read-only. + # - The material is not used in any stacks. + # If the material was not lazy-loaded yet, this will fully load the + # container. When removing this material node, all other materials with + # the same base fill will also be removed. + # \param material_node The material to remove. + @pyqtSlot("QVariant") + def removeMaterial(self, material_node: "MaterialNode") -> None: + container_registry = CuraContainerRegistry.getInstance() + materials_this_base_file = container_registry.findContainersMetadata(base_file = material_node.base_file) + + # The material containers belonging to the same material file are supposed to work together. This postponeSignals() + # does two things: + # - optimizing the signal emitting. + # - making sure that the signals will only be emitted after all the material containers have been removed. + with postponeSignals(container_registry.containerRemoved, compress = CompressTechnique.CompressPerParameterValue): + # CURA-6886: Some containers may not have been loaded. If remove one material container, its material file + # will be removed. If later we remove a sub-material container which hasn't been loaded previously, it will + # crash because removeContainer() requires to load the container first, but the material file was already + # gone. + for material_metadata in materials_this_base_file: + container_registry.findInstanceContainers(id = material_metadata["id"]) + for material_metadata in materials_this_base_file: + container_registry.removeContainer(material_metadata["id"]) + + ## Creates a duplicate of a material with the same GUID and base_file + # metadata. + # \param base_file: The base file of the material to duplicate. + # \param new_base_id A new material ID for the base material. The IDs of + # the submaterials will be based off this one. If not provided, a material + # ID will be generated automatically. + # \param new_metadata Metadata for the new material. If not provided, this + # will be duplicated from the original material. + # \return The root material ID of the duplicate material. + def duplicateMaterialByBaseFile(self, base_file: str, new_base_id: Optional[str] = None, + new_metadata: Optional[Dict[str, Any]] = None) -> Optional[str]: + container_registry = CuraContainerRegistry.getInstance() + + root_materials = container_registry.findContainers(id = base_file) + if not root_materials: + Logger.log("i", "Unable to duplicate the root material with ID {root_id}, because it doesn't exist.".format(root_id = base_file)) + return None + root_material = root_materials[0] + + # Ensure that all settings are saved. + application = cura.CuraApplication.CuraApplication.getInstance() + application.saveSettings() + + # Create a new ID and container to hold the data. + if new_base_id is None: + new_base_id = container_registry.uniqueName(root_material.getId()) + new_root_material = copy.deepcopy(root_material) + new_root_material.getMetaData()["id"] = new_base_id + new_root_material.getMetaData()["base_file"] = new_base_id + if new_metadata is not None: + new_root_material.getMetaData().update(new_metadata) + new_containers = [new_root_material] + + # Clone all submaterials. + for container_to_copy in container_registry.findInstanceContainers(base_file = base_file): + if container_to_copy.getId() == base_file: + continue # We already have that one. Skip it. + new_id = new_base_id + definition = container_to_copy.getMetaDataEntry("definition") + if definition != "fdmprinter": + new_id += "_" + definition + variant_name = container_to_copy.getMetaDataEntry("variant_name") + if variant_name: + new_id += "_" + variant_name.replace(" ", "_") + + new_container = copy.deepcopy(container_to_copy) + new_container.getMetaData()["id"] = new_id + new_container.getMetaData()["base_file"] = new_base_id + if new_metadata is not None: + new_container.getMetaData().update(new_metadata) + new_containers.append(new_container) + + # CURA-6863: Nodes in ContainerTree will be updated upon ContainerAdded signals, one at a time. It will use the + # best fit material container at the time it sees one. For example, if you duplicate and get generic_pva #2, + # if the node update function sees the containers in the following order: + # + # - generic_pva #2 + # - generic_pva #2_um3_aa04 + # + # It will first use "generic_pva #2" because that's the best fit it has ever seen, and later "generic_pva #2_um3_aa04" + # once it sees that. Because things run in the Qt event loop, they don't happen at the same time. This means if + # between those two events, the ContainerTree will have nodes that contain invalid data. + # + # This sort fixes the problem by emitting the most specific containers first. + new_containers = sorted(new_containers, key = lambda x: x.getId(), reverse = True) + + # Optimization. Serving the same purpose as the postponeSignals() in removeMaterial() + # postpone the signals emitted when duplicating materials. This is easier on the event loop; changes the + # behavior to be like a transaction. Prevents concurrency issues. + with postponeSignals(container_registry.containerAdded, compress=CompressTechnique.CompressPerParameterValue): + for container_to_add in new_containers: + container_to_add.setDirty(True) + container_registry.addContainer(container_to_add) + + # If the duplicated material was favorite then the new material should also be added to the favorites. + favorites_set = set(application.getPreferences().getValue("cura/favorite_materials").split(";")) + if base_file in favorites_set: + favorites_set.add(new_base_id) + application.getPreferences().setValue("cura/favorite_materials", ";".join(favorites_set)) + + return new_base_id + + ## Creates a duplicate of a material with the same GUID and base_file + # metadata. + # \param material_node The node representing the material to duplicate. + # \param new_base_id A new material ID for the base material. The IDs of + # the submaterials will be based off this one. If not provided, a material + # ID will be generated automatically. + # \param new_metadata Metadata for the new material. If not provided, this + # will be duplicated from the original material. + # \return The root material ID of the duplicate material. + @pyqtSlot("QVariant", result = str) + def duplicateMaterial(self, material_node: "MaterialNode", new_base_id: Optional[str] = None, + new_metadata: Optional[Dict[str, Any]] = None) -> Optional[str]: + return self.duplicateMaterialByBaseFile(material_node.base_file, new_base_id, new_metadata) + + ## Create a new material by cloning the preferred material for the current + # material diameter and generate a new GUID. + # + # The material type is explicitly left to be the one from the preferred + # material, since this allows the user to still have SOME profiles to work + # with. + # \return The ID of the newly created material. + @pyqtSlot(result = str) + def createMaterial(self) -> str: + # Ensure all settings are saved. + application = cura.CuraApplication.CuraApplication.getInstance() + application.saveSettings() + + # Find the preferred material. + extruder_stack = application.getMachineManager().activeStack + active_variant_name = extruder_stack.variant.getName() + approximate_diameter = int(extruder_stack.approximateMaterialDiameter) + global_container_stack = application.getGlobalContainerStack() + if not global_container_stack: + return "" + machine_node = ContainerTree.getInstance().machines[global_container_stack.definition.getId()] + preferred_material_node = machine_node.variants[active_variant_name].preferredMaterial(approximate_diameter) + + # Create a new ID & new metadata for the new material. + new_id = CuraContainerRegistry.getInstance().uniqueName("custom_material") + new_metadata = {"name": catalog.i18nc("@label", "Custom Material"), + "brand": catalog.i18nc("@label", "Custom"), + "GUID": str(uuid.uuid4()), + } + + self.duplicateMaterial(preferred_material_node, new_base_id = new_id, new_metadata = new_metadata) + return new_id + + ## Adds a certain material to the favorite materials. + # \param material_base_file The base file of the material to add. + @pyqtSlot(str) + def addFavorite(self, material_base_file: str) -> None: + application = cura.CuraApplication.CuraApplication.getInstance() + favorites = application.getPreferences().getValue("cura/favorite_materials").split(";") + if material_base_file not in favorites: + favorites.append(material_base_file) + application.getPreferences().setValue("cura/favorite_materials", ";".join(favorites)) + application.saveSettings() + self.favoritesChanged.emit(material_base_file) + + ## Removes a certain material from the favorite materials. + # + # If the material was not in the favorite materials, nothing happens. + @pyqtSlot(str) + def removeFavorite(self, material_base_file: str) -> None: + application = cura.CuraApplication.CuraApplication.getInstance() + favorites = application.getPreferences().getValue("cura/favorite_materials").split(";") + try: + favorites.remove(material_base_file) + application.getPreferences().setValue("cura/favorite_materials", ";".join(favorites)) + application.saveSettings() + self.favoritesChanged.emit(material_base_file) + except ValueError: # Material was not in the favorites list. + Logger.log("w", "Material {material_base_file} was already not a favorite material.".format(material_base_file = material_base_file)) diff --git a/cura/Machines/Models/NozzleModel.py b/cura/Machines/Models/NozzleModel.py index 785ff5b9b9..5f7f8b02f5 100644 --- a/cura/Machines/Models/NozzleModel.py +++ b/cura/Machines/Models/NozzleModel.py @@ -1,14 +1,12 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import Qt -from UM.Application import Application from UM.Logger import Logger from UM.Qt.ListModel import ListModel -from UM.Util import parseBool - -from cura.Machines.VariantType import VariantType +import cura.CuraApplication # Imported like this to prevent circular dependencies. +from cura.Machines.ContainerTree import ContainerTree class NozzleModel(ListModel): @@ -23,33 +21,24 @@ class NozzleModel(ListModel): self.addRoleName(self.HotendNameRole, "hotend_name") self.addRoleName(self.ContainerNodeRole, "container_node") - self._application = Application.getInstance() - self._machine_manager = self._application.getMachineManager() - self._variant_manager = self._application.getVariantManager() - - self._machine_manager.globalContainerChanged.connect(self._update) + cura.CuraApplication.CuraApplication.getInstance().getMachineManager().globalContainerChanged.connect(self._update) self._update() def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - global_stack = self._machine_manager.activeMachine + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() if global_stack is None: self.setItems([]) return + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] - has_variants = parseBool(global_stack.getMetaDataEntry("has_variants", False)) - if not has_variants: - self.setItems([]) - return - - variant_node_dict = self._variant_manager.getVariantNodes(global_stack, VariantType.NOZZLE) - if not variant_node_dict: + if not machine_node.has_variants: self.setItems([]) return item_list = [] - for hotend_name, container_node in sorted(variant_node_dict.items(), key = lambda i: i[0].upper()): + for hotend_name, container_node in sorted(machine_node.variants.items(), key = lambda i: i[0].upper()): item = {"id": hotend_name, "hotend_name": hotend_name, "container_node": container_node @@ -57,4 +46,4 @@ class NozzleModel(ListModel): item_list.append(item) - self.setItems(item_list) + self.setItems(item_list) \ No newline at end of file diff --git a/cura/Machines/Models/QualityManagementModel.py b/cura/Machines/Models/QualityManagementModel.py index 315ab010bb..74dc8649d0 100644 --- a/cura/Machines/Models/QualityManagementModel.py +++ b/cura/Machines/Models/QualityManagementModel.py @@ -1,10 +1,30 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSlot +from typing import Any, cast, Dict, Optional, TYPE_CHECKING +from PyQt5.QtCore import pyqtSlot, QObject, Qt, QTimer -from UM.Qt.ListModel import ListModel from UM.Logger import Logger +from UM.Qt.ListModel import ListModel +from UM.Settings.InstanceContainer import InstanceContainer # To create new profiles. + +import cura.CuraApplication # Imported this way to prevent circular imports. +from cura.Settings.ContainerManager import ContainerManager +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.cura_empty_instance_containers import empty_quality_changes_container +from cura.Settings.IntentManager import IntentManager +from cura.Machines.Models.MachineModelUtils import fetchLayerHeight +from cura.Machines.Models.IntentTranslations import intent_translations + +from UM.i18n import i18nCatalog +catalog = i18nCatalog("cura") + +if TYPE_CHECKING: + from UM.Settings.Interfaces import ContainerInterface + from cura.Machines.QualityChangesGroup import QualityChangesGroup + from cura.Settings.ExtruderStack import ExtruderStack + from cura.Settings.GlobalStack import GlobalStack + # # This the QML model for the quality management page. @@ -13,26 +33,257 @@ class QualityManagementModel(ListModel): NameRole = Qt.UserRole + 1 IsReadOnlyRole = Qt.UserRole + 2 QualityGroupRole = Qt.UserRole + 3 - QualityChangesGroupRole = Qt.UserRole + 4 + QualityTypeRole = Qt.UserRole + 4 + QualityChangesGroupRole = Qt.UserRole + 5 + IntentCategoryRole = Qt.UserRole + 6 + SectionNameRole = Qt.UserRole + 7 - def __init__(self, parent = None): + def __init__(self, parent: Optional["QObject"] = None) -> None: super().__init__(parent) self.addRoleName(self.NameRole, "name") self.addRoleName(self.IsReadOnlyRole, "is_read_only") self.addRoleName(self.QualityGroupRole, "quality_group") + self.addRoleName(self.QualityTypeRole, "quality_type") self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") + self.addRoleName(self.IntentCategoryRole, "intent_category") + self.addRoleName(self.SectionNameRole, "section_name") - from cura.CuraApplication import CuraApplication - self._container_registry = CuraApplication.getInstance().getContainerRegistry() - self._machine_manager = CuraApplication.getInstance().getMachineManager() - self._extruder_manager = CuraApplication.getInstance().getExtruderManager() - self._quality_manager = CuraApplication.getInstance().getQualityManager() + application = cura.CuraApplication.CuraApplication.getInstance() + container_registry = application.getContainerRegistry() + self._machine_manager = application.getMachineManager() + self._machine_manager.activeQualityGroupChanged.connect(self._onChange) + self._machine_manager.activeStackChanged.connect(self._onChange) + self._machine_manager.extruderChanged.connect(self._onChange) + self._machine_manager.globalContainerChanged.connect(self._onChange) - self._machine_manager.globalContainerChanged.connect(self._update) - self._quality_manager.qualitiesUpdated.connect(self._update) + self._extruder_manager = application.getExtruderManager() + self._extruder_manager.extrudersChanged.connect(self._onChange) - self._update() + container_registry.containerAdded.connect(self._qualityChangesListChanged) + container_registry.containerRemoved.connect(self._qualityChangesListChanged) + container_registry.containerMetaDataChanged.connect(self._qualityChangesListChanged) + + self._update_timer = QTimer() + self._update_timer.setInterval(100) + self._update_timer.setSingleShot(True) + self._update_timer.timeout.connect(self._update) + + self._onChange() + + def _onChange(self) -> None: + self._update_timer.start() + + ## Deletes a custom profile. It will be gone forever. + # \param quality_changes_group The quality changes group representing the + # profile to delete. + @pyqtSlot(QObject) + def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: + Logger.log("i", "Removing quality changes group {group_name}".format(group_name = quality_changes_group.name)) + removed_quality_changes_ids = set() + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + for metadata in [quality_changes_group.metadata_for_global] + list(quality_changes_group.metadata_per_extruder.values()): + container_id = metadata["id"] + container_registry.removeContainer(container_id) + removed_quality_changes_ids.add(container_id) + + # Reset all machines that have activated this custom profile. + for global_stack in container_registry.findContainerStacks(type = "machine"): + if global_stack.qualityChanges.getId() in removed_quality_changes_ids: + global_stack.qualityChanges = empty_quality_changes_container + for extruder_stack in container_registry.findContainerStacks(type = "extruder_train"): + if extruder_stack.qualityChanges.getId() in removed_quality_changes_ids: + extruder_stack.qualityChanges = empty_quality_changes_container + + ## Rename a custom profile. + # + # Because the names must be unique, the new name may not actually become + # the name that was given. The actual name is returned by this function. + # \param quality_changes_group The custom profile that must be renamed. + # \param new_name The desired name for the profile. + # \return The actual new name of the profile, after making the name + # unique. + @pyqtSlot(QObject, str, result = str) + def renameQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", new_name: str) -> str: + Logger.log("i", "Renaming QualityChangesGroup {old_name} to {new_name}.".format(old_name = quality_changes_group.name, new_name = new_name)) + if new_name == quality_changes_group.name: + Logger.log("i", "QualityChangesGroup name {name} unchanged.".format(name = quality_changes_group.name)) + return new_name + + application = cura.CuraApplication.CuraApplication.getInstance() + container_registry = application.getContainerRegistry() + new_name = container_registry.uniqueName(new_name) + # CURA-6842 + # FIXME: setName() will trigger metaDataChanged signal that are connected with type Qt.AutoConnection. In this + # case, setName() will trigger direct connections which in turn causes the quality changes group and the models + # to update. Because multiple containers need to be renamed, and every time a container gets renamed, updates + # gets triggered and this results in partial updates. For example, if we rename the global quality changes + # container first, the rest of the system still thinks that I have selected "my_profile" instead of + # "my_new_profile", but an update already gets triggered, and the quality changes group that's selected will + # have no container for the global stack, because "my_profile" just got renamed to "my_new_profile". This results + # in crashes because the rest of the system assumes that all data in a QualityChangesGroup will be correct. + # + # Renaming the container for the global stack in the end seems to be ok, because the assumption is mostly based + # on the quality changes container for the global stack. + for metadata in quality_changes_group.metadata_per_extruder.values(): + extruder_container = cast(InstanceContainer, container_registry.findContainers(id = metadata["id"])[0]) + extruder_container.setName(new_name) + global_container = cast(InstanceContainer, container_registry.findContainers(id=quality_changes_group.metadata_for_global["id"])[0]) + global_container.setName(new_name) + + quality_changes_group.name = new_name + + application.getMachineManager().activeQualityChanged.emit() + application.getMachineManager().activeQualityGroupChanged.emit() + + return new_name + + ## Duplicates a given quality profile OR quality changes profile. + # \param new_name The desired name of the new profile. This will be made + # unique, so it might end up with a different name. + # \param quality_model_item The item of this model to duplicate, as + # dictionary. See the descriptions of the roles of this list model. + @pyqtSlot(str, "QVariantMap") + def duplicateQualityChanges(self, new_name: str, quality_model_item: Dict[str, Any]) -> None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + Logger.log("i", "No active global stack, cannot duplicate quality (changes) profile.") + return + + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + new_name = container_registry.uniqueName(new_name) + + intent_category = quality_model_item["intent_category"] + quality_group = quality_model_item["quality_group"] + quality_changes_group = quality_model_item["quality_changes_group"] + if quality_changes_group is None: + # Create global quality changes only. + new_quality_changes = self._createQualityChanges(quality_group.quality_type, intent_category, new_name, + global_stack, extruder_stack = None) + container_registry.addContainer(new_quality_changes) + else: + for metadata in [quality_changes_group.metadata_for_global] + list(quality_changes_group.metadata_per_extruder.values()): + containers = container_registry.findContainers(id = metadata["id"]) + if not containers: + continue + container = containers[0] + new_id = container_registry.uniqueName(container.getId()) + container_registry.addContainer(container.duplicate(new_id, new_name)) + + ## Create quality changes containers from the user containers in the active + # stacks. + # + # This will go through the global and extruder stacks and create + # quality_changes containers from the user containers in each stack. These + # then replace the quality_changes containers in the stack and clear the + # user settings. + # \param base_name The new name for the quality changes profile. The final + # name of the profile might be different from this, because it needs to be + # made unique. + @pyqtSlot(str) + def createQualityChanges(self, base_name: str) -> None: + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + + global_stack = machine_manager.activeMachine + if not global_stack: + return + + active_quality_name = machine_manager.activeQualityOrQualityChangesName + if active_quality_name == "": + Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId()) + return + + machine_manager.blurSettings.emit() + if base_name is None or base_name == "": + base_name = active_quality_name + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + unique_name = container_registry.uniqueName(base_name) + + # Go through the active stacks and create quality_changes containers from the user containers. + container_manager = ContainerManager.getInstance() + stack_list = [global_stack] + list(global_stack.extruders.values()) + for stack in stack_list: + quality_container = stack.quality + quality_changes_container = stack.qualityChanges + if not quality_container or not quality_changes_container: + Logger.log("w", "No quality or quality changes container found in stack %s, ignoring it", stack.getId()) + continue + + extruder_stack = None + intent_category = None + if stack.getMetaDataEntry("position") is not None: + extruder_stack = stack + intent_category = stack.intent.getMetaDataEntry("intent_category") + new_changes = self._createQualityChanges(quality_container.getMetaDataEntry("quality_type"), intent_category, unique_name, global_stack, extruder_stack) + container_manager._performMerge(new_changes, quality_changes_container, clear_settings = False) + container_manager._performMerge(new_changes, stack.userChanges) + + container_registry.addContainer(new_changes) + + ## Create a quality changes container with the given set-up. + # \param quality_type The quality type of the new container. + # \param intent_category The intent category of the new container. + # \param new_name The name of the container. This name must be unique. + # \param machine The global stack to create the profile for. + # \param extruder_stack The extruder stack to create the profile for. If + # not provided, only a global container will be created. + def _createQualityChanges(self, quality_type: str, intent_category: Optional[str], new_name: str, machine: "GlobalStack", extruder_stack: Optional["ExtruderStack"]) -> "InstanceContainer": + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + base_id = machine.definition.getId() if extruder_stack is None else extruder_stack.getId() + new_id = base_id + "_" + new_name + new_id = new_id.lower().replace(" ", "_") + new_id = container_registry.uniqueName(new_id) + + # Create a new quality_changes container for the quality. + quality_changes = InstanceContainer(new_id) + quality_changes.setName(new_name) + quality_changes.setMetaDataEntry("type", "quality_changes") + quality_changes.setMetaDataEntry("quality_type", quality_type) + if intent_category is not None: + quality_changes.setMetaDataEntry("intent_category", intent_category) + + # If we are creating a container for an extruder, ensure we add that to the container. + if extruder_stack is not None: + quality_changes.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) + + # If the machine specifies qualities should be filtered, ensure we match the current criteria. + machine_definition_id = ContainerTree.getInstance().machines[machine.definition.getId()].quality_definition + quality_changes.setDefinition(machine_definition_id) + + quality_changes.setMetaDataEntry("setting_version", cura.CuraApplication.CuraApplication.getInstance().SettingVersion) + return quality_changes + + ## Triggered when any container changed. + # + # This filters the updates to the container manager: When it applies to + # the list of quality changes, we need to update our list. + def _qualityChangesListChanged(self, container: "ContainerInterface") -> None: + if container.getMetaDataEntry("type") == "quality_changes": + self._update() + + @pyqtSlot("QVariantMap", result = str) + def getQualityItemDisplayName(self, quality_model_item: Dict[str, Any]) -> str: + quality_group = quality_model_item["quality_group"] + is_read_only = quality_model_item["is_read_only"] + intent_category = quality_model_item["intent_category"] + + quality_level_name = "Not Supported" + if quality_group is not None: + quality_level_name = quality_group.name + + display_name = quality_level_name + + if intent_category != "default": + intent_display_name = catalog.i18nc("@label", intent_category.capitalize()) + display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, + the_rest = display_name) + + # A custom quality + if not is_read_only: + display_name = "{custom_profile_name} - {the_rest}".format(custom_profile_name = quality_model_item["name"], + the_rest = display_name) + + return display_name def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) @@ -42,38 +293,71 @@ class QualityManagementModel(ListModel): self.setItems([]) return - quality_group_dict = self._quality_manager.getQualityGroups(global_stack) - quality_changes_group_dict = self._quality_manager.getQualityChangesGroups(global_stack) + container_tree = ContainerTree.getInstance() + quality_group_dict = container_tree.getCurrentQualityGroups() + quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() available_quality_types = set(quality_type for quality_type, quality_group in quality_group_dict.items() if quality_group.is_available) - if not available_quality_types and not quality_changes_group_dict: + if not available_quality_types and not quality_changes_group_list: # Nothing to show self.setItems([]) return item_list = [] - # Create quality group items + # Create quality group items (intent category = "default") for quality_group in quality_group_dict.values(): if not quality_group.is_available: continue + layer_height = fetchLayerHeight(quality_group) + item = {"name": quality_group.name, "is_read_only": True, "quality_group": quality_group, - "quality_changes_group": None} + "quality_type": quality_group.quality_type, + "quality_changes_group": None, + "intent_category": "default", + "section_name": catalog.i18nc("@label", "Default"), + "layer_height": layer_height, # layer_height is only used for sorting + } item_list.append(item) - # Sort by quality names - item_list = sorted(item_list, key = lambda x: x["name"].upper()) + # Sort by layer_height for built-in qualities + item_list = sorted(item_list, key = lambda x: x["layer_height"]) + + # Create intent items (non-default) + available_intent_list = IntentManager.getInstance().getCurrentAvailableIntents() + available_intent_list = [i for i in available_intent_list if i[0] != "default"] + result = [] + for intent_category, quality_type in available_intent_list: + result.append({ + "name": quality_group_dict[quality_type].name, # Use the quality name as the display name + "is_read_only": True, + "quality_group": quality_group_dict[quality_type], + "quality_type": quality_type, + "quality_changes_group": None, + "intent_category": intent_category, + "section_name": catalog.i18nc("@label", intent_translations.get(intent_category, {}).get("name", catalog.i18nc("@label", "Unknown"))), + }) + # Sort by quality_type for each intent category + + result = sorted(result, key = lambda x: (list(intent_translations).index(x["intent_category"]), x["quality_type"])) + item_list += result # Create quality_changes group items quality_changes_item_list = [] - for quality_changes_group in quality_changes_group_dict.values(): + for quality_changes_group in quality_changes_group_list: + # CURA-6913 Note that custom qualities can be based on "not supported", so the quality group can be None. quality_group = quality_group_dict.get(quality_changes_group.quality_type) + quality_type = quality_changes_group.quality_type item = {"name": quality_changes_group.name, "is_read_only": False, "quality_group": quality_group, - "quality_changes_group": quality_changes_group} + "quality_type": quality_type, + "quality_changes_group": quality_changes_group, + "intent_category": quality_changes_group.intent_category, + "section_name": catalog.i18nc("@label", "Custom profiles"), + } quality_changes_item_list.append(item) # Sort quality_changes items by names and append to the item list diff --git a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py index deabb6e9ba..3a79ceeaf1 100644 --- a/cura/Machines/Models/QualityProfilesDropDownMenuModel.py +++ b/cura/Machines/Models/QualityProfilesDropDownMenuModel.py @@ -1,14 +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 PyQt5.QtCore import Qt, QTimer -from UM.Application import Application +import cura.CuraApplication # Imported this way to prevent circular dependencies. from UM.Logger import Logger from UM.Qt.ListModel import ListModel -from UM.Settings.SettingFunction import SettingFunction - -from cura.Machines.QualityManager import QualityGroup +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.Models.MachineModelUtils import fetchLayerHeight # @@ -36,14 +35,17 @@ class QualityProfilesDropDownMenuModel(ListModel): self.addRoleName(self.QualityChangesGroupRole, "quality_changes_group") self.addRoleName(self.IsExperimentalRole, "is_experimental") - self._application = Application.getInstance() - self._machine_manager = self._application.getMachineManager() - self._quality_manager = Application.getInstance().getQualityManager() + application = cura.CuraApplication.CuraApplication.getInstance() + machine_manager = application.getMachineManager() - self._application.globalContainerStackChanged.connect(self._onChange) - self._machine_manager.activeQualityGroupChanged.connect(self._onChange) - self._machine_manager.extruderChanged.connect(self._onChange) - self._quality_manager.qualitiesUpdated.connect(self._onChange) + application.globalContainerStackChanged.connect(self._onChange) + machine_manager.activeQualityGroupChanged.connect(self._onChange) + machine_manager.activeMaterialChanged.connect(self._onChange) + machine_manager.activeVariantChanged.connect(self._onChange) + machine_manager.extruderChanged.connect(self._onChange) + + extruder_manager = application.getExtruderManager() + extruder_manager.extrudersChanged.connect(self._onChange) self._layer_height_unit = "" # This is cached @@ -60,25 +62,36 @@ class QualityProfilesDropDownMenuModel(ListModel): def _update(self): Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) - global_stack = self._machine_manager.activeMachine + # CURA-6836 + # LabelBar is a repeater that creates labels for quality layer heights. Because of an optimization in + # UM.ListModel, the model will not remove all items and recreate new ones every time there's an update. + # Because LabelBar uses Repeater with Labels anchoring to "undefined" in certain cases, the anchoring will be + # kept the same as before. + self.setItems([]) + + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() if global_stack is None: self.setItems([]) Logger.log("d", "No active GlobalStack, set quality profile model as empty.") return + if not self._layer_height_unit: + unit = global_stack.definition.getProperty("layer_height", "unit") + if not unit: + unit = "" + self._layer_height_unit = unit + # Check for material compatibility - if not self._machine_manager.activeMaterialsCompatible(): + if not cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeMaterialsCompatible(): Logger.log("d", "No active material compatibility, set quality profile model as empty.") self.setItems([]) return - quality_group_dict = self._quality_manager.getQualityGroups(global_stack) + quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups() item_list = [] - for key in sorted(quality_group_dict): - quality_group = quality_group_dict[key] - - layer_height = self._fetchLayerHeight(quality_group) + for quality_group in quality_group_dict.values(): + layer_height = fetchLayerHeight(quality_group) item = {"name": quality_group.name, "quality_type": quality_group.quality_type, @@ -94,32 +107,3 @@ class QualityProfilesDropDownMenuModel(ListModel): item_list = sorted(item_list, key = lambda x: x["layer_height"]) self.setItems(item_list) - - def _fetchLayerHeight(self, quality_group: "QualityGroup") -> float: - global_stack = self._machine_manager.activeMachine - if not self._layer_height_unit: - unit = global_stack.definition.getProperty("layer_height", "unit") - if not unit: - unit = "" - self._layer_height_unit = unit - - default_layer_height = global_stack.definition.getProperty("layer_height", "value") - - # Get layer_height from the quality profile for the GlobalStack - if quality_group.node_for_global is None: - return float(default_layer_height) - container = quality_group.node_for_global.getContainer() - - layer_height = default_layer_height - if container and container.hasProperty("layer_height", "value"): - layer_height = container.getProperty("layer_height", "value") - else: - # Look for layer_height in the GlobalStack from material -> definition - container = global_stack.definition - if container and container.hasProperty("layer_height", "value"): - layer_height = container.getProperty("layer_height", "value") - - if isinstance(layer_height, SettingFunction): - layer_height = layer_height(global_stack) - - return float(layer_height) diff --git a/cura/Machines/Models/QualitySettingsModel.py b/cura/Machines/Models/QualitySettingsModel.py index 88005e69ca..6835ffb68f 100644 --- a/cura/Machines/Models/QualitySettingsModel.py +++ b/cura/Machines/Models/QualitySettingsModel.py @@ -1,9 +1,9 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtProperty, pyqtSignal, Qt -from UM.Application import Application +import cura.CuraApplication from UM.Logger import Logger from UM.Qt.ListModel import ListModel from UM.Settings.ContainerRegistry import ContainerRegistry @@ -35,15 +35,13 @@ class QualitySettingsModel(ListModel): self.addRoleName(self.CategoryRole, "category") self._container_registry = ContainerRegistry.getInstance() - self._application = Application.getInstance() - self._quality_manager = self._application.getQualityManager() + self._application = cura.CuraApplication.CuraApplication.getInstance() + self._application.getMachineManager().activeStackChanged.connect(self._update) self._selected_position = self.GLOBAL_STACK_POSITION #Must be either GLOBAL_STACK_POSITION or an extruder position (0, 1, etc.) self._selected_quality_item = None # The selected quality in the quality management page self._i18n_catalog = None - self._quality_manager.qualitiesUpdated.connect(self._update) - self._update() selectedPositionChanged = pyqtSignal() @@ -93,21 +91,33 @@ class QualitySettingsModel(ListModel): quality_node = quality_group.nodes_for_extruders.get(str(self._selected_position)) settings_keys = quality_group.getAllKeys() quality_containers = [] - if quality_node is not None and quality_node.getContainer() is not None: - quality_containers.append(quality_node.getContainer()) + if quality_node is not None and quality_node.container is not None: + quality_containers.append(quality_node.container) # Here, if the user has selected a quality changes, then "quality_changes_group" will not be None, and we fetch # the settings in that quality_changes_group. if quality_changes_group is not None: - if self._selected_position == self.GLOBAL_STACK_POSITION: - quality_changes_node = quality_changes_group.node_for_global + container_registry = ContainerRegistry.getInstance() + global_containers = container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"]) + global_container = None if len(global_containers) == 0 else global_containers[0] + extruders_containers = {pos: container_registry.findContainers(id = quality_changes_group.metadata_per_extruder[pos]["id"]) for pos in quality_changes_group.metadata_per_extruder} + extruders_container = {pos: None if not containers else containers[0] for pos, containers in extruders_containers.items()} + if self._selected_position == self.GLOBAL_STACK_POSITION and global_container: + quality_changes_metadata = global_container.getMetaData() else: - quality_changes_node = quality_changes_group.nodes_for_extruders.get(str(self._selected_position)) - if quality_changes_node is not None and quality_changes_node.getContainer() is not None: # it can be None if number of extruders are changed during runtime - quality_containers.insert(0, quality_changes_node.getContainer()) - settings_keys.update(quality_changes_group.getAllKeys()) + quality_changes_metadata = extruders_container.get(str(self._selected_position)) + if quality_changes_metadata is not None: # It can be None if number of extruders are changed during runtime. + container = container_registry.findContainers(id = quality_changes_metadata["id"]) + if container: + quality_containers.insert(0, container[0]) - # We iterate over all definitions instead of settings in a quality/qualtiy_changes group is because in the GUI, + if global_container: + settings_keys.update(global_container.getAllKeys()) + for container in extruders_container.values(): + if container: + settings_keys.update(container.getAllKeys()) + + # We iterate over all definitions instead of settings in a quality/quality_changes group is because in the GUI, # the settings are grouped together by categories, and we had to go over all the definitions to figure out # which setting belongs in which category. current_category = "" diff --git a/cura/Machines/Models/UserChangesModel.py b/cura/Machines/Models/UserChangesModel.py index e629295397..ec623f0f38 100644 --- a/cura/Machines/Models/UserChangesModel.py +++ b/cura/Machines/Models/UserChangesModel.py @@ -50,7 +50,7 @@ class UserChangesModel(ListModel): return stacks = [global_stack] - stacks.extend(global_stack.extruders.values()) + stacks.extend(global_stack.extruderList) # Check if the definition container has a translation file and ensure it's loaded. definition = global_stack.getBottom() diff --git a/cura/Machines/QualityChangesGroup.py b/cura/Machines/QualityChangesGroup.py index 7844b935dc..655060070b 100644 --- a/cura/Machines/QualityChangesGroup.py +++ b/cura/Machines/QualityChangesGroup.py @@ -1,33 +1,37 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import TYPE_CHECKING +from typing import Any, Dict, Optional -from UM.Application import Application -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage - -from .QualityGroup import QualityGroup - -if TYPE_CHECKING: - from cura.Machines.QualityNode import QualityNode +from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal -class QualityChangesGroup(QualityGroup): - def __init__(self, name: str, quality_type: str, parent = None) -> None: - super().__init__(name, quality_type, parent) - self._container_registry = Application.getInstance().getContainerRegistry() +## Data struct to group several quality changes instance containers together. +# +# Each group represents one "custom profile" as the user sees it, which +# contains an instance container for the global stack and one instance +# container per extruder. +class QualityChangesGroup(QObject): - def addNode(self, node: "QualityNode") -> None: - extruder_position = node.getMetaDataEntry("position") + def __init__(self, name: str, quality_type: str, intent_category: str, parent: Optional["QObject"] = None) -> None: + super().__init__(parent) + self._name = name + self.quality_type = quality_type + self.intent_category = intent_category + self.is_available = False + self.metadata_for_global = {} # type: Dict[str, Any] + self.metadata_per_extruder = {} # type: Dict[int, Dict[str, Any]] - if extruder_position is None and self.node_for_global is not None or extruder_position in self.nodes_for_extruders: #We would be overwriting another node. - ConfigurationErrorMessage.getInstance().addFaultyContainers(node.getMetaDataEntry("id")) - return + nameChanged = pyqtSignal() - if extruder_position is None: # Then we're a global quality changes profile. - self.node_for_global = node - else: # This is an extruder's quality changes profile. - self.nodes_for_extruders[extruder_position] = node + def setName(self, name: str) -> None: + if self._name != name: + self._name = name + self.nameChanged.emit() + + @pyqtProperty(str, fset = setName, notify = nameChanged) + def name(self) -> str: + return self._name def __str__(self) -> str: - return "%s[<%s>, available = %s]" % (self.__class__.__name__, self.name, self.is_available) + return "{class_name}[{name}, available = {is_available}]".format(class_name = self.__class__.__name__, name = self.name, is_available = self.is_available) diff --git a/cura/Machines/QualityGroup.py b/cura/Machines/QualityGroup.py index f5bcbb0de8..58ba3acc63 100644 --- a/cura/Machines/QualityGroup.py +++ b/cura/Machines/QualityGroup.py @@ -1,32 +1,38 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Dict, Optional, List, Set from PyQt5.QtCore import QObject, pyqtSlot +from UM.Logger import Logger from UM.Util import parseBool from cura.Machines.ContainerNode import ContainerNode +## A QualityGroup represents a group of quality containers that must be applied +# to each ContainerStack when it's used. # -# A QualityGroup represents a group of containers that must be applied to each ContainerStack when it's used. -# Some concrete examples are Quality and QualityChanges: when we select quality type "normal", this quality type -# must be applied to all stacks in a machine, although each stack can have different containers. Use an Ultimaker 3 -# as an example, suppose we choose quality type "normal", the actual InstanceContainers on each stack may look -# as below: -# GlobalStack ExtruderStack 1 ExtruderStack 2 -# quality container: um3_global_normal um3_aa04_pla_normal um3_aa04_abs_normal +# A concrete example: When there are two extruders and the user selects the +# quality type "normal", this quality type must be applied to all stacks in a +# machine, although each stack can have different containers. So one global +# profile gets put on the global stack and one extruder profile gets put on +# each extruder stack. This quality group then contains the following +# profiles (for instance): +# GlobalStack ExtruderStack 1 ExtruderStack 2 +# quality container: um3_global_normal um3_aa04_pla_normal um3_aa04_abs_normal # -# This QualityGroup is mainly used in quality and quality_changes to group the containers that can be applied to -# a machine, so when a quality/custom quality is selected, the container can be directly applied to each stack instead -# of looking them up again. -# -class QualityGroup(QObject): - - def __init__(self, name: str, quality_type: str, parent = None) -> None: - super().__init__(parent) +# The purpose of these quality groups is to group the containers that can be +# applied to a configuration, so that when a quality level is selected, the +# container can directly be applied to each stack instead of looking them up +# again. +class QualityGroup: + ## Constructs a new group. + # \param name The user-visible name for the group. + # \param quality_type The quality level that each profile in this group + # has. + def __init__(self, name: str, quality_type: str) -> None: self.name = name self.node_for_global = None # type: Optional[ContainerNode] self.nodes_for_extruders = {} # type: Dict[int, ContainerNode] @@ -34,7 +40,6 @@ class QualityGroup(QObject): self.is_available = False self.is_experimental = False - @pyqtSlot(result = str) def getName(self) -> str: return self.name @@ -43,7 +48,7 @@ class QualityGroup(QObject): for node in [self.node_for_global] + list(self.nodes_for_extruders.values()): if node is None: continue - container = node.getContainer() + container = node.container if container: result.update(container.getAllKeys()) return result @@ -60,6 +65,9 @@ class QualityGroup(QObject): self.node_for_global = node # Update is_experimental flag + if not node.container: + Logger.log("w", "Node {0} doesn't have a container.".format(node.container_id)) + return is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) self.is_experimental |= is_experimental @@ -67,5 +75,8 @@ class QualityGroup(QObject): self.nodes_for_extruders[position] = node # Update is_experimental flag + if not node.container: + Logger.log("w", "Node {0} doesn't have a container.".format(node.container_id)) + return is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) self.is_experimental |= is_experimental diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py deleted file mode 100644 index ef1ff920fe..0000000000 --- a/cura/Machines/QualityManager.py +++ /dev/null @@ -1,552 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from typing import TYPE_CHECKING, Optional, cast, Dict, List, Set - -from PyQt5.QtCore import QObject, QTimer, pyqtSignal, pyqtSlot - -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Logger import Logger -from UM.Util import parseBool -from UM.Settings.InstanceContainer import InstanceContainer - -from cura.Settings.ExtruderStack import ExtruderStack - -from .QualityGroup import QualityGroup -from .QualityNode import QualityNode - -if TYPE_CHECKING: - from UM.Settings.Interfaces import DefinitionContainerInterface - from cura.Settings.GlobalStack import GlobalStack - from .QualityChangesGroup import QualityChangesGroup - from cura.CuraApplication import CuraApplication - - -# -# Similar to MaterialManager, QualityManager maintains a number of maps and trees for quality profile lookup. -# The models GUI and QML use are now only dependent on the QualityManager. That means as long as the data in -# QualityManager gets updated correctly, the GUI models should be updated correctly too, and the same goes for GUI. -# -# For now, updating the lookup maps and trees here is very simple: we discard the old data completely and recreate them -# again. This means the update is exactly the same as initialization. There are performance concerns about this approach -# but so far the creation of the tables and maps is very fast and there is no noticeable slowness, we keep it like this -# because it's simple. -# -class QualityManager(QObject): - - qualitiesUpdated = pyqtSignal() - - def __init__(self, application: "CuraApplication", parent = None) -> None: - super().__init__(parent) - self._application = application - self._material_manager = self._application.getMaterialManager() - self._container_registry = self._application.getContainerRegistry() - - self._empty_quality_container = self._application.empty_quality_container - self._empty_quality_changes_container = self._application.empty_quality_changes_container - - # For quality lookup - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict = {} # type: Dict[str, QualityNode] - - # For quality_changes lookup - self._machine_quality_type_to_quality_changes_dict = {} # type: Dict[str, QualityNode] - - self._default_machine_definition_id = "fdmprinter" - - self._container_registry.containerMetaDataChanged.connect(self._onContainerMetadataChanged) - self._container_registry.containerAdded.connect(self._onContainerMetadataChanged) - self._container_registry.containerRemoved.connect(self._onContainerMetadataChanged) - - # When a custom quality gets added/imported, there can be more than one InstanceContainers. In those cases, - # we don't want to react on every container/metadata changed signal. The timer here is to buffer it a bit so - # we don't react too many time. - self._update_timer = QTimer(self) - self._update_timer.setInterval(300) - self._update_timer.setSingleShot(True) - self._update_timer.timeout.connect(self._updateMaps) - - def initialize(self) -> None: - # Initialize the lookup tree for quality profiles with following structure: - # -> -> -> - # -> - - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict = {} # for quality lookup - self._machine_quality_type_to_quality_changes_dict = {} # for quality_changes lookup - - quality_metadata_list = self._container_registry.findContainersMetadata(type = "quality") - for metadata in quality_metadata_list: - if metadata["id"] == "empty_quality": - continue - - definition_id = metadata["definition"] - quality_type = metadata["quality_type"] - - root_material_id = metadata.get("material") - nozzle_name = metadata.get("variant") - buildplate_name = metadata.get("buildplate") - is_global_quality = metadata.get("global_quality", False) - is_global_quality = is_global_quality or (root_material_id is None and nozzle_name is None and buildplate_name is None) - - # Sanity check: material+variant and is_global_quality cannot be present at the same time - if is_global_quality and (root_material_id or nozzle_name): - ConfigurationErrorMessage.getInstance().addFaultyContainers(metadata["id"]) - continue - - if definition_id not in self._machine_nozzle_buildplate_material_quality_type_to_quality_dict: - self._machine_nozzle_buildplate_material_quality_type_to_quality_dict[definition_id] = QualityNode() - machine_node = cast(QualityNode, self._machine_nozzle_buildplate_material_quality_type_to_quality_dict[definition_id]) - - if is_global_quality: - # For global qualities, save data in the machine node - machine_node.addQualityMetadata(quality_type, metadata) - continue - - current_node = machine_node - intermediate_node_info_list = [nozzle_name, buildplate_name, root_material_id] - current_intermediate_node_info_idx = 0 - - while current_intermediate_node_info_idx < len(intermediate_node_info_list): - node_name = intermediate_node_info_list[current_intermediate_node_info_idx] - if node_name is not None: - # There is specific information, update the current node to go deeper so we can add this quality - # at the most specific branch in the lookup tree. - if node_name not in current_node.children_map: - current_node.children_map[node_name] = QualityNode() - current_node = cast(QualityNode, current_node.children_map[node_name]) - - current_intermediate_node_info_idx += 1 - - current_node.addQualityMetadata(quality_type, metadata) - - # Initialize the lookup tree for quality_changes profiles with following structure: - # -> -> - quality_changes_metadata_list = self._container_registry.findContainersMetadata(type = "quality_changes") - for metadata in quality_changes_metadata_list: - if metadata["id"] == "empty_quality_changes": - continue - - machine_definition_id = metadata["definition"] - quality_type = metadata["quality_type"] - - if machine_definition_id not in self._machine_quality_type_to_quality_changes_dict: - self._machine_quality_type_to_quality_changes_dict[machine_definition_id] = QualityNode() - machine_node = self._machine_quality_type_to_quality_changes_dict[machine_definition_id] - machine_node.addQualityChangesMetadata(quality_type, metadata) - - Logger.log("d", "Lookup tables updated.") - self.qualitiesUpdated.emit() - - def _updateMaps(self) -> None: - self.initialize() - - def _onContainerMetadataChanged(self, container: InstanceContainer) -> None: - self._onContainerChanged(container) - - def _onContainerChanged(self, container: InstanceContainer) -> None: - container_type = container.getMetaDataEntry("type") - if container_type not in ("quality", "quality_changes"): - return - - # update the cache table - self._update_timer.start() - - # Updates the given quality groups' availabilities according to which extruders are being used/ enabled. - def _updateQualityGroupsAvailability(self, machine: "GlobalStack", quality_group_list) -> None: - used_extruders = set() - for i in range(machine.getProperty("machine_extruder_count", "value")): - if str(i) in machine.extruders and machine.extruders[str(i)].isEnabled: - used_extruders.add(str(i)) - - # Update the "is_available" flag for each quality group. - for quality_group in quality_group_list: - is_available = True - if quality_group.node_for_global is None: - is_available = False - if is_available: - for position in used_extruders: - if position not in quality_group.nodes_for_extruders: - is_available = False - break - - quality_group.is_available = is_available - - # Returns a dict of "custom profile name" -> QualityChangesGroup - def getQualityChangesGroups(self, machine: "GlobalStack") -> dict: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - machine_node = self._machine_quality_type_to_quality_changes_dict.get(machine_definition_id) - if not machine_node: - Logger.log("i", "Cannot find node for machine def [%s] in QualityChanges lookup table", machine_definition_id) - return dict() - - # Update availability for each QualityChangesGroup: - # A custom profile is always available as long as the quality_type it's based on is available - quality_group_dict = self.getQualityGroups(machine) - available_quality_type_list = [qt for qt, qg in quality_group_dict.items() if qg.is_available] - - # Iterate over all quality_types in the machine node - quality_changes_group_dict = dict() - for quality_type, quality_changes_node in machine_node.quality_type_map.items(): - for quality_changes_name, quality_changes_group in quality_changes_node.children_map.items(): - quality_changes_group_dict[quality_changes_name] = quality_changes_group - quality_changes_group.is_available = quality_type in available_quality_type_list - - return quality_changes_group_dict - - # - # Gets all quality groups for the given machine. Both available and none available ones will be included. - # It returns a dictionary with "quality_type"s as keys and "QualityGroup"s as values. - # Whether a QualityGroup is available can be unknown via the field QualityGroup.is_available. - # For more details, see QualityGroup. - # - def getQualityGroups(self, machine: "GlobalStack") -> Dict[str, QualityGroup]: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - # This determines if we should only get the global qualities for the global stack and skip the global qualities for the extruder stacks - has_machine_specific_qualities = machine.getHasMachineQuality() - - # To find the quality container for the GlobalStack, check in the following fall-back manner: - # (1) the machine-specific node - # (2) the generic node - machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(machine_definition_id) - - # Check if this machine has specific quality profiles for its extruders, if so, when looking up extruder - # qualities, we should not fall back to use the global qualities. - has_extruder_specific_qualities = False - if machine_node: - if machine_node.children_map: - has_extruder_specific_qualities = True - - default_machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(self._default_machine_definition_id) - - nodes_to_check = [] # type: List[QualityNode] - if machine_node is not None: - nodes_to_check.append(machine_node) - if default_machine_node is not None: - nodes_to_check.append(default_machine_node) - - # Iterate over all quality_types in the machine node - quality_group_dict = {} - for node in nodes_to_check: - if node and node.quality_type_map: - quality_node = list(node.quality_type_map.values())[0] - is_global_quality = parseBool(quality_node.getMetaDataEntry("global_quality", False)) - if not is_global_quality: - continue - - for quality_type, quality_node in node.quality_type_map.items(): - quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group.setGlobalNode(quality_node) - quality_group_dict[quality_type] = quality_group - break - - buildplate_name = machine.getBuildplateName() - - # Iterate over all extruders to find quality containers for each extruder - for position, extruder in machine.extruders.items(): - nozzle_name = None - if extruder.variant.getId() != "empty_variant": - nozzle_name = extruder.variant.getName() - - # This is a list of root material IDs to use for searching for suitable quality profiles. - # The root material IDs in this list are in prioritized order. - root_material_id_list = [] - has_material = False # flag indicating whether this extruder has a material assigned - root_material_id = None - if extruder.material.getId() != "empty_material": - has_material = True - root_material_id = extruder.material.getMetaDataEntry("base_file") - # Convert possible generic_pla_175 -> generic_pla - root_material_id = self._material_manager.getRootMaterialIDWithoutDiameter(root_material_id) - root_material_id_list.append(root_material_id) - - # Also try to get the fallback materials - fallback_ids = self._material_manager.getFallBackMaterialIdsByMaterial(extruder.material) - - if fallback_ids: - root_material_id_list.extend(fallback_ids) - - # Weed out duplicates while preserving the order. - seen = set() # type: Set[str] - root_material_id_list = [x for x in root_material_id_list if x not in seen and not seen.add(x)] # type: ignore - - # Here we construct a list of nodes we want to look for qualities with the highest priority first. - # The use case is that, when we look for qualities for a machine, we first want to search in the following - # order: - # 1. machine-nozzle-buildplate-and-material-specific qualities if exist - # 2. machine-nozzle-and-material-specific qualities if exist - # 3. machine-nozzle-specific qualities if exist - # 4. machine-material-specific qualities if exist - # 5. machine-specific global qualities if exist, otherwise generic global qualities - # NOTE: We DO NOT fail back to generic global qualities if machine-specific global qualities exist. - # This is because when a machine defines its own global qualities such as Normal, Fine, etc., - # it is intended to maintain those specific qualities ONLY. If we still fail back to the generic - # global qualities, there can be unimplemented quality types e.g. "coarse", and this is not - # correct. - # Each points above can be represented as a node in the lookup tree, so here we simply put those nodes into - # the list with priorities as the order. Later, we just need to loop over each node in this list and fetch - # qualities from there. - node_info_list_0 = [nozzle_name, buildplate_name, root_material_id] # type: List[Optional[str]] - nodes_to_check = [] - - # This function tries to recursively find the deepest (the most specific) branch and add those nodes to - # the search list in the order described above. So, by iterating over that search node list, we first look - # in the more specific branches and then the less specific (generic) ones. - def addNodesToCheck(node: Optional[QualityNode], nodes_to_check_list: List[QualityNode], node_info_list, node_info_idx: int) -> None: - if node is None: - return - - if node_info_idx < len(node_info_list): - node_name = node_info_list[node_info_idx] - if node_name is not None: - current_node = node.getChildNode(node_name) - if current_node is not None and has_material: - addNodesToCheck(current_node, nodes_to_check_list, node_info_list, node_info_idx + 1) - - if has_material: - for rmid in root_material_id_list: - material_node = node.getChildNode(rmid) - if material_node: - nodes_to_check_list.append(material_node) - break - - nodes_to_check_list.append(node) - - addNodesToCheck(machine_node, nodes_to_check, node_info_list_0, 0) - - # The last fall back will be the global qualities (either from the machine-specific node or the generic - # node), but we only use one. For details see the overview comments above. - - if machine_node is not None and machine_node.quality_type_map: - nodes_to_check += [machine_node] - elif default_machine_node is not None: - nodes_to_check += [default_machine_node] - - for node_idx, node in enumerate(nodes_to_check): - if node and node.quality_type_map: - if has_extruder_specific_qualities: - # Only include variant qualities; skip non global qualities - quality_node = list(node.quality_type_map.values())[0] - is_global_quality = parseBool(quality_node.getMetaDataEntry("global_quality", False)) - if is_global_quality: - continue - - for quality_type, quality_node in node.quality_type_map.items(): - if quality_type not in quality_group_dict: - quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group_dict[quality_type] = quality_group - - quality_group = quality_group_dict[quality_type] - if position not in quality_group.nodes_for_extruders: - quality_group.setExtruderNode(position, quality_node) - - # If the machine has its own specific qualities, for extruders, it should skip the global qualities - # and use the material/variant specific qualities. - if has_extruder_specific_qualities: - if node_idx == len(nodes_to_check) - 1: - break - - # Update availabilities for each quality group - self._updateQualityGroupsAvailability(machine, quality_group_dict.values()) - - return quality_group_dict - - def getQualityGroupsForMachineDefinition(self, machine: "GlobalStack") -> Dict[str, QualityGroup]: - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - - # To find the quality container for the GlobalStack, check in the following fall-back manner: - # (1) the machine-specific node - # (2) the generic node - machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get(machine_definition_id) - default_machine_node = self._machine_nozzle_buildplate_material_quality_type_to_quality_dict.get( - self._default_machine_definition_id) - nodes_to_check = [machine_node, default_machine_node] - - # Iterate over all quality_types in the machine node - quality_group_dict = dict() - for node in nodes_to_check: - if node and node.quality_type_map: - for quality_type, quality_node in node.quality_type_map.items(): - quality_group = QualityGroup(quality_node.getMetaDataEntry("name", ""), quality_type) - quality_group.setGlobalNode(quality_node) - quality_group_dict[quality_type] = quality_group - break - - return quality_group_dict - - def getDefaultQualityType(self, machine: "GlobalStack") -> Optional[QualityGroup]: - preferred_quality_type = machine.definition.getMetaDataEntry("preferred_quality_type") - quality_group_dict = self.getQualityGroups(machine) - quality_group = quality_group_dict.get(preferred_quality_type) - return quality_group - - - # - # Methods for GUI - # - - # - # Remove the given quality changes group. - # - @pyqtSlot(QObject) - def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: - Logger.log("i", "Removing quality changes group [%s]", quality_changes_group.name) - removed_quality_changes_ids = set() - for node in quality_changes_group.getAllNodes(): - container_id = node.getMetaDataEntry("id") - self._container_registry.removeContainer(container_id) - removed_quality_changes_ids.add(container_id) - - # Reset all machines that have activated this quality changes to empty. - for global_stack in self._container_registry.findContainerStacks(type = "machine"): - if global_stack.qualityChanges.getId() in removed_quality_changes_ids: - global_stack.qualityChanges = self._empty_quality_changes_container - for extruder_stack in self._container_registry.findContainerStacks(type = "extruder_train"): - if extruder_stack.qualityChanges.getId() in removed_quality_changes_ids: - extruder_stack.qualityChanges = self._empty_quality_changes_container - - # - # Rename a set of quality changes containers. Returns the new name. - # - @pyqtSlot(QObject, str, result = str) - def renameQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", new_name: str) -> str: - Logger.log("i", "Renaming QualityChangesGroup[%s] to [%s]", quality_changes_group.name, new_name) - if new_name == quality_changes_group.name: - Logger.log("i", "QualityChangesGroup name [%s] unchanged.", quality_changes_group.name) - return new_name - - new_name = self._container_registry.uniqueName(new_name) - for node in quality_changes_group.getAllNodes(): - container = node.getContainer() - if container: - container.setName(new_name) - - quality_changes_group.name = new_name - - self._application.getMachineManager().activeQualityChanged.emit() - self._application.getMachineManager().activeQualityGroupChanged.emit() - - return new_name - - # - # Duplicates the given quality. - # - @pyqtSlot(str, "QVariantMap") - def duplicateQualityChanges(self, quality_changes_name: str, quality_model_item) -> None: - global_stack = self._application.getGlobalContainerStack() - if not global_stack: - Logger.log("i", "No active global stack, cannot duplicate quality changes.") - return - - quality_group = quality_model_item["quality_group"] - quality_changes_group = quality_model_item["quality_changes_group"] - if quality_changes_group is None: - # create global quality changes only - new_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: - new_name = self._container_registry.uniqueName(quality_changes_name) - for node in quality_changes_group.getAllNodes(): - container = node.getContainer() - if not container: - continue - new_id = self._container_registry.uniqueName(container.getId()) - self._container_registry.addContainer(container.duplicate(new_id, new_name)) - - ## Create quality changes containers from the user containers in the active stacks. - # - # This will go through the global and extruder stacks and create quality_changes containers from - # the user containers in each stack. These then replace the quality_changes containers in the - # stack and clear the user settings. - @pyqtSlot(str) - def createQualityChanges(self, base_name: str) -> None: - machine_manager = self._application.getMachineManager() - - global_stack = machine_manager.activeMachine - if not global_stack: - return - - active_quality_name = machine_manager.activeQualityOrQualityChangesName - if active_quality_name == "": - Logger.log("w", "No quality container found in stack %s, cannot create profile", global_stack.getId()) - return - - machine_manager.blurSettings.emit() - if base_name is None or base_name == "": - base_name = active_quality_name - unique_name = self._container_registry.uniqueName(base_name) - - # Go through the active stacks and create quality_changes containers from the user containers. - stack_list = [global_stack] + list(global_stack.extruders.values()) - for stack in stack_list: - user_container = stack.userChanges - quality_container = stack.quality - quality_changes_container = stack.qualityChanges - if not quality_container or not quality_changes_container: - Logger.log("w", "No quality or quality changes container found in stack %s, ignoring it", stack.getId()) - continue - - quality_type = quality_container.getMetaDataEntry("quality_type") - extruder_stack = None - if isinstance(stack, ExtruderStack): - extruder_stack = stack - new_changes = self._createQualityChanges(quality_type, unique_name, global_stack, extruder_stack) - from cura.Settings.ContainerManager import ContainerManager - ContainerManager.getInstance()._performMerge(new_changes, quality_changes_container, clear_settings = False) - ContainerManager.getInstance()._performMerge(new_changes, user_container) - - self._container_registry.addContainer(new_changes) - - # - # Create a quality changes container with the given setup. - # - def _createQualityChanges(self, quality_type: str, new_name: str, machine: "GlobalStack", - extruder_stack: Optional["ExtruderStack"]) -> "InstanceContainer": - base_id = machine.definition.getId() if extruder_stack is None else extruder_stack.getId() - new_id = base_id + "_" + new_name - new_id = new_id.lower().replace(" ", "_") - new_id = self._container_registry.uniqueName(new_id) - - # Create a new quality_changes container for the quality. - quality_changes = InstanceContainer(new_id) - quality_changes.setName(new_name) - quality_changes.setMetaDataEntry("type", "quality_changes") - quality_changes.setMetaDataEntry("quality_type", quality_type) - - # If we are creating a container for an extruder, ensure we add that to the container - if extruder_stack is not None: - quality_changes.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) - - # If the machine specifies qualities should be filtered, ensure we match the current criteria. - machine_definition_id = getMachineDefinitionIDForQualitySearch(machine.definition) - quality_changes.setDefinition(machine_definition_id) - - quality_changes.setMetaDataEntry("setting_version", self._application.SettingVersion) - return quality_changes - - -# -# Gets the machine definition ID that can be used to search for Quality containers that are suitable for the given -# machine. The rule is as follows: -# 1. By default, the machine definition ID for quality container search will be "fdmprinter", which is the generic -# machine. -# 2. If a machine has its own machine quality (with "has_machine_quality = True"), we should use the given machine's -# own machine definition ID for quality search. -# Example: for an Ultimaker 3, the definition ID should be "ultimaker3". -# 3. When condition (2) is met, AND the machine has "quality_definition" defined in its definition file, then the -# definition ID specified in "quality_definition" should be used. -# Example: for an Ultimaker 3 Extended, it has "quality_definition = ultimaker3". This means Ultimaker 3 Extended -# shares the same set of qualities profiles as Ultimaker 3. -# -def getMachineDefinitionIDForQualitySearch(machine_definition: "DefinitionContainerInterface", - default_definition_id: str = "fdmprinter") -> str: - machine_definition_id = default_definition_id - if parseBool(machine_definition.getMetaDataEntry("has_machine_quality", False)): - # Only use the machine's own quality definition ID if this machine has machine quality. - machine_definition_id = machine_definition.getMetaDataEntry("quality_definition") - if machine_definition_id is None: - machine_definition_id = machine_definition.getId() - - return machine_definition_id diff --git a/cura/Machines/QualityNode.py b/cura/Machines/QualityNode.py index 991388a4bd..45cd898db5 100644 --- a/cura/Machines/QualityNode.py +++ b/cura/Machines/QualityNode.py @@ -1,38 +1,44 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, Dict, cast, Any +from typing import Union, TYPE_CHECKING -from .ContainerNode import ContainerNode -from .QualityChangesGroup import QualityChangesGroup +from UM.Settings.ContainerRegistry import ContainerRegistry +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.IntentNode import IntentNode +import UM.FlameProfiler +if TYPE_CHECKING: + from typing import Dict + from cura.Machines.MaterialNode import MaterialNode + from cura.Machines.MachineNode import MachineNode +## Represents a quality profile in the container tree. # -# QualityNode is used for BOTH quality and quality_changes containers. +# This may either be a normal quality profile or a global quality profile. # +# Its subcontainers are intent profiles. class QualityNode(ContainerNode): + def __init__(self, container_id: str, parent: Union["MaterialNode", "MachineNode"]) -> None: + super().__init__(container_id) + self.parent = parent + self.intents = {} # type: Dict[str, IntentNode] - def __init__(self, metadata: Optional[Dict[str, Any]] = None) -> None: - super().__init__(metadata = metadata) - self.quality_type_map = {} # type: Dict[str, QualityNode] # quality_type -> QualityNode for InstanceContainer + my_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = container_id)[0] + self.quality_type = my_metadata["quality_type"] + # The material type of the parent doesn't need to be the same as this due to generic fallbacks. + self._material = my_metadata.get("material") + self._loadAll() - def getChildNode(self, child_key: str) -> Optional["QualityNode"]: - return self.children_map.get(child_key) + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() - def addQualityMetadata(self, quality_type: str, metadata: Dict[str, Any]): - if quality_type not in self.quality_type_map: - self.quality_type_map[quality_type] = QualityNode(metadata) + # Find all intent profiles that fit the current configuration. + from cura.Machines.MachineNode import MachineNode + if not isinstance(self.parent, MachineNode): # Not a global profile. + for intent in container_registry.findInstanceContainersMetadata(type = "intent", definition = self.parent.variant.machine.quality_definition, variant = self.parent.variant.variant_name, material = self._material, quality_type = self.quality_type): + self.intents[intent["id"]] = IntentNode(intent["id"], quality = self) - def getQualityNode(self, quality_type: str) -> Optional["QualityNode"]: - return self.quality_type_map.get(quality_type) - - def addQualityChangesMetadata(self, quality_type: str, metadata: Dict[str, Any]): - if quality_type not in self.quality_type_map: - self.quality_type_map[quality_type] = QualityNode() - quality_type_node = self.quality_type_map[quality_type] - - name = metadata["name"] - if name not in quality_type_node.children_map: - quality_type_node.children_map[name] = QualityChangesGroup(name, quality_type) - quality_changes_group = quality_type_node.children_map[name] - cast(QualityChangesGroup, quality_changes_group).addNode(QualityNode(metadata)) + self.intents["empty_intent"] = IntentNode("empty_intent", quality = self) + # Otherwise, there are no intents for global profiles. \ No newline at end of file diff --git a/cura/Machines/VariantManager.py b/cura/Machines/VariantManager.py deleted file mode 100644 index eaaa9fc5f0..0000000000 --- a/cura/Machines/VariantManager.py +++ /dev/null @@ -1,145 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. - -from collections import OrderedDict -from typing import Optional, TYPE_CHECKING, Dict - -from UM.ConfigurationErrorMessage import ConfigurationErrorMessage -from UM.Logger import Logger -from UM.Settings.ContainerRegistry import ContainerRegistry -from UM.Util import parseBool - -from cura.Machines.ContainerNode import ContainerNode -from cura.Machines.VariantType import VariantType, ALL_VARIANT_TYPES -from cura.Settings.GlobalStack import GlobalStack - -if TYPE_CHECKING: - from UM.Settings.DefinitionContainer import DefinitionContainer - - -# -# VariantManager is THE place to look for a specific variant. It maintains two variant lookup tables with the following -# structure: -# -# [machine_definition_id] -> [variant_type] -> [variant_name] -> ContainerNode(metadata / container) -# Example: "ultimaker3" -> "buildplate" -> "Glass" (if present) -> ContainerNode -# -> ... -# -> "nozzle" -> "AA 0.4" -# -> "BB 0.8" -# -> ... -# -# [machine_definition_id] -> [machine_buildplate_type] -> ContainerNode(metadata / container) -# Example: "ultimaker3" -> "glass" (this is different from the variant name) -> ContainerNode -# -# Note that the "container" field is not loaded in the beginning because it would defeat the purpose of lazy-loading. -# A container is loaded when getVariant() is called to load a variant InstanceContainer. -# -class VariantManager: - - def __init__(self, container_registry: ContainerRegistry) -> None: - self._container_registry = container_registry - - self._machine_to_variant_dict_map = dict() # type: Dict[str, Dict["VariantType", Dict[str, ContainerNode]]] - self._machine_to_buildplate_dict_map = dict() # type: Dict[str, Dict[str, ContainerNode]] - - self._exclude_variant_id_list = ["empty_variant"] - - # - # Initializes the VariantManager including: - # - initializing the variant lookup table based on the metadata in ContainerRegistry. - # - def initialize(self) -> None: - self._machine_to_variant_dict_map = OrderedDict() - self._machine_to_buildplate_dict_map = OrderedDict() - - # Cache all variants from the container registry to a variant map for better searching and organization. - variant_metadata_list = self._container_registry.findContainersMetadata(type = "variant") - for variant_metadata in variant_metadata_list: - if variant_metadata["id"] in self._exclude_variant_id_list: - Logger.log("d", "Exclude variant [%s]", variant_metadata["id"]) - continue - - variant_name = variant_metadata["name"] - variant_definition = variant_metadata["definition"] - if variant_definition not in self._machine_to_variant_dict_map: - self._machine_to_variant_dict_map[variant_definition] = OrderedDict() - for variant_type in ALL_VARIANT_TYPES: - self._machine_to_variant_dict_map[variant_definition][variant_type] = dict() - - try: - variant_type = variant_metadata["hardware_type"] - except KeyError: - Logger.log("w", "Variant %s does not specify a hardware_type; assuming 'nozzle'", variant_metadata["id"]) - variant_type = VariantType.NOZZLE - variant_type = VariantType(variant_type) - variant_dict = self._machine_to_variant_dict_map[variant_definition][variant_type] - if variant_name in variant_dict: - # ERROR: duplicated variant name. - ConfigurationErrorMessage.getInstance().addFaultyContainers(variant_metadata["id"]) - continue #Then ignore this variant. This now chooses one of the two variants arbitrarily and deletes the other one! No guarantees! - - variant_dict[variant_name] = ContainerNode(metadata = variant_metadata) - - # If the variant is a buildplate then fill also the buildplate map - if variant_type == VariantType.BUILD_PLATE: - if variant_definition not in self._machine_to_buildplate_dict_map: - self._machine_to_buildplate_dict_map[variant_definition] = OrderedDict() - - variant_container = self._container_registry.findContainers(type = "variant", id = variant_metadata["id"])[0] - buildplate_type = variant_container.getProperty("machine_buildplate_type", "value") - if buildplate_type not in self._machine_to_buildplate_dict_map[variant_definition]: - self._machine_to_variant_dict_map[variant_definition][buildplate_type] = dict() - - self._machine_to_buildplate_dict_map[variant_definition][buildplate_type] = variant_dict[variant_name] - - # - # Gets the variant InstanceContainer with the given information. - # Almost the same as getVariantMetadata() except that this returns an InstanceContainer if present. - # - def getVariantNode(self, machine_definition_id: str, variant_name: str, - variant_type: Optional["VariantType"] = None) -> Optional["ContainerNode"]: - if variant_type is None: - variant_node = None - variant_type_dict = self._machine_to_variant_dict_map[machine_definition_id] - for variant_dict in variant_type_dict.values(): - if variant_name in variant_dict: - variant_node = variant_dict[variant_name] - break - return variant_node - - return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}).get(variant_name) - - def getVariantNodes(self, machine: "GlobalStack", variant_type: "VariantType") -> Dict[str, ContainerNode]: - machine_definition_id = machine.definition.getId() - return self._machine_to_variant_dict_map.get(machine_definition_id, {}).get(variant_type, {}) - - # - # Gets the default variant for the given machine definition. - # If the optional GlobalStack is given, the metadata information will be fetched from the GlobalStack instead of - # the DefinitionContainer. Because for machines such as UM2, you can enable Olsson Block, which will set - # "has_variants" to True in the GlobalStack. In those cases, we need to fetch metadata from the GlobalStack or - # it may not be correct. - # - def getDefaultVariantNode(self, machine_definition: "DefinitionContainer", - variant_type: "VariantType", - global_stack: Optional["GlobalStack"] = None) -> Optional["ContainerNode"]: - machine_definition_id = machine_definition.getId() - container_for_metadata_fetching = global_stack if global_stack is not None else machine_definition - - preferred_variant_name = None - if variant_type == VariantType.BUILD_PLATE: - if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variant_buildplates", False)): - preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_buildplate_name") - else: - if parseBool(container_for_metadata_fetching.getMetaDataEntry("has_variants", False)): - preferred_variant_name = container_for_metadata_fetching.getMetaDataEntry("preferred_variant_name") - - node = None - if preferred_variant_name: - node = self.getVariantNode(machine_definition_id, preferred_variant_name, variant_type) - return node - - def getBuildplateVariantNode(self, machine_definition_id: str, buildplate_type: str) -> Optional["ContainerNode"]: - if machine_definition_id in self._machine_to_buildplate_dict_map: - return self._machine_to_buildplate_dict_map[machine_definition_id].get(buildplate_type) - return None diff --git a/cura/Machines/VariantNode.py b/cura/Machines/VariantNode.py new file mode 100644 index 0000000000..550b5881a3 --- /dev/null +++ b/cura/Machines/VariantNode.py @@ -0,0 +1,188 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING + +from UM.Logger import Logger +from UM.Settings.ContainerRegistry import ContainerRegistry +from UM.Settings.Interfaces import ContainerInterface +from UM.Signal import Signal + +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.MaterialNode import MaterialNode + +import UM.FlameProfiler + +if TYPE_CHECKING: + from typing import Dict + from cura.Machines.MachineNode import MachineNode + + +## This class represents an extruder variant in the container tree. +# +# The subnodes of these nodes are materials. +# +# This node contains materials with ALL filament diameters underneath it. The +# tree of this variant is not specific to one global stack, so because the +# list of materials can be different per stack depending on the compatible +# material diameter setting, we cannot filter them here. Filtering must be +# done in the model. +class VariantNode(ContainerNode): + def __init__(self, container_id: str, machine: "MachineNode") -> None: + super().__init__(container_id) + self.machine = machine + self.materials = {} # type: Dict[str, MaterialNode] # Mapping material base files to their nodes. + self.materialsChanged = Signal() + + container_registry = ContainerRegistry.getInstance() + self.variant_name = container_registry.findContainersMetadata(id = container_id)[0]["name"] # Store our own name so that we can filter more easily. + container_registry.containerAdded.connect(self._materialAdded) + container_registry.containerRemoved.connect(self._materialRemoved) + self._loadAll() + + ## (Re)loads all materials under this variant. + @UM.FlameProfiler.profile + def _loadAll(self) -> None: + container_registry = ContainerRegistry.getInstance() + + if not self.machine.has_materials: + self.materials["empty_material"] = MaterialNode("empty_material", variant = self) + return # There should not be any materials loaded for this printer. + + # Find all the materials for this variant's name. + else: # Printer has its own material profiles. Look for material profiles with this printer's definition. + base_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = "fdmprinter") + printer_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id, variant_name = None) + variant_specific_materials = container_registry.findInstanceContainersMetadata(type = "material", definition = self.machine.container_id, variant_name = self.variant_name) # If empty_variant, this won't return anything. + materials_per_base_file = {material["base_file"]: material for material in base_materials} + materials_per_base_file.update({material["base_file"]: material for material in printer_specific_materials}) # Printer-specific profiles override global ones. + materials_per_base_file.update({material["base_file"]: material for material in variant_specific_materials}) # Variant-specific profiles override all of those. + materials = list(materials_per_base_file.values()) + + # Filter materials based on the exclude_materials property. + filtered_materials = [material for material in materials if material["id"] not in self.machine.exclude_materials] + + for material in filtered_materials: + base_file = material["base_file"] + if base_file not in self.materials: + self.materials[base_file] = MaterialNode(material["id"], variant = self) + self.materials[base_file].materialChanged.connect(self.materialsChanged) + if not self.materials: + self.materials["empty_material"] = MaterialNode("empty_material", variant = self) + + ## Finds the preferred material for this printer with this nozzle in one of + # the extruders. + # + # If the preferred material is not available, an arbitrary material is + # returned. If there is a configuration mistake (like a typo in the + # preferred material) this returns a random available material. If there + # are no available materials, this will return the empty material node. + # \param approximate_diameter The desired approximate diameter of the + # material. + # \return The node for the preferred material, or any arbitrary material + # if there is no match. + def preferredMaterial(self, approximate_diameter: int) -> MaterialNode: + for base_material, material_node in self.materials.items(): + if self.machine.preferred_material == base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): + return material_node + + # First fallback: Check if we should be checking for the 175 variant. + if approximate_diameter == 2: + preferred_material = self.machine.preferred_material + "_175" + for base_material, material_node in self.materials.items(): + if preferred_material == base_material and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): + return material_node + + # Second fallback: Choose any material with matching diameter. + for material_node in self.materials.values(): + if material_node.getMetaDataEntry("approximate_diameter") and approximate_diameter == int(material_node.getMetaDataEntry("approximate_diameter")): + Logger.log("w", "Could not find preferred material %s, falling back to whatever works", self.machine.preferred_material) + return material_node + + fallback = next(iter(self.materials.values())) # Should only happen with empty material node. + Logger.log("w", "Could not find preferred material {preferred_material} with diameter {diameter} for variant {variant_id}, falling back to {fallback}.".format( + preferred_material = self.machine.preferred_material, + diameter = approximate_diameter, + variant_id = self.container_id, + fallback = fallback.container_id + )) + return fallback + + ## When a material gets added to the set of profiles, we need to update our + # tree here. + @UM.FlameProfiler.profile + def _materialAdded(self, container: ContainerInterface) -> None: + if container.getMetaDataEntry("type") != "material": + return # Not interested. + if not ContainerRegistry.getInstance().findContainersMetadata(id = container.getId()): + # CURA-6889 + # containerAdded and removed signals may be triggered in the next event cycle. If a container gets added + # and removed in the same event cycle, in the next cycle, the connections should just ignore the signals. + # The check here makes sure that the container in the signal still exists. + Logger.log("d", "Got container added signal for container [%s] but it no longer exists, do nothing.", + container.getId()) + return + if not self.machine.has_materials: + return # We won't add any materials. + material_definition = container.getMetaDataEntry("definition") + + base_file = container.getMetaDataEntry("base_file") + if base_file in self.machine.exclude_materials: + return # Material is forbidden for this printer. + if base_file not in self.materials: # Completely new base file. Always better than not having a file as long as it matches our set-up. + if material_definition != "fdmprinter" and material_definition != self.machine.container_id: + return + material_variant = container.getMetaDataEntry("variant_name") + if material_variant is not None and material_variant != self.variant_name: + return + else: # We already have this base profile. Replace the base profile if the new one is more specific. + new_definition = container.getMetaDataEntry("definition") + if new_definition == "fdmprinter": + return # Just as unspecific or worse. + material_variant = container.getMetaDataEntry("variant_name") + if new_definition != self.machine.container_id or material_variant != self.variant_name: + return # Doesn't match this set-up. + original_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = self.materials[base_file].container_id)[0] + if "variant_name" in original_metadata or material_variant is None: + return # Original was already specific or just as unspecific as the new one. + + if "empty_material" in self.materials: + del self.materials["empty_material"] + self.materials[base_file] = MaterialNode(container.getId(), variant = self) + self.materials[base_file].materialChanged.connect(self.materialsChanged) + self.materialsChanged.emit(self.materials[base_file]) + + @UM.FlameProfiler.profile + def _materialRemoved(self, container: ContainerInterface) -> None: + if container.getMetaDataEntry("type") != "material": + return # Only interested in materials. + base_file = container.getMetaDataEntry("base_file") + if base_file not in self.materials: + return # We don't track this material anyway. No need to remove it. + + original_node = self.materials[base_file] + del self.materials[base_file] + self.materialsChanged.emit(original_node) + + # Now a different material from the same base file may have been hidden because it was not as specific as the one we deleted. + # Search for any submaterials from that base file that are still left. + materials_same_base_file = ContainerRegistry.getInstance().findContainersMetadata(base_file = base_file) + if materials_same_base_file: + most_specific_submaterial = None + for submaterial in materials_same_base_file: + if submaterial["definition"] == self.machine.container_id: + if submaterial.get("variant_name", "empty") == self.variant_name: + most_specific_submaterial = submaterial + break # most specific match possible + if submaterial.get("variant_name", "empty") == "empty": + most_specific_submaterial = submaterial + + if most_specific_submaterial is None: + Logger.log("w", "Material %s removed, but no suitable replacement found", base_file) + else: + Logger.log("i", "Material %s (%s) overridden by %s", base_file, self.variant_name, most_specific_submaterial.get("id")) + self.materials[base_file] = MaterialNode(most_specific_submaterial["id"], variant = self) + self.materialsChanged.emit(self.materials[base_file]) + + if not self.materials: # The last available material just got deleted and there is nothing with the same base file to replace it. + self.materials["empty_material"] = MaterialNode("empty_material", variant = self) + self.materialsChanged.emit(self.materials["empty_material"]) \ No newline at end of file diff --git a/cura/MultiplyObjectsJob.py b/cura/MultiplyObjectsJob.py index e71bbf6668..5c25f70336 100644 --- a/cura/MultiplyObjectsJob.py +++ b/cura/MultiplyObjectsJob.py @@ -2,10 +2,12 @@ # Cura is released under the terms of the LGPLv3 or higher. import copy +from typing import List from UM.Job import Job from UM.Operations.GroupedOperation import GroupedOperation from UM.Message import Message +from UM.Scene.SceneNode import SceneNode from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") @@ -23,7 +25,7 @@ class MultiplyObjectsJob(Job): self._count = count self._min_offset = min_offset - def run(self): + def run(self) -> None: status_message = Message(i18n_catalog.i18nc("@info:status", "Multiplying and placing objects"), lifetime=0, dismissable=False, progress=0, title = i18n_catalog.i18nc("@info:title", "Placing Objects")) status_message.show() @@ -33,13 +35,15 @@ class MultiplyObjectsJob(Job): current_progress = 0 global_container_stack = Application.getInstance().getGlobalContainerStack() + if global_container_stack is None: + return # We can't do anything in this case. machine_width = global_container_stack.getProperty("machine_width", "value") machine_depth = global_container_stack.getProperty("machine_depth", "value") root = scene.getRoot() scale = 0.5 arranger = Arrange.create(x = machine_width, y = machine_depth, scene_root = root, scale = scale, min_offset = self._min_offset) - processed_nodes = [] + processed_nodes = [] # type: List[SceneNode] nodes = [] not_fit_count = 0 @@ -67,7 +71,11 @@ class MultiplyObjectsJob(Job): new_node = copy.deepcopy(node) solution_found = False if not node_too_big: - solution_found = arranger.findNodePlacement(new_node, offset_shape_arr, hull_shape_arr) + if offset_shape_arr is not None and hull_shape_arr is not None: + solution_found = arranger.findNodePlacement(new_node, offset_shape_arr, hull_shape_arr) + else: + # The node has no shape, so no need to arrange it. The solution is simple: Do nothing. + solution_found = True if node_too_big or not solution_found: found_solution_for_all = False diff --git a/cura/OAuth2/AuthorizationHelpers.py b/cura/OAuth2/AuthorizationHelpers.py index 08309fa30e..9fc01ba50b 100644 --- a/cura/OAuth2/AuthorizationHelpers.py +++ b/cura/OAuth2/AuthorizationHelpers.py @@ -99,7 +99,7 @@ class AuthorizationHelpers: }) except requests.exceptions.ConnectionError: # Connection was suddenly dropped. Nothing we can do about that. - Logger.log("w", "Something failed while attempting to parse the JWT token") + Logger.logException("w", "Something failed while attempting to parse the JWT token") return None if token_request.status_code not in (200, 201): Logger.log("w", "Could not retrieve token data from auth server: %s", token_request.text) diff --git a/cura/OAuth2/AuthorizationRequestHandler.py b/cura/OAuth2/AuthorizationRequestHandler.py index 66ecfc2787..83b94ed586 100644 --- a/cura/OAuth2/AuthorizationRequestHandler.py +++ b/cura/OAuth2/AuthorizationRequestHandler.py @@ -25,6 +25,10 @@ class AuthorizationRequestHandler(BaseHTTPRequestHandler): self.authorization_callback = None # type: Optional[Callable[[AuthenticationResponse], None]] self.verification_code = None # type: Optional[str] + # CURA-6609: Some browser seems to issue a HEAD instead of GET request as the callback. + def do_HEAD(self) -> None: + self.do_GET() + def do_GET(self) -> None: # Extract values from the query string. parsed_url = urlparse(self.path) diff --git a/cura/OAuth2/AuthorizationService.py b/cura/OAuth2/AuthorizationService.py index 27041b1f80..0848623410 100644 --- a/cura/OAuth2/AuthorizationService.py +++ b/cura/OAuth2/AuthorizationService.py @@ -2,12 +2,14 @@ # Cura is released under the terms of the LGPLv3 or higher. import json -import webbrowser from datetime import datetime, timedelta from typing import Optional, TYPE_CHECKING from urllib.parse import urlencode + import requests.exceptions +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices from UM.Logger import Logger from UM.Message import Message @@ -163,7 +165,7 @@ class AuthorizationService: }) # Open the authorization page in a new browser window. - webbrowser.open_new("{}?{}".format(self._auth_url, query_string)) + QDesktopServices.openUrl(QUrl("{}?{}".format(self._auth_url, query_string))) # Start a local web server to receive the callback URL on. self._server.start(verification_code) @@ -195,8 +197,6 @@ class AuthorizationService: self._unable_to_get_data_message.hide() self._unable_to_get_data_message = Message(i18n_catalog.i18nc("@info", "Unable to reach the Ultimaker account server."), title = i18n_catalog.i18nc("@info:title", "Warning")) - self._unable_to_get_data_message.addAction("retry", i18n_catalog.i18nc("@action:button", "Retry"), "[no_icon]", "[no_description]") - self._unable_to_get_data_message.actionTriggered.connect(self._onMessageActionTriggered) self._unable_to_get_data_message.show() except ValueError: Logger.logException("w", "Could not load auth data from preferences") @@ -218,6 +218,3 @@ class AuthorizationService: 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/OneAtATimeIterator.py b/cura/OneAtATimeIterator.py index a08f3ed2bf..b77e1f3982 100644 --- a/cura/OneAtATimeIterator.py +++ b/cura/OneAtATimeIterator.py @@ -1,149 +1,127 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import sys +from typing import List -from shapely import affinity -from shapely.geometry import Polygon - -from UM.Scene.Iterator.Iterator import Iterator +from UM.Scene.Iterator import Iterator from UM.Scene.SceneNode import SceneNode +from functools import cmp_to_key +## Iterator that returns a list of nodes in the order that they need to be printed +# If there is no solution an empty list is returned. +# Take note that the list of nodes can have children (that may or may not contain mesh data) +class OneAtATimeIterator(Iterator.Iterator): + def __init__(self, scene_node) -> None: + super().__init__(scene_node) # Call super to make multiple inheritance work. + self._hit_map = [[]] # type: List[List[bool]] # For each node, which other nodes this hits. A grid of booleans on which nodes hit which. + self._original_node_list = [] # type: List[SceneNode] # The nodes that need to be checked for collisions. -# Iterator that determines the object print order when one-at a time mode is enabled. -# -# In one-at-a-time mode, only one extruder can be enabled to print. In order to maximize the number of objects we can -# print, we need to print from the corner that's closest to the extruder that's being used. Here is an illustration: -# -# +--------------------------------+ -# | | -# | | -# | | - Rectangle represents the complete print head including fans, etc. -# | X X | y - X's are the nozzles -# | (1) (2) | ^ -# | | | -# +--------------------------------+ +--> x -# -# In this case, the nozzles are symmetric, nozzle (1) is closer to the bottom left corner while (2) is closer to the -# bottom right. If we use nozzle (1) to print, then we better off printing from the bottom left corner so the print -# head will not collide into an object on its top-right side, which is a very large unused area. Following the same -# logic, if we are printing with nozzle (2), then it's better to print from the bottom-right side. -# -# This iterator determines the print order following the rules above. -# -class OneAtATimeIterator(Iterator): - - def __init__(self, scene_node): - from cura.CuraApplication import CuraApplication - self._global_stack = CuraApplication.getInstance().getGlobalContainerStack() - self._original_node_list = [] - - super().__init__(scene_node) # Call super to make multiple inheritance work. - - def getMachineNearestCornerToExtruder(self, global_stack): - head_and_fans_coordinates = global_stack.getHeadAndFansCoordinates() - - used_extruder = None - for extruder in global_stack.extruders.values(): - if extruder.isEnabled: - used_extruder = extruder - break - - extruder_offsets = [used_extruder.getProperty("machine_nozzle_offset_x", "value"), - used_extruder.getProperty("machine_nozzle_offset_y", "value")] - - # find the corner that's closest to the origin - min_distance2 = sys.maxsize - min_coord = None - for coord in head_and_fans_coordinates: - x = coord[0] - extruder_offsets[0] - y = coord[1] - extruder_offsets[1] - - distance2 = x**2 + y**2 - if distance2 <= min_distance2: - min_distance2 = distance2 - min_coord = coord - - return min_coord - - def _checkForCollisions(self) -> bool: - all_nodes = [] - for node in self._scene_node.getChildren(): - if not issubclass(type(node), SceneNode): - continue - convex_hull = node.callDecoration("getConvexHullHead") - if not convex_hull: - continue - - bounding_box = node.getBoundingBox() - if not bounding_box: - continue - from UM.Math.Polygon import Polygon - bounding_box_polygon = Polygon([[bounding_box.left, bounding_box.front], - [bounding_box.left, bounding_box.back], - [bounding_box.right, bounding_box.back], - [bounding_box.right, bounding_box.front]]) - - all_nodes.append({"node": node, - "bounding_box": bounding_box_polygon, - "convex_hull": convex_hull}) - - has_collisions = False - for i, node_dict in enumerate(all_nodes): - for j, other_node_dict in enumerate(all_nodes): - if i == j: - continue - if node_dict["bounding_box"].intersectsPolygon(other_node_dict["convex_hull"]): - has_collisions = True - break - - if has_collisions: - break - - return has_collisions - - def _fillStack(self): - min_coord = self.getMachineNearestCornerToExtruder(self._global_stack) - transform_x = -int(round(min_coord[0] / abs(min_coord[0]))) - transform_y = -int(round(min_coord[1] / abs(min_coord[1]))) - - machine_size = [self._global_stack.getProperty("machine_width", "value"), - self._global_stack.getProperty("machine_depth", "value")] - - def flip_x(polygon): - tm2 = [-1, 0, 0, 1, 0, 0] - return affinity.affine_transform(affinity.translate(polygon, xoff = -machine_size[0]), tm2) - - def flip_y(polygon): - tm2 = [1, 0, 0, -1, 0, 0] - return affinity.affine_transform(affinity.translate(polygon, yoff = -machine_size[1]), tm2) - - if self._checkForCollisions(): - self._node_stack = [] - return - + ## Fills the ``_node_stack`` with a list of scene nodes that need to be + # printed in order. + def _fillStack(self) -> None: node_list = [] for node in self._scene_node.getChildren(): if not issubclass(type(node), SceneNode): continue - convex_hull = node.callDecoration("getConvexHull") - if convex_hull: - xmin = min(x for x, _ in convex_hull._points) - xmax = max(x for x, _ in convex_hull._points) - ymin = min(y for _, y in convex_hull._points) - ymax = max(y for _, y in convex_hull._points) + if node.callDecoration("getConvexHull"): + node_list.append(node) - convex_hull_polygon = Polygon.from_bounds(xmin, ymin, xmax, ymax) - if transform_x < 0: - convex_hull_polygon = flip_x(convex_hull_polygon) - if transform_y < 0: - convex_hull_polygon = flip_y(convex_hull_polygon) - node_list.append({"node": node, - "min_coord": [convex_hull_polygon.bounds[0], convex_hull_polygon.bounds[1]], - }) + if len(node_list) < 2: + self._node_stack = node_list[:] + return - node_list = sorted(node_list, key = lambda d: d["min_coord"]) + # Copy the list + self._original_node_list = node_list[:] - self._node_stack = [d["node"] for d in node_list] + ## Initialise the hit map (pre-compute all hits between all objects) + self._hit_map = [[self._checkHit(i,j) for i in node_list] for j in node_list] + + # Check if we have to files that block each other. If this is the case, there is no solution! + for a in range(0, len(node_list)): + for b in range(0, len(node_list)): + if a != b and self._hit_map[a][b] and self._hit_map[b][a]: + return + + # Sort the original list so that items that block the most other objects are at the beginning. + # This does not decrease the worst case running time, but should improve it in most cases. + sorted(node_list, key = cmp_to_key(self._calculateScore)) + + todo_node_list = [_ObjectOrder([], node_list)] + while len(todo_node_list) > 0: + current = todo_node_list.pop() + for node in current.todo: + # Check if the object can be placed with what we have and still allows for a solution in the future + if not self._checkHitMultiple(node, current.order) and not self._checkBlockMultiple(node, current.todo): + # We found a possible result. Create new todo & order list. + new_todo_list = current.todo[:] + new_todo_list.remove(node) + new_order = current.order[:] + [node] + if len(new_todo_list) == 0: + # We have no more nodes to check, so quit looking. + self._node_stack = new_order + return + todo_node_list.append(_ObjectOrder(new_order, new_todo_list)) + self._node_stack = [] #No result found! + + + # Check if first object can be printed before the provided list (using the hit map) + def _checkHitMultiple(self, node: SceneNode, other_nodes: List[SceneNode]) -> bool: + node_index = self._original_node_list.index(node) + for other_node in other_nodes: + other_node_index = self._original_node_list.index(other_node) + if self._hit_map[node_index][other_node_index]: + return True + return False + + ## Check for a node whether it hits any of the other nodes. + # \param node The node to check whether it collides with the other nodes. + # \param other_nodes The nodes to check for collisions. + def _checkBlockMultiple(self, node: SceneNode, other_nodes: List[SceneNode]) -> bool: + node_index = self._original_node_list.index(node) + for other_node in other_nodes: + other_node_index = self._original_node_list.index(other_node) + if self._hit_map[other_node_index][node_index] and node_index != other_node_index: + return True + return False + + ## Calculate score simply sums the number of other objects it 'blocks' + def _calculateScore(self, a: SceneNode, b: SceneNode) -> int: + score_a = sum(self._hit_map[self._original_node_list.index(a)]) + score_b = sum(self._hit_map[self._original_node_list.index(b)]) + return score_a - score_b + + ## Checks if A can be printed before B + def _checkHit(self, a: SceneNode, b: SceneNode) -> bool: + if a == b: + return False + + a_hit_hull = a.callDecoration("getConvexHullBoundary") + b_hit_hull = b.callDecoration("getConvexHullHeadFull") + overlap = a_hit_hull.intersectsPolygon(b_hit_hull) + + if overlap: + return True + + # Adhesion areas must never overlap, regardless of printing order + # This would cause over-extrusion + a_hit_hull = a.callDecoration("getAdhesionArea") + b_hit_hull = b.callDecoration("getAdhesionArea") + overlap = a_hit_hull.intersectsPolygon(b_hit_hull) + + if overlap: + return True + else: + return False + + +## Internal object used to keep track of a possible order in which to print objects. +class _ObjectOrder: + ## Creates the _ObjectOrder instance. + # \param order List of indices in which to print objects, ordered by printing + # order. + # \param todo: List of indices which are not yet inserted into the order list. + def __init__(self, order: List[SceneNode], todo: List[SceneNode]): + self.order = order + self.todo = todo diff --git a/cura/PlatformPhysics.py b/cura/PlatformPhysics.py index d9876b3b36..a411478b16 100755 --- a/cura/PlatformPhysics.py +++ b/cura/PlatformPhysics.py @@ -17,6 +17,7 @@ from cura.Scene import ZOffsetDecorator import random # used for list shuffling + class PlatformPhysics: def __init__(self, controller, volume): super().__init__() @@ -49,18 +50,20 @@ class PlatformPhysics: return root = self._controller.getScene().getRoot() + build_volume = Application.getInstance().getBuildVolume() + build_volume.updateNodeBoundaryCheck() # Keep a list of nodes that are moving. We use this so that we don't move two intersecting objects in the # same direction. transformed_nodes = [] - # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. - # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. nodes = list(BreadthFirstIterator(root)) # Only check nodes inside build area. nodes = [node for node in nodes if (hasattr(node, "_outside_buildarea") and not node._outside_buildarea)] + # We try to shuffle all the nodes to prevent "locked" situations, where iteration B inverts iteration A. + # By shuffling the order of the nodes, this might happen a few times, but at some point it will resolve. random.shuffle(nodes) for node in nodes: if node is root or not isinstance(node, SceneNode) or node.getBoundingBox() is None: @@ -160,7 +163,6 @@ class PlatformPhysics: op.push() # After moving, we have to evaluate the boundary checks for nodes - build_volume = Application.getInstance().getBuildVolume() build_volume.updateNodeBoundaryCheck() def _onToolOperationStarted(self, tool): diff --git a/cura/PreviewPass.py b/cura/PreviewPass.py index 49e2befd28..58205ba708 100644 --- a/cura/PreviewPass.py +++ b/cura/PreviewPass.py @@ -1,7 +1,8 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional, TYPE_CHECKING +from typing import Optional, TYPE_CHECKING, cast + from UM.Application import Application from UM.Resources import Resources @@ -12,6 +13,7 @@ from UM.View.RenderBatch import RenderBatch from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator +from cura.Scene.CuraSceneNode import CuraSceneNode if TYPE_CHECKING: from UM.View.GL.ShaderProgram import ShaderProgram @@ -44,9 +46,9 @@ class PreviewPass(RenderPass): self._renderer = Application.getInstance().getRenderer() - self._shader = None #type: Optional[ShaderProgram] - self._non_printing_shader = None #type: Optional[ShaderProgram] - self._support_mesh_shader = None #type: Optional[ShaderProgram] + self._shader = None # type: Optional[ShaderProgram] + self._non_printing_shader = None # type: Optional[ShaderProgram] + self._support_mesh_shader = None # type: Optional[ShaderProgram] self._scene = Application.getInstance().getController().getScene() # Set the camera to be used by this render pass @@ -62,6 +64,7 @@ class PreviewPass(RenderPass): self._shader.setUniformValue("u_ambientColor", [0.1, 0.1, 0.1, 1.0]) self._shader.setUniformValue("u_specularColor", [0.6, 0.6, 0.6, 1.0]) self._shader.setUniformValue("u_shininess", 20.0) + self._shader.setUniformValue("u_faceId", -1) # Don't render any selected faces in the preview. if not self._non_printing_shader: if self._non_printing_shader: @@ -83,8 +86,8 @@ 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 hasattr(node, "_outside_buildarea") and not node._outside_buildarea: + 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"): @@ -94,7 +97,7 @@ class PreviewPass(RenderPass): # Support mesh uniforms = {} shade_factor = 0.6 - diffuse_color = node.getDiffuseColor() + diffuse_color = cast(CuraSceneNode, node).getDiffuseColor() diffuse_color2 = [ diffuse_color[0] * shade_factor, diffuse_color[1] * shade_factor, @@ -106,7 +109,7 @@ class PreviewPass(RenderPass): else: # Normal scene node uniforms = {} - uniforms["diffuse_color"] = prettier_color(node.getDiffuseColor()) + 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 3f20e0f3c4..56e260a7f0 100644 --- a/cura/PrinterOutput/FirmwareUpdater.py +++ b/cura/PrinterOutput/FirmwareUpdater.py @@ -20,7 +20,7 @@ class FirmwareUpdater(QObject): self._output_device = output_device - self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True) + self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True, name = "FirmwareUpdateThread") self._firmware_file = "" self._firmware_progress = 0 @@ -43,7 +43,7 @@ class FirmwareUpdater(QObject): ## Cleanup after a succesful update def _cleanupAfterUpdate(self) -> None: # Clean up for next attempt. - self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True) + self._update_firmware_thread = Thread(target=self._updateFirmware, daemon=True, name = "FirmwareUpdateThread") self._firmware_file = "" self._onFirmwareProgress(100) self._setFirmwareUpdateState(FirmwareUpdateState.completed) diff --git a/cura/PrinterOutput/GenericOutputController.py b/cura/PrinterOutput/GenericOutputController.py index e770fc79a1..c160459776 100644 --- a/cura/PrinterOutput/GenericOutputController.py +++ b/cura/PrinterOutput/GenericOutputController.py @@ -55,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") @@ -159,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 @@ -167,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/Models/ExtruderConfigurationModel.py b/cura/PrinterOutput/Models/ExtruderConfigurationModel.py index 5b4cb5d6f5..4a1cf4916f 100644 --- a/cura/PrinterOutput/Models/ExtruderConfigurationModel.py +++ b/cura/PrinterOutput/Models/ExtruderConfigurationModel.py @@ -25,15 +25,16 @@ class ExtruderConfigurationModel(QObject): return self._position def setMaterial(self, material: Optional[MaterialOutputModel]) -> None: - if self._hotend_id != material: - self._material = material - self.extruderConfigurationChanged.emit() + if material is None or self._material == material: + return + self._material = material + self.extruderConfigurationChanged.emit() @pyqtProperty(QObject, fset = setMaterial, notify = extruderConfigurationChanged) def activeMaterial(self) -> Optional[MaterialOutputModel]: return self._material - @pyqtProperty(QObject, fset=setMaterial, notify=extruderConfigurationChanged) + @pyqtProperty(QObject, fset = setMaterial, notify = extruderConfigurationChanged) def material(self) -> Optional[MaterialOutputModel]: return self._material diff --git a/cura/PrinterOutput/Models/MaterialOutputModel.py b/cura/PrinterOutput/Models/MaterialOutputModel.py index 7a17ef3cce..3714824a89 100644 --- a/cura/PrinterOutput/Models/MaterialOutputModel.py +++ b/cura/PrinterOutput/Models/MaterialOutputModel.py @@ -34,3 +34,11 @@ class MaterialOutputModel(QObject): @pyqtProperty(str, constant = True) def name(self) -> str: return self._name + + def __eq__(self, other): + if self is other: + return True + if type(other) is not MaterialOutputModel: + return False + + return self.guid == other.guid and self.type == other.type and self.brand == other.brand and self.color == other.color and self.name == other.name diff --git a/cura/PrinterOutput/Models/PrinterConfigurationModel.py b/cura/PrinterOutput/Models/PrinterConfigurationModel.py index 47b9532080..52c7b6f960 100644 --- a/cura/PrinterOutput/Models/PrinterConfigurationModel.py +++ b/cura/PrinterOutput/Models/PrinterConfigurationModel.py @@ -58,6 +58,14 @@ class PrinterConfigurationModel(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) diff --git a/cura/PrinterOutput/Models/PrinterOutputModel.py b/cura/PrinterOutput/Models/PrinterOutputModel.py index 4004a90a33..37135bf663 100644 --- a/cura/PrinterOutput/Models/PrinterOutputModel.py +++ b/cura/PrinterOutput/Models/PrinterOutputModel.py @@ -2,13 +2,14 @@ # 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 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 -MYPY = False -if MYPY: +if TYPE_CHECKING: from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.PrinterOutputController import PrinterOutputController @@ -34,10 +35,11 @@ class PrinterOutputModel(QObject): self._target_bed_temperature = 0 # type: float self._name = "" self._key = "" # Unique identifier + self._unique_name = "" # Unique name (used in Connect) self._controller = output_controller self._controller.canUpdateFirmwareChanged.connect(self._onControllerCanUpdateFirmwareChanged) self._extruders = [ExtruderOutputModel(printer = self, position = i) for i in range(number_of_extruders)] - self._printer_configuration = PrinterConfigurationModel() # Indicates the current configuration setup in this printer + 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 @@ -45,9 +47,12 @@ class PrinterOutputModel(QObject): self._is_preheating = False self._printer_type = "" self._buildplate = "" + self._peripherals = [] # type: List[Peripheral] - self._printer_configuration.extruderConfigurations = [extruder.extruderConfiguration for extruder in - self._extruders] + 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 @@ -80,7 +85,7 @@ class PrinterOutputModel(QObject): 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._active_printer_configuration.printerType = self._printer_type self.typeChanged.emit() self.configurationChanged.emit() @@ -91,7 +96,7 @@ class PrinterOutputModel(QObject): def updateBuildplate(self, buildplate: str) -> None: if self._buildplate != buildplate: self._buildplate = buildplate - self._printer_configuration.buildplateConfiguration = self._buildplate + self._active_printer_configuration.buildplateConfiguration = self._buildplate self.buildplateChanged.emit() self.configurationChanged.emit() @@ -186,6 +191,15 @@ class PrinterOutputModel(QObject): self._name = name self.nameChanged.emit() + @pyqtProperty(str, notify = nameChanged) + def uniqueName(self) -> str: + return self._unique_name + + def updateUniqueName(self, unique_name: str) -> None: + if self._unique_name != unique_name: + self._unique_name = unique_name + self.nameChanged.emit() + ## Update the bed temperature. This only changes it locally. def updateBedTemperature(self, temperature: float) -> None: if self._bed_temperature != temperature: @@ -289,9 +303,48 @@ class PrinterOutputModel(QObject): def _onControllerCanUpdateFirmwareChanged(self) -> None: self.canUpdateFirmwareChanged.emit() - # Returns the configuration (material, variant and buildplate) of the current printer + # Returns the active configuration (material, variant and buildplate) of the current printer @pyqtProperty(QObject, notify = configurationChanged) def printerConfiguration(self) -> Optional[PrinterConfigurationModel]: - if self._printer_configuration.isValid(): - return self._printer_configuration - return None \ No newline at end of file + 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/NetworkedPrinterOutputDevice.py b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py index 86da9bf57f..60be5bc8f3 100644 --- a/cura/PrinterOutput/NetworkedPrinterOutputDevice.py +++ b/cura/PrinterOutput/NetworkedPrinterOutputDevice.py @@ -35,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] @@ -60,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: @@ -133,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 @@ -162,7 +154,7 @@ class NetworkedPrinterOutputDevice(PrinterOutputDevice): part = QHttpPart() if not content_header.startswith("form-data;"): - content_header = "form_data; " + content_header + content_header = "form-data; " + content_header part.setHeader(QNetworkRequest.ContentDispositionHeader, content_header) if content_type is not None: @@ -317,7 +309,6 @@ 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": 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/PrinterOutputDevice.py b/cura/PrinterOutput/PrinterOutputDevice.py index 8e1b220a86..b05e76ad2e 100644 --- a/cura/PrinterOutput/PrinterOutputDevice.py +++ b/cura/PrinterOutput/PrinterOutputDevice.py @@ -10,7 +10,6 @@ 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 @@ -144,7 +143,7 @@ class PrinterOutputDevice(QObject, OutputDevice): 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: + file_handler: Optional["FileHandler"] = None, filter_by_machine: bool = False, **kwargs) -> None: raise NotImplementedError("requestWrite needs to be implemented") @pyqtProperty(QObject, notify = printersChanged) @@ -203,10 +202,6 @@ class PrinterOutputDevice(QObject, OutputDevice): 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: @@ -220,20 +215,28 @@ class PrinterOutputDevice(QObject, OutputDevice): 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() + all_configurations = set() + for printer in self._printers: + if printer.printerConfiguration is not None and printer.printerConfiguration.hasAnyMaterialLoaded(): + all_configurations.add(printer.printerConfiguration) + all_configurations.update(printer.availableConfigurations) + if None in all_configurations: # Shouldn't happen, but it does. I don't see how it could ever happen. Skip adding that configuration. List could end up empty! + Logger.log("e", "Found a broken configuration in the synced list!") + all_configurations.remove(None) + new_configurations = sorted(all_configurations, key = lambda config: config.printerType or "") + if new_configurations != self._unique_configurations: + self._unique_configurations = new_configurations + self.uniqueConfigurationsChanged.emit() # Returns the unique configurations of the printers within this output device @pyqtProperty("QStringList", notify = uniqueConfigurationsChanged) def uniquePrinterTypes(self) -> List[str]: - return list(sorted(set([configuration.printerType for configuration in self._unique_configurations]))) + return list(sorted(set([configuration.printerType or "" for configuration in self._unique_configurations]))) def _onPrintersChanged(self) -> None: for printer in self._printers: printer.configurationChanged.connect(self._updateUniqueConfigurations) + printer.availableConfigurationsChanged.connect(self._updateUniqueConfigurations) # At this point there may be non-updated configurations self._updateUniqueConfigurations() diff --git a/cura/Scene/BuildPlateDecorator.py b/cura/Scene/BuildPlateDecorator.py index dfb465b7ad..cff9f88f62 100644 --- a/cura/Scene/BuildPlateDecorator.py +++ b/cura/Scene/BuildPlateDecorator.py @@ -4,12 +4,12 @@ from cura.Scene.CuraSceneNode import CuraSceneNode ## Make a SceneNode build plate aware CuraSceneNode objects all have this decorator. class BuildPlateDecorator(SceneNodeDecorator): - def __init__(self, build_plate_number = -1): + def __init__(self, build_plate_number: int = -1) -> None: super().__init__() - self._build_plate_number = None + self._build_plate_number = build_plate_number self.setBuildPlateNumber(build_plate_number) - def setBuildPlateNumber(self, nr): + def setBuildPlateNumber(self, nr: int) -> None: # Make sure that groups are set correctly # setBuildPlateForSelection in CuraActions makes sure that no single childs are set. self._build_plate_number = nr @@ -19,7 +19,7 @@ class BuildPlateDecorator(SceneNodeDecorator): for child in self._node.getChildren(): child.callDecoration("setBuildPlateNumber", nr) - def getBuildPlateNumber(self): + def getBuildPlateNumber(self) -> int: return self._build_plate_number def __deepcopy__(self, memo): diff --git a/cura/Scene/ConvexHullDecorator.py b/cura/Scene/ConvexHullDecorator.py index 2d8224eecc..2a160f6069 100644 --- a/cura/Scene/ConvexHullDecorator.py +++ b/cura/Scene/ConvexHullDecorator.py @@ -76,27 +76,46 @@ class ConvexHullDecorator(SceneNodeDecorator): def __deepcopy__(self, memo): return ConvexHullDecorator() + ## The polygon representing the 2D adhesion area. + # If no adhesion is used, the regular convex hull is returned + def getAdhesionArea(self) -> Optional[Polygon]: + if self._node is None: + return None + + hull = self._compute2DConvexHull() + if hull is None: + return None + + return self._add2DAdhesionMargin(hull) + ## Get the unmodified 2D projected convex hull of the node (if any) + # In case of one-at-a-time, this includes adhesion and head+fans clearance def getConvexHull(self) -> Optional[Polygon]: if self._node is None: return None if self._node.callDecoration("isNonPrintingMesh"): return None - hull = self._compute2DConvexHull() - if self._global_stack and self._node is not None and hull is not None: - # Parent can be None if node is just loaded. - if self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" and not self.hasGroupAsParent(self._node): - hull = hull.getMinkowskiHull(Polygon(numpy.array(self._global_stack.getProperty("machine_head_polygon", "value"), numpy.float32))) - hull = self._add2DAdhesionMargin(hull) - return hull + # Parent can be None if node is just loaded. + if self._isSingularOneAtATimeNode(): + hull = self.getConvexHullHeadFull() + if hull is None: + return None + hull = self._add2DAdhesionMargin(hull) + return hull - ## Get the convex hull of the node with the full head size + return self._compute2DConvexHull() + + ## For one at the time this is the convex hull of the node with the full head size + # In case of printing all at once this is None. def getConvexHullHeadFull(self) -> Optional[Polygon]: if self._node is None: return None - return self._compute2DConvexHeadFull() + if self._isSingularOneAtATimeNode(): + return self._compute2DConvexHeadFull() + + return None @staticmethod def hasGroupAsParent(node: "SceneNode") -> bool: @@ -106,38 +125,47 @@ class ConvexHullDecorator(SceneNodeDecorator): return bool(parent.callDecoration("isGroup")) ## Get convex hull of the object + head size - # In case of printing all at once this is the same as the convex hull. + # In case of printing all at once this is None. # For one at the time this is area with intersection of mirrored head def getConvexHullHead(self) -> Optional[Polygon]: if self._node is None: return None if self._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() - if head_with_fans is None: - return None - head_with_fans_with_adhesion_margin = self._add2DAdhesionMargin(head_with_fans) - return head_with_fans_with_adhesion_margin + if self._isSingularOneAtATimeNode(): + head_with_fans = self._compute2DConvexHeadMin() + if head_with_fans is None: + return None + head_with_fans_with_adhesion_margin = self._add2DAdhesionMargin(head_with_fans) + return head_with_fans_with_adhesion_margin return None ## Get convex hull of the node - # In case of printing all at once this is the same as the convex hull. + # In case of printing all at once this None?? # For one at the time this is the area without the head. def getConvexHullBoundary(self) -> Optional[Polygon]: if self._node is None: return None - + if self._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): - # Printing one at a time and it's not an object in a group - return self._compute2DConvexHull() + if self._isSingularOneAtATimeNode(): + # Printing one at a time and it's not an object in a group + return self._compute2DConvexHull() return None + ## Get the buildplate polygon where will be printed + # In case of printing all at once this is the same as convex hull (no individual adhesion) + # For one at the time this includes the adhesion area + def getPrintingArea(self) -> Optional[Polygon]: + if self._isSingularOneAtATimeNode(): + # In one-at-a-time mode, every printed object gets it's own adhesion + printing_area = self.getAdhesionArea() + else: + printing_area = self.getConvexHull() + return printing_area + ## The same as recomputeConvexHull, but using a timer if it was set. def recomputeConvexHullDelayed(self) -> None: if self._recompute_convex_hull_timer is not None: @@ -160,10 +188,9 @@ class ConvexHullDecorator(SceneNodeDecorator): self._convex_hull_node = None return - convex_hull = self.getConvexHull() if self._convex_hull_node: self._convex_hull_node.setParent(None) - hull_node = ConvexHullNode.ConvexHullNode(self._node, convex_hull, self._raft_thickness, root) + hull_node = ConvexHullNode.ConvexHullNode(self._node, self.getPrintingArea(), self._raft_thickness, root) self._convex_hull_node = hull_node def _onSettingValueChanged(self, key: str, property_name: str) -> None: @@ -266,9 +293,13 @@ class ConvexHullDecorator(SceneNodeDecorator): return offset_hull def _getHeadAndFans(self) -> Polygon: - if self._global_stack: - return Polygon(numpy.array(self._global_stack.getHeadAndFansCoordinates(), numpy.float32)) - return Polygon() + if not self._global_stack: + return Polygon() + + polygon = Polygon(numpy.array(self._global_stack.getHeadAndFansCoordinates(), numpy.float32)) + offset_x = self._getSettingProperty("machine_nozzle_offset_x", "value") + offset_y = self._getSettingProperty("machine_nozzle_offset_y", "value") + return polygon.translate(-offset_x, -offset_y) def _compute2DConvexHeadFull(self) -> Optional[Polygon]: convex_hull = self._compute2DConvexHull() @@ -400,6 +431,14 @@ class ConvexHullDecorator(SceneNodeDecorator): return True return self.__isDescendant(root, node.getParent()) + ## True if print_sequence is one_at_a_time and _node is not part of a group + def _isSingularOneAtATimeNode(self) -> bool: + if self._node is None: + return False + return self._global_stack is not None \ + and self._global_stack.getProperty("print_sequence", "value") == "one_at_a_time" \ + and not self.hasGroupAsParent(self._node) + _affected_settings = [ "adhesion_type", "raft_margin", "print_sequence", "skirt_gap", "skirt_line_count", "skirt_brim_line_width", "skirt_distance", "brim_line_count"] diff --git a/cura/Scene/ConvexHullNode.py b/cura/Scene/ConvexHullNode.py index 90bf536308..da2713a522 100644 --- a/cura/Scene/ConvexHullNode.py +++ b/cura/Scene/ConvexHullNode.py @@ -1,6 +1,6 @@ # Copyright (c) 2015 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Optional +from typing import Optional, TYPE_CHECKING from UM.Application import Application from UM.Math.Polygon import Polygon @@ -11,6 +11,9 @@ from UM.Math.Color import Color from UM.Mesh.MeshBuilder import MeshBuilder # To create a mesh to display the convex hull with. from UM.View.GL.OpenGL import OpenGL +if TYPE_CHECKING: + from UM.Mesh.MeshData import MeshData + class ConvexHullNode(SceneNode): shader = None # To prevent the shader from being re-built over and over again, only load it once. @@ -43,7 +46,8 @@ class ConvexHullNode(SceneNode): # The node this mesh is "watching" self._node = node - self._convex_hull_head_mesh = None + # Area of the head + fans for display as a shadow on the buildplate + self._convex_hull_head_mesh = None # type: Optional[MeshData] self._node.decoratorsChanged.connect(self._onNodeDecoratorsChanged) self._onNodeDecoratorsChanged(self._node) @@ -76,14 +80,17 @@ class ConvexHullNode(SceneNode): if self.getParent(): if self.getMeshData() and isinstance(self._node, SceneNode) and self._node.callDecoration("getBuildPlateNumber") == Application.getInstance().getMultiBuildPlateModel().activeBuildPlate: + # The object itself (+ adhesion in one-at-a-time mode) renderer.queueNode(self, transparent = True, shader = ConvexHullNode.shader, backface_cull = True, sort = -8) if self._convex_hull_head_mesh: + # The full head. Rendered as a hint to the user: If this area overlaps another object A; this object + # cannot be printed after A, because the head would hit A while printing the current object renderer.queueNode(self, shader = ConvexHullNode.shader, transparent = True, mesh = self._convex_hull_head_mesh, backface_cull = True, sort = -8) return True def _onNodeDecoratorsChanged(self, node: SceneNode) -> None: - convex_hull_head = self._node.callDecoration("getConvexHullHead") + convex_hull_head = self._node.callDecoration("getConvexHullHeadFull") if convex_hull_head: convex_hull_head_builder = MeshBuilder() convex_hull_head_builder.addConvexPolygon(convex_hull_head.getPoints(), self._mesh_height - self._thickness) diff --git a/cura/Scene/CuraSceneNode.py b/cura/Scene/CuraSceneNode.py index 9038c12b2c..eb609def5a 100644 --- a/cura/Scene/CuraSceneNode.py +++ b/cura/Scene/CuraSceneNode.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from copy import deepcopy @@ -6,13 +6,14 @@ from typing import cast, Dict, List, Optional from UM.Application import Application from UM.Math.AxisAlignedBox import AxisAlignedBox -from UM.Math.Polygon import Polygon #For typing. +from UM.Math.Polygon import Polygon # For typing. from UM.Scene.SceneNode import SceneNode -from UM.Scene.SceneNodeDecorator import SceneNodeDecorator #To cast the deepcopy of every decorator back to SceneNodeDecorator. +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator # To cast the deepcopy of every decorator back to SceneNodeDecorator. + +import cura.CuraApplication # To get the build plate. +from cura.Settings.ExtruderStack import ExtruderStack # For typing. +from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator # For per-object settings. -import cura.CuraApplication #To get the build plate. -from cura.Settings.ExtruderStack import ExtruderStack #For typing. -from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator #For per-object settings. ## Scene nodes that are models are only seen when selecting the corresponding build plate # Note that many other nodes can just be UM SceneNode objects. @@ -20,7 +21,7 @@ class CuraSceneNode(SceneNode): def __init__(self, parent: Optional["SceneNode"] = None, visible: bool = True, name: str = "", no_setting_override: bool = False) -> None: super().__init__(parent = parent, visible = visible, name = name) if not no_setting_override: - self.addDecorator(SettingOverrideDecorator()) # now we always have a getActiveExtruderPosition, unless explicitly disabled + self.addDecorator(SettingOverrideDecorator()) # Now we always have a getActiveExtruderPosition, unless explicitly disabled self._outside_buildarea = False def setOutsideBuildArea(self, new_value: bool) -> None: @@ -58,7 +59,7 @@ class CuraSceneNode(SceneNode): if extruder_id is not None: if extruder_id == extruder.getId(): return extruder - else: # If the id is unknown, then return the extruder in the position 0 + else: # If the id is unknown, then return the extruder in the position 0 try: if extruder.getMetaDataEntry("position", default = "0") == "0": # Check if the position is zero return extruder @@ -85,24 +86,14 @@ class CuraSceneNode(SceneNode): 1.0 ] - ## Return if the provided bbox collides with the bbox of this scene node - def collidesWithBbox(self, check_bbox: AxisAlignedBox) -> bool: - bbox = self.getBoundingBox() - if bbox is not None: - # Mark the node as outside the build volume if the bounding box test fails. - if check_bbox.intersectsBox(bbox) != AxisAlignedBox.IntersectionResult.FullIntersection: - return True - - return False - ## Return if any area collides with the convex hull of this scene node - def collidesWithArea(self, areas: List[Polygon]) -> bool: - convex_hull = self.callDecoration("getConvexHull") + def collidesWithAreas(self, areas: List[Polygon]) -> bool: + convex_hull = self.callDecoration("getPrintingArea") if convex_hull: if not convex_hull.isValid(): return False - # Check for collisions between disallowed areas and the object + # Check for collisions between provided areas and the object for area in areas: overlap = convex_hull.intersectsPolygon(area) if overlap is None: 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..92f06929d2 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -1,15 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import os import urllib.parse import uuid -from typing import Dict, Union, Any, TYPE_CHECKING, List +from typing import Any, cast, Dict, List, TYPE_CHECKING, Union from PyQt5.QtCore import QObject, QUrl from PyQt5.QtWidgets import QMessageBox - from UM.i18n import i18nCatalog from UM.FlameProfiler import pyqtSlot from UM.Logger import Logger @@ -17,21 +16,19 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError from UM.Platform import Platform from UM.SaveFile import SaveFile from UM.Settings.ContainerFormatError import ContainerFormatError +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.InstanceContainer import InstanceContainer +import cura.CuraApplication +from cura.Machines.ContainerTree import ContainerTree if TYPE_CHECKING: from cura.CuraApplication import CuraApplication from cura.Machines.ContainerNode import ContainerNode from cura.Machines.MaterialNode import MaterialNode from cura.Machines.QualityChangesGroup import QualityChangesGroup - from UM.PluginRegistry import PluginRegistry - from cura.Settings.MachineManager import MachineManager - from cura.Machines.MaterialManager import MaterialManager - from cura.Machines.QualityManager import QualityManager - from cura.Settings.CuraContainerRegistry import CuraContainerRegistry catalog = i18nCatalog("cura") @@ -52,17 +49,11 @@ class ContainerManager(QObject): except TypeError: super().__init__() - self._application = application # type: CuraApplication - self._plugin_registry = self._application.getPluginRegistry() # type: PluginRegistry - self._container_registry = self._application.getContainerRegistry() # type: CuraContainerRegistry - self._machine_manager = self._application.getMachineManager() # type: MachineManager - self._material_manager = self._application.getMaterialManager() # type: MaterialManager - self._quality_manager = self._application.getQualityManager() # type: QualityManager self._container_name_filters = {} # type: Dict[str, Dict[str, Any]] @pyqtSlot(str, str, result=str) def getContainerMetaDataEntry(self, container_id: str, entry_names: str) -> str: - metadatas = self._container_registry.findContainersMetadata(id = container_id) + metadatas = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().findContainersMetadata(id = container_id) if not metadatas: Logger.log("w", "Could not get metadata of container %s because it was not found.", container_id) return "" @@ -91,15 +82,19 @@ class ContainerManager(QObject): # Update: In order for QML to use objects and sub objects, those (sub) objects must all be QObject. Is that what we want? @pyqtSlot("QVariant", str, str) def setContainerMetaDataEntry(self, container_node: "ContainerNode", entry_name: str, entry_value: str) -> bool: + if container_node.container is None: + Logger.log("w", "Container node {0} doesn't have a container.".format(container_node.container_id)) + return False root_material_id = container_node.getMetaDataEntry("base_file", "") - if self._container_registry.isReadOnly(root_material_id): + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + if container_registry.isReadOnly(root_material_id): Logger.log("w", "Cannot set metadata of read-only container %s.", root_material_id) return False - - material_group = self._material_manager.getMaterialGroup(root_material_id) - if material_group is None: - Logger.log("w", "Unable to find material group for: %s.", root_material_id) + root_material_query = container_registry.findContainers(id = root_material_id) + if not root_material_query: + Logger.log("w", "Unable to find root material: {root_material}.".format(root_material = root_material_id)) return False + root_material = root_material_query[0] entries = entry_name.split("/") entry_name = entries.pop() @@ -107,7 +102,7 @@ class ContainerManager(QObject): sub_item_changed = False if entries: root_name = entries.pop(0) - root = material_group.root_material_node.getMetaDataEntry(root_name) + root = root_material.getMetaDataEntry(root_name) item = root for _ in range(len(entries)): @@ -120,16 +115,14 @@ class ContainerManager(QObject): entry_name = root_name entry_value = root - container = material_group.root_material_node.getContainer() - if container is not None: - container.setMetaDataEntry(entry_name, entry_value) - if sub_item_changed: #If it was only a sub-item that has changed then the setMetaDataEntry won't correctly notice that something changed, and we must manually signal that the metadata changed. - container.metaDataChanged.emit(container) + root_material.setMetaDataEntry(entry_name, entry_value) + if sub_item_changed: #If it was only a sub-item that has changed then the setMetaDataEntry won't correctly notice that something changed, and we must manually signal that the metadata changed. + root_material.metaDataChanged.emit(root_material) return True @pyqtSlot(str, result = str) def makeUniqueName(self, original_name: str) -> str: - return self._container_registry.uniqueName(original_name) + return cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().uniqueName(original_name) ## Get a list of string that can be used as name filters for a Qt File Dialog # @@ -184,7 +177,7 @@ class ContainerManager(QObject): else: mime_type = self._container_name_filters[file_type]["mime"] - containers = self._container_registry.findContainers(id = container_id) + containers = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().findContainers(id = container_id) if not containers: return {"status": "error", "message": "Container not found"} container = containers[0] @@ -242,18 +235,19 @@ class ContainerManager(QObject): except MimeTypeNotFoundError: return {"status": "error", "message": "Could not determine mime type of file"} - container_type = self._container_registry.getContainerForMimeType(mime_type) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + container_type = container_registry.getContainerForMimeType(mime_type) if not container_type: return {"status": "error", "message": "Could not find a container to handle the specified file."} container_id = urllib.parse.unquote_plus(mime_type.stripExtension(os.path.basename(file_url))) - container_id = self._container_registry.uniqueName(container_id) + container_id = container_registry.uniqueName(container_id) container = container_type(container_id) try: with open(file_url, "rt", encoding = "utf-8") as f: - container.deserialize(f.read()) + container.deserialize(f.read(), file_url) except PermissionError: return {"status": "error", "message": "Permission denied when trying to read the file."} except ContainerFormatError: @@ -263,7 +257,7 @@ class ContainerManager(QObject): container.setDirty(True) - self._container_registry.addContainer(container) + container_registry.addContainer(container) return {"status": "success", "message": "Successfully imported container {0}".format(container.getName())} @@ -275,44 +269,55 @@ class ContainerManager(QObject): # \return \type{bool} True if successful, False if not. @pyqtSlot(result = bool) def updateQualityChanges(self) -> bool: - global_stack = self._machine_manager.activeMachine + application = cura.CuraApplication.CuraApplication.getInstance() + global_stack = application.getMachineManager().activeMachine if not global_stack: return False - self._machine_manager.blurSettings.emit() + application.getMachineManager().blurSettings.emit() current_quality_changes_name = global_stack.qualityChanges.getName() current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") extruder_stacks = list(global_stack.extruders.values()) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + machine_definition_id = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition for stack in [global_stack] + extruder_stacks: # Find the quality_changes container for this stack and merge the contents of the top container into it. quality_changes = stack.qualityChanges if quality_changes.getId() == "empty_quality_changes": - quality_changes = self._quality_manager._createQualityChanges(current_quality_type, current_quality_changes_name, - global_stack, stack) - self._container_registry.addContainer(quality_changes) + quality_changes = InstanceContainer(container_registry.uniqueName((stack.getId() + "_" + current_quality_changes_name).lower().replace(" ", "_"))) + quality_changes.setName(current_quality_changes_name) + quality_changes.setMetaDataEntry("type", "quality_changes") + quality_changes.setMetaDataEntry("quality_type", current_quality_type) + if stack.getMetaDataEntry("position") is not None: # Extruder stacks. + quality_changes.setMetaDataEntry("position", stack.getMetaDataEntry("position")) + quality_changes.setMetaDataEntry("intent_category", stack.quality.getMetaDataEntry("intent_category", "default")) + quality_changes.setMetaDataEntry("setting_version", application.SettingVersion) + quality_changes.setDefinition(machine_definition_id) + container_registry.addContainer(quality_changes) stack.qualityChanges = quality_changes - if not quality_changes or self._container_registry.isReadOnly(quality_changes.getId()): + if not quality_changes or container_registry.isReadOnly(quality_changes.getId()): Logger.log("e", "Could not update quality of a nonexistant or read only quality profile in stack %s", stack.getId()) continue self._performMerge(quality_changes, stack.getTop()) - self._machine_manager.activeQualityChangesGroupChanged.emit() + cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeQualityChangesGroupChanged.emit() return True ## Clear the top-most (user) containers of the active stacks. @pyqtSlot() def clearUserContainers(self) -> None: - self._machine_manager.blurSettings.emit() + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() + machine_manager.blurSettings.emit() send_emits_containers = [] # Go through global and extruder stacks and clear their topmost container (the user settings). - global_stack = self._machine_manager.activeMachine + global_stack = machine_manager.activeMachine extruder_stacks = list(global_stack.extruders.values()) for stack in [global_stack] + extruder_stacks: container = stack.userChanges @@ -320,40 +325,38 @@ class ContainerManager(QObject): send_emits_containers.append(container) # user changes are possibly added to make the current setup match the current enabled extruders - self._machine_manager.correctExtruderSettings() + machine_manager.correctExtruderSettings() for container in send_emits_containers: container.sendPostponedEmits() ## Get a list of materials that have the same GUID as the reference material # - # \param material_id \type{str} the id of the material for which to get the linked materials. - # \return \type{list} a list of names of materials with the same GUID + # \param material_node The node representing the material for which to get + # the same GUID. + # \param exclude_self Whether to include the name of the material you + # provided. + # \return A list of names of materials with the same GUID. @pyqtSlot("QVariant", bool, result = "QStringList") - def getLinkedMaterials(self, material_node: "MaterialNode", exclude_self: bool = False): - guid = material_node.getMetaDataEntry("GUID", "") - - self_root_material_id = material_node.getMetaDataEntry("base_file") - material_group_list = self._material_manager.getMaterialGroupListByGUID(guid) - - linked_material_names = [] - if material_group_list: - for material_group in material_group_list: - if exclude_self and material_group.name == self_root_material_id: - continue - linked_material_names.append(material_group.root_material_node.getMetaDataEntry("name", "")) - return linked_material_names + def getLinkedMaterials(self, material_node: "MaterialNode", exclude_self: bool = False) -> List[str]: + same_guid = ContainerRegistry.getInstance().findInstanceContainersMetadata(GUID = material_node.guid) + if exclude_self: + return list({meta["name"] for meta in same_guid if meta["base_file"] != material_node.base_file}) + else: + return list({meta["name"] for meta in same_guid}) ## Unlink a material from all other materials by creating a new GUID # \param material_id \type{str} the id of the material to create a new GUID for. @pyqtSlot("QVariant") def unlinkMaterial(self, material_node: "MaterialNode") -> None: # Get the material group - material_group = self._material_manager.getMaterialGroup(material_node.getMetaDataEntry("base_file", "")) - - if material_group is None: + if material_node.container is None: # Failed to lazy-load this container. + return + root_material_query = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().findInstanceContainers(id = material_node.getMetaDataEntry("base_file", "")) + if not root_material_query: Logger.log("w", "Unable to find material group for %s", material_node) return + root_material = root_material_query[0] # Generate a new GUID new_guid = str(uuid.uuid4()) @@ -361,9 +364,7 @@ class ContainerManager(QObject): # Update the GUID # NOTE: We only need to set the root material container because XmlMaterialProfile.setMetaDataEntry() will # take care of the derived containers too - container = material_group.root_material_node.getContainer() - if container is not None: - container.setMetaDataEntry("GUID", new_guid) + root_material.setMetaDataEntry("GUID", new_guid) def _performMerge(self, merge_into: InstanceContainer, merge: InstanceContainer, clear_settings: bool = True) -> None: if merge == merge_into: @@ -377,14 +378,16 @@ class ContainerManager(QObject): def _updateContainerNameFilters(self) -> None: self._container_name_filters = {} - for plugin_id, container_type in self._container_registry.getContainerTypes(): + plugin_registry = cura.CuraApplication.CuraApplication.getInstance().getPluginRegistry() + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + for plugin_id, container_type in container_registry.getContainerTypes(): # Ignore default container types since those are not plugins if container_type in (InstanceContainer, ContainerStack, DefinitionContainer): continue serialize_type = "" try: - plugin_metadata = self._plugin_registry.getMetaData(plugin_id) + plugin_metadata = plugin_registry.getMetaData(plugin_id) if plugin_metadata: serialize_type = plugin_metadata["settings_container"]["type"] else: @@ -392,7 +395,7 @@ class ContainerManager(QObject): except KeyError as e: continue - mime_type = self._container_registry.getMimeTypeForContainer(container_type) + mime_type = container_registry.getMimeTypeForContainer(container_type) if mime_type is None: continue entry = { @@ -428,7 +431,7 @@ class ContainerManager(QObject): path = file_url.toLocalFile() if not path: return {"status": "error", "message": catalog.i18nc("@info:status", "Invalid file URL:") + " " + str(file_url)} - return self._container_registry.importProfile(path) + return cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().importProfile(path) @pyqtSlot(QObject, QUrl, str) def exportQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", file_url: QUrl, file_type: str) -> None: @@ -438,8 +441,11 @@ class ContainerManager(QObject): if not path: return - container_list = [n.getContainer() for n in quality_changes_group.getAllNodes() if n.getContainer() is not None] - self._container_registry.exportQualityProfile(container_list, path, file_type) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() + container_list = [cast(InstanceContainer, container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"])[0])] # type: List[InstanceContainer] + for metadata in quality_changes_group.metadata_per_extruder.values(): + container_list.append(cast(InstanceContainer, container_registry.findContainers(id = metadata["id"])[0])) + cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().exportQualityProfile(container_list, path, file_type) __instance = None # type: ContainerManager diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index 6e354a4c79..f6028e9d4d 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,14 +20,16 @@ from UM.Logger import Logger from UM.Message import Message from UM.Platform import Platform from UM.PluginRegistry import PluginRegistry # For getting the possible profile writers to write with. -from UM.Util import parseBool from UM.Resources import Resources +from UM.Util import parseBool +from cura.ReaderWriters.ProfileWriter import ProfileWriter from . import ExtruderStack from . import GlobalStack import cura.CuraApplication -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +from cura.Settings.cura_empty_instance_containers import empty_quality_container +from cura.Machines.ContainerTree import ContainerTree from cura.ReaderWriters.ProfileReader import NoProfileException, ProfileReader from UM.i18n import i18nCatalog @@ -50,10 +52,10 @@ class CuraContainerRegistry(ContainerRegistry): # This will also try to convert a ContainerStack to either Extruder or # Global stack based on metadata information. @override(ContainerRegistry) - def addContainer(self, container): + def addContainer(self, container: ContainerInterface) -> None: # Note: Intentional check with type() because we want to ignore subclasses if type(container) == ContainerStack: - container = self._convertContainerStack(container) + container = self._convertContainerStack(cast(ContainerStack, container)) if isinstance(container, InstanceContainer) and type(container) != type(self.getEmptyInstanceContainer()): # Check against setting version of the definition. @@ -61,7 +63,7 @@ class CuraContainerRegistry(ContainerRegistry): actual_setting_version = int(container.getMetaDataEntry("setting_version", default = 0)) if required_setting_version != actual_setting_version: Logger.log("w", "Instance container {container_id} is outdated. Its setting version is {actual_setting_version} but it should be {required_setting_version}.".format(container_id = container.getId(), actual_setting_version = actual_setting_version, required_setting_version = required_setting_version)) - return #Don't add. + return # Don't add. super().addContainer(container) @@ -71,9 +73,9 @@ class CuraContainerRegistry(ContainerRegistry): # \param new_name \type{string} Base name, which may not be unique # \param fallback_name \type{string} Name to use when (stripped) new_name is empty # \return \type{string} Name that is unique for the specified type and name/id - def createUniqueName(self, container_type, current_name, new_name, fallback_name): + def createUniqueName(self, container_type: str, current_name: str, new_name: str, fallback_name: str) -> str: new_name = new_name.strip() - num_check = re.compile("(.*?)\s*#\d+$").match(new_name) + num_check = re.compile(r"(.*?)\s*#\d+$").match(new_name) if num_check: new_name = num_check.group(1) if new_name == "": @@ -92,7 +94,7 @@ class CuraContainerRegistry(ContainerRegistry): # Both the id and the name are checked, because they may not be the same and it is better if they are both unique # \param container_type \type{string} Type of the container (machine, quality, ...) # \param container_name \type{string} Name to check - def _containerExists(self, container_type, container_name): + def _containerExists(self, container_type: str, container_name: str): container_class = ContainerStack if container_type == "machine" else InstanceContainer return self.findContainersMetadata(container_type = container_class, id = container_name, type = container_type, ignore_case = True) or \ @@ -100,11 +102,12 @@ class CuraContainerRegistry(ContainerRegistry): ## Exports an profile to a file # - # \param instance_ids \type{list} the IDs of the profiles to export. + # \param container_list \type{list} the containers to export. This is not + # necessarily in any order! # \param file_name \type{str} the full path and filename to export to. # \param file_type \type{str} the file type with the format " (*.)" # \return True if the export succeeded, false otherwise. - def exportQualityProfile(self, container_list, file_name, file_type) -> bool: + 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. @@ -126,6 +129,8 @@ class CuraContainerRegistry(ContainerRegistry): 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)) @@ -150,7 +155,7 @@ class CuraContainerRegistry(ContainerRegistry): # \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. @@ -158,7 +163,7 @@ class CuraContainerRegistry(ContainerRegistry): if supported_extension == extension: # This plugin supports a file type with the same extension. supported_description = supported_type.get("description", None) if supported_description == description: # The description is also identical. Assume it's the same file type. - return plugin_registry.getPluginObject(plugin_id) + return cast(ProfileWriter, plugin_registry.getPluginObject(plugin_id)) return None ## Imports a profile from a file @@ -174,6 +179,7 @@ class CuraContainerRegistry(ContainerRegistry): global_stack = Application.getInstance().getGlobalContainerStack() if not global_stack: return {"status": "error", "message": catalog.i18nc("@info:status Don't translate the XML tags !", "Can't import profile from {0} before a printer is added.", file_name)} + container_tree = ContainerTree.getInstance() machine_extruders = [] for position in sorted(global_stack.extruders): @@ -223,7 +229,7 @@ class CuraContainerRegistry(ContainerRegistry): # Make sure we have a profile_definition in the file: if profile_definition is None: break - machine_definitions = self.findDefinitionContainers(id = profile_definition) + machine_definitions = self.findContainers(id = profile_definition) if not machine_definitions: Logger.log("e", "Incorrect profile [%s]. Unknown machine type [%s]", file_name, profile_definition) return {"status": "error", @@ -233,17 +239,17 @@ class CuraContainerRegistry(ContainerRegistry): # Get the expected machine definition. # i.e.: We expect gcode for a UM2 Extended to be defined as normal UM2 gcode... - profile_definition = getMachineDefinitionIDForQualitySearch(machine_definition) - expected_machine_definition = getMachineDefinitionIDForQualitySearch(global_stack.definition) + has_machine_quality = parseBool(machine_definition.getMetaDataEntry("has_machine_quality", "false")) + profile_definition = machine_definition.getMetaDataEntry("quality_definition", machine_definition.getId()) if has_machine_quality else "fdmprinter" + expected_machine_definition = container_tree.machines[global_stack.definition.getId()].quality_definition # And check if the profile_definition matches either one (showing error if not): if profile_definition != expected_machine_definition: - Logger.log("e", "Profile [%s] is for machine [%s] but the current active machine is [%s]. Will not import the profile", file_name, profile_definition, expected_machine_definition) - return { "status": "error", - "message": catalog.i18nc("@info:status Don't translate the XML tags !", "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it.", file_name, profile_definition, expected_machine_definition)} + Logger.log("d", "Profile {file_name} is for machine {profile_definition}, but the current active machine is {expected_machine_definition}. Changing profile's definition.".format(file_name = file_name, profile_definition = profile_definition, expected_machine_definition = expected_machine_definition)) + global_profile.setMetaDataEntry("definition", expected_machine_definition) + for extruder_profile in extruder_profiles: + extruder_profile.setMetaDataEntry("definition", expected_machine_definition) - # Fix the global quality profile's definition field in case it's not correct - global_profile.setMetaDataEntry("definition", expected_machine_definition) quality_name = global_profile.getName() quality_type = global_profile.getMetaDataEntry("quality_type") @@ -266,7 +272,6 @@ class CuraContainerRegistry(ContainerRegistry): profile.setMetaDataEntry("type", "quality_changes") profile.setMetaDataEntry("definition", expected_machine_definition) profile.setMetaDataEntry("quality_type", quality_type) - profile.setMetaDataEntry("position", "0") profile.setDirty(True) if idx == 0: # Move all per-extruder settings to the first extruder's quality_changes @@ -283,13 +288,14 @@ class CuraContainerRegistry(ContainerRegistry): profile.addInstance(new_instance) profile.setDirty(True) - global_profile.removeInstance(qc_setting_key, postpone_emit=True) + global_profile.removeInstance(qc_setting_key, postpone_emit = True) extruder_profiles.append(profile) for profile in extruder_profiles: profile_or_list.append(profile) # Import all profiles + profile_ids_added = [] # type: List[str] for profile_index, profile in enumerate(profile_or_list): if profile_index == 0: # This is assumed to be the global profile @@ -310,11 +316,15 @@ 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 !", - "Failed to import profile from {0}:", - file_name) + " " + result + ""} + # Remove any profiles that did got added. + for profile_id in profile_ids_added: + self.removeContainer(profile_id) + return {"status": "error", "message": catalog.i18nc( + "@info:status Don't translate the XML tag !", + "Failed to import profile from {0}:", + file_name) + " " + result} + profile_ids_added.append(profile.getId()) return {"status": "ok", "message": catalog.i18nc("@info:status", "Successfully imported profile {0}", profile_or_list[0].getName())} # This message is throw when the profile reader doesn't find any profile in the file @@ -324,7 +334,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() @@ -377,21 +387,40 @@ class CuraContainerRegistry(ContainerRegistry): global_stack = Application.getInstance().getGlobalContainerStack() if global_stack is None: return None - definition_id = getMachineDefinitionIDForQualitySearch(global_stack.definition) + definition_id = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition profile.setDefinition(definition_id) # Check to make sure the imported profile actually makes sense in context of the current configuration. # This prevents issues where importing a "draft" profile for a machine without "draft" qualities would report as # successfully imported but then fail to show up. - quality_manager = cura.CuraApplication.CuraApplication.getInstance()._quality_manager - quality_group_dict = quality_manager.getQualityGroupsForMachineDefinition(global_stack) - if quality_type not in quality_group_dict: + quality_group_dict = ContainerTree.getInstance().getCurrentQualityGroups() + # "not_supported" profiles can be imported. + if quality_type != empty_quality_container.getMetaDataEntry("quality_type") and quality_type not in quality_group_dict: return catalog.i18nc("@info:status", "Could not find a quality type {0} for the current configuration.", quality_type) ContainerRegistry.getInstance().addContainer(profile) return None + @override(ContainerRegistry) + def saveDirtyContainers(self) -> None: + # Lock file for "more" atomically loading and saving to/from config dir. + with self.lockFile(): + # Save base files first + for instance in self.findDirtyContainers(container_type=InstanceContainer): + if instance.getMetaDataEntry("removed"): + continue + if instance.getId() == instance.getMetaData().get("base_file"): + self.saveContainer(instance) + + for instance in self.findDirtyContainers(container_type=InstanceContainer): + if instance.getMetaDataEntry("removed"): + continue + self.saveContainer(instance) + + for stack in self.findContainerStacks(): + self.saveContainer(stack) + ## Gets a list of profile writer plugins # \return List of tuples of (plugin_id, meta_data). def _getIOPlugins(self, io_type): @@ -406,7 +435,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") @@ -430,14 +459,14 @@ class CuraContainerRegistry(ContainerRegistry): return new_stack - def _registerSingleExtrusionMachinesExtruderStacks(self): + def _registerSingleExtrusionMachinesExtruderStacks(self) -> None: machines = self.findContainerStacks(type = "machine", machine_extruder_trains = {"0": "fdmextruder"}) for machine in machines: extruder_stacks = self.findContainerStacks(type = "extruder_train", machine = machine.getId()) if not extruder_stacks: self.addExtruderStackForSingleExtrusionMachine(machine, "fdmextruder") - def _onContainerAdded(self, container): + def _onContainerAdded(self, container: ContainerInterface) -> None: # We don't have all the machines loaded in the beginning, so in order to add the missing extruder stack # for single extrusion machines, we subscribe to the containerAdded signal, and whenever a global stack # is added, we check to see if an extruder stack needs to be added. @@ -587,6 +616,7 @@ class CuraContainerRegistry(ContainerRegistry): extruder_quality_changes_container.setMetaDataEntry("setting_version", application.SettingVersion) extruder_quality_changes_container.setMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) extruder_quality_changes_container.setMetaDataEntry("quality_type", machine_quality_changes.getMetaDataEntry("quality_type")) + extruder_quality_changes_container.setMetaDataEntry("intent_category", "default") # Intent categories weren't a thing back then. extruder_quality_changes_container.setDefinition(machine_quality_changes.getDefinition().getId()) self.addContainer(extruder_quality_changes_container) @@ -671,7 +701,7 @@ class CuraContainerRegistry(ContainerRegistry): return extruder_stack - def _findQualityChangesContainerInCuraFolder(self, name): + def _findQualityChangesContainerInCuraFolder(self, name: str) -> Optional[InstanceContainer]: quality_changes_dir = Resources.getPath(cura.CuraApplication.CuraApplication.ResourceTypes.QualityChangesInstanceContainer) instance_container = None @@ -684,7 +714,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 @@ -716,7 +746,7 @@ class CuraContainerRegistry(ContainerRegistry): # due to problems with loading order, some stacks may not have the proper next stack # set after upgrading, because the proper global stack was not yet loaded. This method # makes sure those extruders also get the right stack set. - def _connectUpgradedExtruderStacksToMachines(self): + def _connectUpgradedExtruderStacksToMachines(self) -> None: extruder_stacks = self.findContainers(container_type = ExtruderStack.ExtruderStack) for extruder_stack in extruder_stacks: if extruder_stack.getNextStack(): diff --git a/cura/Settings/CuraContainerStack.py b/cura/Settings/CuraContainerStack.py index 042b065226..1455e140a8 100755 --- a/cura/Settings/CuraContainerStack.py +++ b/cura/Settings/CuraContainerStack.py @@ -87,6 +87,19 @@ class CuraContainerStack(ContainerStack): def qualityChanges(self) -> InstanceContainer: return cast(InstanceContainer, self._containers[_ContainerIndexes.QualityChanges]) + ## Set the intent container. + # + # \param new_intent The new intent container. It is expected to have a "type" metadata entry with the value "intent". + def setIntent(self, new_intent: InstanceContainer, postpone_emit: bool = False) -> None: + self.replaceContainer(_ContainerIndexes.Intent, new_intent, postpone_emit = postpone_emit) + + ## Get the quality container. + # + # \return The intent container. Should always be a valid container, but can be equal to the empty InstanceContainer. + @pyqtProperty(InstanceContainer, fset = setIntent, notify = pyqtContainersChanged) + def intent(self) -> InstanceContainer: + return cast(InstanceContainer, self._containers[_ContainerIndexes.Intent]) + ## Set the quality container. # # \param new_quality The new quality container. It is expected to have a "type" metadata entry with the value "quality". @@ -330,16 +343,18 @@ class CuraContainerStack(ContainerStack): class _ContainerIndexes: UserChanges = 0 QualityChanges = 1 - Quality = 2 - Material = 3 - Variant = 4 - DefinitionChanges = 5 - Definition = 6 + Intent = 2 + Quality = 3 + Material = 4 + Variant = 5 + DefinitionChanges = 6 + Definition = 7 # Simple hash map to map from index to "type" metadata entry IndexTypeMap = { UserChanges: "user", QualityChanges: "quality_changes", + Intent: "intent", Quality: "quality", Material: "material", Variant: "variant", diff --git a/cura/Settings/CuraFormulaFunctions.py b/cura/Settings/CuraFormulaFunctions.py index a8b416eeb5..b35069da6f 100644 --- a/cura/Settings/CuraFormulaFunctions.py +++ b/cura/Settings/CuraFormulaFunctions.py @@ -40,8 +40,8 @@ class CuraFormulaFunctions: global_stack = machine_manager.activeMachine try: - extruder_stack = global_stack.extruders[str(extruder_position)] - except KeyError: + extruder_stack = global_stack.extruderList[int(extruder_position)] + except IndexError: if extruder_position != 0: Logger.log("w", "Value for %s of extruder %s was requested, but that extruder is not available. Returning the result form extruder 0 instead" % (property_key, extruder_position)) # This fixes a very specific fringe case; If a profile was created for a custom printer and one of the @@ -104,11 +104,14 @@ class CuraFormulaFunctions: machine_manager = self._application.getMachineManager() global_stack = machine_manager.activeMachine - extruder_stack = global_stack.extruders[str(extruder_position)] + try: + extruder_stack = global_stack.extruderList[extruder_position] + except IndexError: + Logger.log("w", "Unable to find extruder on in index %s", extruder_position) + else: + context = self.createContextForDefaultValueEvaluation(extruder_stack) - context = self.createContextForDefaultValueEvaluation(extruder_stack) - - return self.getValueInExtruder(extruder_position, property_key, context = context) + return self.getValueInExtruder(extruder_position, property_key, context = context) # Gets all default setting values as a list from all extruders of the currently active machine. # The default values are those excluding the values in the user_changes container. diff --git a/cura/Settings/CuraStackBuilder.py b/cura/Settings/CuraStackBuilder.py index d20e686279..61a04e1be6 100644 --- a/cura/Settings/CuraStackBuilder.py +++ b/cura/Settings/CuraStackBuilder.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional @@ -8,7 +8,8 @@ from UM.Logger import Logger from UM.Settings.Interfaces import DefinitionContainerInterface from UM.Settings.InstanceContainer import InstanceContainer -from cura.Machines.VariantType import VariantType +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.MachineNode import MachineNode from .GlobalStack import GlobalStack from .ExtruderStack import ExtruderStack @@ -26,9 +27,8 @@ class CuraStackBuilder: def createMachine(cls, name: str, definition_id: str) -> Optional[GlobalStack]: from cura.CuraApplication import CuraApplication application = CuraApplication.getInstance() - variant_manager = application.getVariantManager() - quality_manager = application.getQualityManager() registry = application.getContainerRegistry() + container_tree = ContainerTree.getInstance() definitions = registry.findDefinitionContainers(id = definition_id) if not definitions: @@ -37,14 +37,7 @@ class CuraStackBuilder: return None machine_definition = definitions[0] - - # get variant container for the global stack - global_variant_container = application.empty_variant_container - global_variant_node = variant_manager.getDefaultVariantNode(machine_definition, VariantType.BUILD_PLATE) - if global_variant_node: - global_variant_container = global_variant_node.getContainer() - if not global_variant_container: - global_variant_container = application.empty_variant_container + machine_node = container_tree.machines[machine_definition.getId()] generated_name = registry.createUniqueName("machine", "", name, machine_definition.getName()) # Make sure the new name does not collide with any definition or (quality) profile @@ -56,9 +49,9 @@ class CuraStackBuilder: new_global_stack = cls.createGlobalStack( new_stack_id = generated_name, definition = machine_definition, - variant_container = global_variant_container, + variant_container = application.empty_variant_container, material_container = application.empty_material_container, - quality_container = application.empty_quality_container, + quality_container = machine_node.preferredGlobalQuality().container, ) new_global_stack.setName(generated_name) @@ -67,33 +60,9 @@ class CuraStackBuilder: for position in extruder_dict: cls.createExtruderStackWithDefaultSetup(new_global_stack, position) - for new_extruder in new_global_stack.extruders.values(): #Only register the extruders if we're sure that all of them are correct. + for new_extruder in new_global_stack.extruders.values(): # Only register the extruders if we're sure that all of them are correct. registry.addContainer(new_extruder) - preferred_quality_type = machine_definition.getMetaDataEntry("preferred_quality_type") - quality_group_dict = quality_manager.getQualityGroups(new_global_stack) - if not quality_group_dict: - # There is no available quality group, set all quality containers to empty. - new_global_stack.quality = application.empty_quality_container - for extruder_stack in new_global_stack.extruders.values(): - extruder_stack.quality = application.empty_quality_container - else: - # Set the quality containers to the preferred quality type if available, otherwise use the first quality - # type that's available. - if preferred_quality_type not in quality_group_dict: - Logger.log("w", "The preferred quality {quality_type} doesn't exist for this set-up. Choosing a random one.".format(quality_type = preferred_quality_type)) - preferred_quality_type = next(iter(quality_group_dict)) - quality_group = quality_group_dict.get(preferred_quality_type) - - new_global_stack.quality = quality_group.node_for_global.getContainer() - if not new_global_stack.quality: - new_global_stack.quality = application.empty_quality_container - for position, extruder_stack in new_global_stack.extruders.items(): - if position in quality_group.nodes_for_extruders and quality_group.nodes_for_extruders[position].getContainer(): - extruder_stack.quality = quality_group.nodes_for_extruders[position].getContainer() - else: - extruder_stack.quality = application.empty_quality_container - # Register the global stack after the extruder stacks are created. This prevents the registry from adding another # extruder stack because the global stack didn't have one yet (which is enforced since Cura 3.1). registry.addContainer(new_global_stack) @@ -108,36 +77,32 @@ class CuraStackBuilder: def createExtruderStackWithDefaultSetup(cls, global_stack: "GlobalStack", extruder_position: int) -> None: from cura.CuraApplication import CuraApplication application = CuraApplication.getInstance() - variant_manager = application.getVariantManager() - material_manager = application.getMaterialManager() registry = application.getContainerRegistry() - # get variant container for extruders - extruder_variant_container = application.empty_variant_container - extruder_variant_node = variant_manager.getDefaultVariantNode(global_stack.definition, VariantType.NOZZLE, - global_stack = global_stack) - extruder_variant_name = None - if extruder_variant_node: - extruder_variant_container = extruder_variant_node.getContainer() - if not extruder_variant_container: - extruder_variant_container = application.empty_variant_container - extruder_variant_name = extruder_variant_container.getName() - + # Get the extruder definition. extruder_definition_dict = global_stack.getMetaDataEntry("machine_extruder_trains") extruder_definition_id = extruder_definition_dict[str(extruder_position)] try: extruder_definition = registry.findDefinitionContainers(id = extruder_definition_id)[0] - except IndexError as e: + except IndexError: # 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 - material_node = material_manager.getDefaultMaterial(global_stack, str(extruder_position), extruder_variant_name, - extruder_definition = extruder_definition) - if material_node and material_node.getContainer(): - material_container = material_node.getContainer() + # Find out what filament diameter we need. + approximate_diameter = round(extruder_definition.getProperty("material_diameter", "value")) # Can't be modified by definition changes since we are just initialising the stack here. + + # Find the preferred containers. + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + extruder_variant_node = machine_node.variants.get(machine_node.preferred_variant_name) + if not extruder_variant_node: + Logger.log("w", "Could not find preferred nozzle {nozzle_name}. Falling back to {fallback}.".format(nozzle_name = machine_node.preferred_variant_name, fallback = next(iter(machine_node.variants)))) + extruder_variant_node = next(iter(machine_node.variants.values())) + extruder_variant_container = extruder_variant_node.container + material_node = extruder_variant_node.preferredMaterial(approximate_diameter) + material_container = material_node.container + quality_node = material_node.preferredQuality() new_extruder_id = registry.uniqueName(extruder_definition_id) new_extruder = cls.createExtruderStack( @@ -147,7 +112,7 @@ class CuraStackBuilder: position = extruder_position, variant_container = extruder_variant_container, material_container = material_container, - quality_container = application.empty_quality_container + quality_container = quality_node.container ) new_extruder.setNextStack(global_stack) @@ -189,6 +154,7 @@ class CuraStackBuilder: stack.variant = variant_container stack.material = material_container stack.quality = quality_container + stack.intent = application.empty_intent_container stack.qualityChanges = application.empty_quality_changes_container stack.userChanges = user_container @@ -237,6 +203,7 @@ class CuraStackBuilder: stack.variant = variant_container stack.material = material_container stack.quality = quality_container + stack.intent = application.empty_intent_container stack.qualityChanges = application.empty_quality_changes_container stack.userChanges = user_container diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 3ed08cf118..62bf396878 100755 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, QVariant # For communicating data and events to Qt. @@ -12,7 +12,6 @@ from UM.Scene.SceneNode import SceneNode from UM.Scene.Selection import Selection from UM.Scene.Iterator.BreadthFirstIterator import BreadthFirstIterator from UM.Settings.ContainerRegistry import ContainerRegistry # Finding containers by ID. -from UM.Settings.ContainerStack import ContainerStack from typing import Any, cast, Dict, List, Optional, TYPE_CHECKING, Union @@ -42,8 +41,6 @@ class ExtruderManager(QObject): # TODO; I have no idea why this is a union of ID's and extruder stacks. This needs to be fixed at some point. self._selected_object_extruders = [] # type: List[Union[str, "ExtruderStack"]] - self._addCurrentMachineExtruders() - Selection.selectionChanged.connect(self.resetSelectedObjectExtruders) ## Signal to notify other components when the list of extruders for a machine definition changes. @@ -74,7 +71,7 @@ class ExtruderManager(QObject): global_container_stack = self._application.getGlobalContainerStack() if global_container_stack: - extruder_stack_ids = {position: extruder.id for position, extruder in global_container_stack.extruders.items()} + extruder_stack_ids = {extruder.getMetaDataEntry("position", ""): extruder.id for extruder in global_container_stack.extruderList} return extruder_stack_ids @@ -91,16 +88,6 @@ class ExtruderManager(QObject): def activeExtruderIndex(self) -> int: return self._active_extruder_index - ## Gets the extruder name of an extruder of the currently active machine. - # - # \param index The index of the extruder whose name to get. - @pyqtSlot(int, result = str) - def getExtruderName(self, index: int) -> str: - try: - return self.getActiveExtruderStacks()[index].getName() - except IndexError: - return "" - ## Emitted whenever the selectedObjectExtruders property changes. selectedObjectExtrudersChanged = pyqtSignal() @@ -114,7 +101,7 @@ class ExtruderManager(QObject): selected_nodes = [] # type: List["SceneNode"] for node in Selection.getAllSelectedObjects(): if node.callDecoration("isGroup"): - for grouped_node in BreadthFirstIterator(node): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for grouped_node in BreadthFirstIterator(node): if grouped_node.callDecoration("isGroup"): continue @@ -131,7 +118,7 @@ class ExtruderManager(QObject): elif current_extruder_trains: object_extruders.add(current_extruder_trains[0].getId()) - self._selected_object_extruders = list(object_extruders) # type: List[Union[str, "ExtruderStack"]] + self._selected_object_extruders = list(object_extruders) return self._selected_object_extruders @@ -140,7 +127,7 @@ class ExtruderManager(QObject): # This will trigger a recalculation of the extruders used for the # selection. def resetSelectedObjectExtruders(self) -> None: - self._selected_object_extruders = [] # type: List[Union[str, "ExtruderStack"]] + self._selected_object_extruders = [] self.selectedObjectExtrudersChanged.emit() @pyqtSlot(result = QObject) @@ -180,7 +167,7 @@ class ExtruderManager(QObject): # \param setting_key \type{str} The setting to get the property of. # \param property \type{str} The property to get. # \return \type{List} the list of results - def getAllExtruderSettings(self, setting_key: str, prop: str) -> List: + def getAllExtruderSettings(self, setting_key: str, prop: str) -> List[Any]: result = [] for extruder_stack in self.getActiveExtruderStacks(): @@ -205,7 +192,7 @@ class ExtruderManager(QObject): # list. # # \return A list of extruder stacks. - def getUsedExtruderStacks(self) -> List["ContainerStack"]: + def getUsedExtruderStacks(self) -> List["ExtruderStack"]: global_stack = self._application.getGlobalContainerStack() container_registry = ContainerRegistry.getInstance() @@ -321,48 +308,47 @@ class ExtruderManager(QObject): self.resetSelectedObjectExtruders() - ## Adds the extruders of the currently active machine. - def _addCurrentMachineExtruders(self) -> None: - global_stack = self._application.getGlobalContainerStack() + ## Adds the extruders to the selected machine. + def addMachineExtruders(self, global_stack: GlobalStack) -> None: extruders_changed = False + container_registry = ContainerRegistry.getInstance() + global_stack_id = global_stack.getId() - if global_stack: - container_registry = ContainerRegistry.getInstance() - global_stack_id = global_stack.getId() + # Gets the extruder trains that we just created as well as any that still existed. + extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack_id) - # Gets the extruder trains that we just created as well as any that still existed. - extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack_id) + # Make sure the extruder trains for the new machine can be placed in the set of sets + if global_stack_id not in self._extruder_trains: + self._extruder_trains[global_stack_id] = {} + extruders_changed = True - # Make sure the extruder trains for the new machine can be placed in the set of sets - if global_stack_id not in self._extruder_trains: - self._extruder_trains[global_stack_id] = {} - extruders_changed = True + # Register the extruder trains by position + for extruder_train in extruder_trains: + extruder_position = extruder_train.getMetaDataEntry("position") + self._extruder_trains[global_stack_id][extruder_position] = extruder_train - # Register the extruder trains by position - for extruder_train in extruder_trains: - extruder_position = extruder_train.getMetaDataEntry("position") - self._extruder_trains[global_stack_id][extruder_position] = extruder_train + # regardless of what the next stack is, we have to set it again, because of signal routing. ??? + extruder_train.setParent(global_stack) + extruder_train.setNextStack(global_stack) + extruders_changed = True - # regardless of what the next stack is, we have to set it again, because of signal routing. ??? - extruder_train.setParent(global_stack) - extruder_train.setNextStack(global_stack) - extruders_changed = True - - self.fixSingleExtrusionMachineExtruderDefinition(global_stack) - if extruders_changed: - self.extrudersChanged.emit(global_stack_id) - self.setActiveExtruderIndex(0) - self.activeExtruderChanged.emit() + self.fixSingleExtrusionMachineExtruderDefinition(global_stack) + if extruders_changed: + self.extrudersChanged.emit(global_stack_id) # After 3.4, all single-extrusion machines have their own extruder definition files instead of reusing # "fdmextruder". We need to check a machine here so its extruder definition is correct according to this. def fixSingleExtrusionMachineExtruderDefinition(self, global_stack: "GlobalStack") -> None: container_registry = ContainerRegistry.getInstance() expected_extruder_definition_0_id = global_stack.getMetaDataEntry("machine_extruder_trains")["0"] - extruder_stack_0 = global_stack.extruders.get("0") + try: + extruder_stack_0 = global_stack.extruderList[0] + except IndexError: + extruder_stack_0 = None + # At this point, extruder stacks for this machine may not have been loaded yet. In this case, need to look in # the container registry as well. - if not global_stack.extruders: + if not global_stack.extruderList: extruder_trains = container_registry.findContainerStacks(type = "extruder_train", machine = global_stack.getId()) if extruder_trains: @@ -380,7 +366,13 @@ class ExtruderManager(QObject): elif extruder_stack_0.definition.getId() != expected_extruder_definition_0_id: Logger.log("e", "Single extruder printer [{printer}] expected extruder [{expected}], but got [{got}]. I'm making it [{expected}].".format( printer = global_stack.getId(), expected = expected_extruder_definition_0_id, got = extruder_stack_0.definition.getId())) - extruder_definition = container_registry.findDefinitionContainers(id = expected_extruder_definition_0_id)[0] + try: + extruder_definition = container_registry.findDefinitionContainers(id = expected_extruder_definition_0_id)[0] + except IndexError: + # It still needs to break, but we want to know what extruder ID made it break. + msg = "Unable to find extruder definition with the id [%s]" % expected_extruder_definition_0_id + Logger.logException("e", msg) + raise IndexError(msg) extruder_stack_0.definition = extruder_definition ## Get all extruder values for a certain setting. diff --git a/cura/Settings/ExtruderStack.py b/cura/Settings/ExtruderStack.py index edb0e7d41f..5d4b3e38b1 100644 --- a/cura/Settings/ExtruderStack.py +++ b/cura/Settings/ExtruderStack.py @@ -51,6 +51,10 @@ class ExtruderStack(CuraContainerStack): def getNextStack(self) -> Optional["GlobalStack"]: return super().getNextStack() + @pyqtProperty(int, constant = True) + def position(self) -> int: + return int(self.getMetaDataEntry("position")) + def setEnabled(self, enabled: bool) -> None: if self.getMetaDataEntry("enabled", True) == enabled: # No change. return # Don't emit a signal then. @@ -135,12 +139,15 @@ class ExtruderStack(CuraContainerStack): if limit_to_extruder == -1: limit_to_extruder = int(cura.CuraApplication.CuraApplication.getInstance().getMachineManager().defaultExtruderPosition) limit_to_extruder = str(limit_to_extruder) + if (limit_to_extruder is not None and limit_to_extruder != "-1") and self.getMetaDataEntry("position") != str(limit_to_extruder): - if str(limit_to_extruder) in self.getNextStack().extruders: - result = self.getNextStack().extruders[str(limit_to_extruder)].getProperty(key, property_name, context) + try: + result = self.getNextStack().extruderList[int(limit_to_extruder)].getProperty(key, property_name, context) if result is not None: context.popContainer() return result + except IndexError: + pass result = super().getProperty(key, property_name, context) context.popContainer() diff --git a/cura/Settings/GlobalStack.py b/cura/Settings/GlobalStack.py index f6c739a08e..d3a8842aa3 100755 --- a/cura/Settings/GlobalStack.py +++ b/cura/Settings/GlobalStack.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 collections import defaultdict @@ -8,7 +8,7 @@ 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 @@ -20,6 +20,7 @@ from UM.Platform import Platform from UM.Util import parseBool import cura.CuraApplication +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType from . import Exceptions from .CuraContainerStack import CuraContainerStack @@ -61,12 +62,13 @@ 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") @@ -107,6 +109,19 @@ class GlobalStack(CuraContainerStack): pass return result + # Returns a boolean indicating if this machine has a remote connection. A machine is considered as remotely + # connected if its connection types contain one of the following values: + # - ConnectionType.NetworkConnection + # - ConnectionType.CloudConnection + @pyqtProperty(bool, notify = configuredConnectionTypesChanged) + def hasRemoteConnection(self) -> bool: + has_remote_connection = False + + for connection_type in self.configuredConnectionTypes: + has_remote_connection |= connection_type in [ConnectionType.NetworkConnection.value, + ConnectionType.CloudConnection.value] + return has_remote_connection + ## \sa configuredConnectionTypes def addConfiguredConnectionType(self, connection_type: int) -> None: configured_connection_types = self.configuredConnectionTypes @@ -118,7 +133,7 @@ class GlobalStack(CuraContainerStack): ## \sa configuredConnectionTypes def removeConfiguredConnectionType(self, connection_type: int) -> None: configured_connection_types = self.configuredConnectionTypes - if connection_type in self.configured_connection_types: + if connection_type in configured_connection_types: # Store the values as a string. configured_connection_types.remove(connection_type) self.setMetaDataEntry("connection_type", ",".join([str(c_type) for c_type in configured_connection_types])) @@ -130,6 +145,14 @@ class GlobalStack(CuraContainerStack): return "machine_stack" return configuration_type + def getIntentCategory(self) -> str: + intent_category = "default" + for extruder in self.extruderList: + category = extruder.intent.getMetaDataEntry("intent_category", "default") + if category != "default" and category != intent_category: + intent_category = category + return intent_category + def getBuildplateName(self) -> Optional[str]: name = None if self.variant.getId() != "empty_variant": @@ -264,18 +287,18 @@ class GlobalStack(CuraContainerStack): def getHeadAndFansCoordinates(self): return self.getProperty("machine_head_with_fans_polygon", "value") - def getHasMaterials(self) -> bool: + @pyqtProperty(bool, constant = True) + def hasMaterials(self) -> bool: return parseBool(self.getMetaDataEntry("has_materials", False)) - def getHasVariants(self) -> bool: + @pyqtProperty(bool, constant = True) + def hasVariants(self) -> bool: return parseBool(self.getMetaDataEntry("has_variants", False)) - def getHasVariantsBuildPlates(self) -> bool: + @pyqtProperty(bool, constant = True) + def hasVariantBuildplates(self) -> bool: return parseBool(self.getMetaDataEntry("has_variant_buildplates", False)) - def getHasMachineQuality(self) -> bool: - return parseBool(self.getMetaDataEntry("has_machine_quality", False)) - ## Get default firmware file name if one is specified in the firmware @pyqtSlot(result = str) def getDefaultFirmwareName(self) -> str: @@ -302,6 +325,17 @@ class GlobalStack(CuraContainerStack): Logger.log("w", "Firmware file %s not found.", hex_file) return "" + def getName(self) -> str: + return self._metadata.get("group_name", self._metadata.get("name", "")) + + def setName(self, name: "str") -> None: + super().setName(name) + + nameChanged = pyqtSignal() + name = pyqtProperty(str, fget=getName, fset=setName, notify=nameChanged) + + + ## private: global_stack_mime = MimeType( name = "application/x-cura-globalstack", diff --git a/cura/Settings/IntentManager.py b/cura/Settings/IntentManager.py new file mode 100644 index 0000000000..5133b401b4 --- /dev/null +++ b/cura/Settings/IntentManager.py @@ -0,0 +1,179 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal, pyqtSlot +from typing import Any, Dict, List, Optional, Set, Tuple, TYPE_CHECKING + +from UM.Logger import Logger +from UM.Settings.InstanceContainer import InstanceContainer + +import cura.CuraApplication +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.cura_empty_instance_containers import empty_intent_container + +if TYPE_CHECKING: + from UM.Settings.InstanceContainer import InstanceContainer + + +## Front-end for querying which intents are available for a certain +# configuration. +class IntentManager(QObject): + __instance = None + + ## This class is a singleton. + @classmethod + def getInstance(cls): + if not cls.__instance: + cls.__instance = IntentManager() + return cls.__instance + + intentCategoryChanged = pyqtSignal() #Triggered when we switch categories. + + ## Gets the metadata dictionaries of all intent profiles for a given + # configuration. + # + # \param definition_id ID of the printer. + # \param nozzle_name Name of the nozzle. + # \param material_base_file The base_file of the material. + # \return A list of metadata dictionaries matching the search criteria, or + # an empty list if nothing was found. + def intentMetadatas(self, definition_id: str, nozzle_name: str, material_base_file: str) -> List[Dict[str, Any]]: + intent_metadatas = [] # type: List[Dict[str, Any]] + try: + materials = ContainerTree.getInstance().machines[definition_id].variants[nozzle_name].materials + except KeyError: + Logger.log("w", "Unable to find the machine %s or the variant %s", definition_id, nozzle_name) + materials = {} + if material_base_file not in materials: + return intent_metadatas + + material_node = materials[material_base_file] + for quality_node in material_node.qualities.values(): + for intent_node in quality_node.intents.values(): + intent_metadatas.append(intent_node.getMetadata()) + return intent_metadatas + + ## Collects and returns all intent categories available for the given + # parameters. Note that the 'default' category is always available. + # + # \param definition_id ID of the printer. + # \param nozzle_name Name of the nozzle. + # \param material_id ID of the material. + # \return A set of intent category names. + def intentCategories(self, definition_id: str, nozzle_id: str, material_id: str) -> List[str]: + categories = set() + for intent in self.intentMetadatas(definition_id, nozzle_id, material_id): + categories.add(intent["intent_category"]) + categories.add("default") #The "empty" intent is not an actual profile specific to the configuration but we do want it to appear in the categories list. + return list(categories) + + ## List of intents to be displayed in the interface. + # + # For the interface this will have to be broken up into the different + # intent categories. That is up to the model there. + # + # \return A list of tuples of intent_category and quality_type. The actual + # instance may vary per extruder. + def getCurrentAvailableIntents(self) -> List[Tuple[str, str]]: + application = cura.CuraApplication.CuraApplication.getInstance() + global_stack = application.getGlobalContainerStack() + if global_stack is None: + return [("default", "normal")] + # TODO: We now do this (return a default) if the global stack is missing, but not in the code below, + # even though there should always be defaults. The problem then is what to do with the quality_types. + # Currently _also_ inconsistent with 'currentAvailableIntentCategories', which _does_ return default. + quality_groups = ContainerTree.getInstance().getCurrentQualityGroups() + available_quality_types = {quality_group.quality_type for quality_group in quality_groups.values() if quality_group.node_for_global is not None} + + final_intent_ids = set() # type: Set[str] + current_definition_id = global_stack.definition.getId() + for extruder_stack in global_stack.extruderList: + if not extruder_stack.isEnabled: + continue + nozzle_name = extruder_stack.variant.getMetaDataEntry("name") + material_id = extruder_stack.material.getMetaDataEntry("base_file") + final_intent_ids |= {metadata["id"] for metadata in self.intentMetadatas(current_definition_id, nozzle_name, material_id) if metadata.get("quality_type") in available_quality_types} + + result = set() # type: Set[Tuple[str, str]] + for intent_id in final_intent_ids: + intent_metadata = application.getContainerRegistry().findContainersMetadata(id = intent_id)[0] + result.add((intent_metadata["intent_category"], intent_metadata["quality_type"])) + return list(result) + + ## List of intent categories available in either of the extruders. + # + # This is purposefully inconsistent with the way that the quality types + # are listed. The quality types will show all quality types available in + # the printer using any configuration. This will only list the intent + # categories that are available using the current configuration (but the + # union over the extruders). + # \return List of all categories in the current configurations of all + # extruders. + def currentAvailableIntentCategories(self) -> List[str]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return ["default"] + current_definition_id = global_stack.definition.getId() + final_intent_categories = set() # type: Set[str] + for extruder_stack in global_stack.extruderList: + if not extruder_stack.isEnabled: + continue + nozzle_name = extruder_stack.variant.getMetaDataEntry("name") + material_id = extruder_stack.material.getMetaDataEntry("base_file") + final_intent_categories.update(self.intentCategories(current_definition_id, nozzle_name, material_id)) + return list(final_intent_categories) + + ## The intent that gets selected by default when no intent is available for + # the configuration, an extruder can't match the intent that the user + # selects, or just when creating a new printer. + def getDefaultIntent(self) -> "InstanceContainer": + return empty_intent_container + + @pyqtProperty(str, notify = intentCategoryChanged) + def currentIntentCategory(self) -> str: + application = cura.CuraApplication.CuraApplication.getInstance() + active_extruder_stack = application.getMachineManager().activeStack + if active_extruder_stack is None: + return "" + return active_extruder_stack.intent.getMetaDataEntry("intent_category", "") + + ## Apply intent on the stacks. + @pyqtSlot(str, str) + def selectIntent(self, intent_category: str, quality_type: str) -> None: + Logger.log("i", "Attempting to set intent_category to [%s] and quality type to [%s]", intent_category, quality_type) + old_intent_category = self.currentIntentCategory + application = cura.CuraApplication.CuraApplication.getInstance() + global_stack = application.getGlobalContainerStack() + if global_stack is None: + return + current_definition_id = global_stack.definition.getId() + machine_node = ContainerTree.getInstance().machines[current_definition_id] + for extruder_stack in global_stack.extruderList: + nozzle_name = extruder_stack.variant.getMetaDataEntry("name") + material_id = extruder_stack.material.getMetaDataEntry("base_file") + + material_node = machine_node.variants[nozzle_name].materials[material_id] + + # Since we want to switch to a certain quality type, check the tree if we have one. + quality_node = None + for q_node in material_node.qualities.values(): + if q_node.quality_type == quality_type: + quality_node = q_node + + if quality_node is None: + Logger.log("w", "Unable to find quality_type [%s] for extruder [%s]", quality_type, extruder_stack.getId()) + continue + + # Check that quality node if we can find a matching intent. + intent_id = None + for id, intent_node in quality_node.intents.items(): + if intent_node.intent_category == intent_category: + intent_id = id + intent = application.getContainerRegistry().findContainers(id = intent_id) + if intent: + extruder_stack.intent = intent[0] + else: + extruder_stack.intent = self.getDefaultIntent() + application.getMachineManager().setQualityGroupByQualityType(quality_type) + if old_intent_category != intent_category: + self.intentCategoryChanged.emit() diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 52906b7dbb..0138d68a61 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import time @@ -22,7 +22,12 @@ from UM.Message import Message from UM.Settings.SettingFunction import SettingFunction from UM.Signal import postponeSignals, CompressTechnique -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +import cura.CuraApplication # Imported like this to prevent circular references. + +from cura.Machines.ContainerNode import ContainerNode +from cura.Machines.ContainerTree import ContainerTree +from cura.Machines.Models.IntentCategoryModel import IntentCategoryModel + from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice, ConnectionType from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel @@ -32,23 +37,19 @@ from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.cura_empty_instance_containers import (empty_definition_changes_container, empty_variant_container, empty_material_container, empty_quality_container, - empty_quality_changes_container) + empty_quality_changes_container, empty_intent_container) from .CuraStackBuilder import CuraStackBuilder from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") - +from cura.Settings.GlobalStack import GlobalStack if TYPE_CHECKING: from cura.CuraApplication import CuraApplication - from cura.Settings.CuraContainerStack import CuraContainerStack - from cura.Settings.GlobalStack import GlobalStack - from cura.Machines.MaterialManager import MaterialManager - from cura.Machines.QualityManager import QualityManager - from cura.Machines.VariantManager import VariantManager - from cura.Machines.ContainerNode import ContainerNode + from cura.Machines.MaterialNode import MaterialNode from cura.Machines.QualityChangesGroup import QualityChangesGroup from cura.Machines.QualityGroup import QualityGroup + from cura.Machines.VariantNode import VariantNode class MachineManager(QObject): @@ -59,8 +60,6 @@ class MachineManager(QObject): self._global_container_stack = None # type: Optional[GlobalStack] self._current_root_material_id = {} # type: Dict[str, str] - self._current_quality_group = None # type: Optional[QualityGroup] - self._current_quality_changes_group = None # type: Optional[QualityChangesGroup] self._default_extruder_position = "0" # to be updated when extruders are switched on and off @@ -96,7 +95,6 @@ class MachineManager(QObject): extruder_manager.activeExtruderChanged.connect(self.activeQualityChanged) self.globalContainerChanged.connect(self.activeStackChanged) - self.globalValueChanged.connect(self.activeStackValueChanged) ExtruderManager.getInstance().activeExtruderChanged.connect(self.activeStackChanged) self.activeStackChanged.connect(self.activeStackValueChanged) @@ -119,22 +117,20 @@ class MachineManager(QObject): if containers: containers[0].nameChanged.connect(self._onMaterialNameChanged) - self._material_manager = self._application.getMaterialManager() # type: MaterialManager - self._variant_manager = self._application.getVariantManager() # type: VariantManager - self._quality_manager = self._application.getQualityManager() # type: QualityManager - - # When the materials lookup table gets updated, it can mean that a material has its name changed, which should - # be reflected on the GUI. This signal emission makes sure that it happens. - self._material_manager.materialsUpdated.connect(self.rootMaterialChanged) - # When the materials get updated, it can be that an activated material's diameter gets changed. In that case, - # a material update should be triggered to make sure that the machine still has compatible materials activated. - self._material_manager.materialsUpdated.connect(self._updateUponMaterialMetadataChange) self.rootMaterialChanged.connect(self._onRootMaterialChanged) # Emit the printerConnectedStatusChanged when either globalContainerChanged or outputDevicesChanged are emitted self.globalContainerChanged.connect(self.printerConnectedStatusChanged) self.outputDevicesChanged.connect(self.printerConnectedStatusChanged) + # For updating active quality display name + self.activeQualityChanged.connect(self.activeQualityDisplayNameChanged) + self.activeIntentChanged.connect(self.activeQualityDisplayNameChanged) + self.activeQualityGroupChanged.connect(self.activeQualityDisplayNameChanged) + self.activeQualityChangesGroupChanged.connect(self.activeQualityDisplayNameChanged) + + activeQualityDisplayNameChanged = pyqtSignal() + activeQualityGroupChanged = pyqtSignal() activeQualityChangesGroupChanged = pyqtSignal() @@ -142,10 +138,10 @@ class MachineManager(QObject): activeMaterialChanged = pyqtSignal() activeVariantChanged = pyqtSignal() activeQualityChanged = pyqtSignal() - activeStackChanged = pyqtSignal() # Emitted whenever the active stack is changed (ie: when changing between extruders, changing a profile, but not when changing a value) - extruderChanged = pyqtSignal() + activeIntentChanged = pyqtSignal() + activeStackChanged = pyqtSignal() # Emitted whenever the active extruder stack is changed (ie: when switching the active extruder tab or changing between printers) + extruderChanged = pyqtSignal() # Emitted whenever an extruder is activated or deactivated or the default extruder changes. - globalValueChanged = pyqtSignal() # Emitted whenever a value inside global container is changed. activeStackValueChanged = pyqtSignal() # Emitted whenever a value inside the active stack is changed. activeStackValidationChanged = pyqtSignal() # Emitted whenever a validation inside active container is changed stacksValidationChanged = pyqtSignal() # Emitted whenever a validation is changed @@ -158,7 +154,6 @@ 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") @@ -184,9 +179,11 @@ class MachineManager(QObject): # Create the configuration model with the current data in Cura self._current_printer_configuration.printerType = self._global_container_stack.definition.getName() - self._current_printer_configuration.extruderConfigurations = [] - for extruder in self._global_container_stack.extruders.values(): - extruder_configuration = ExtruderConfigurationModel() + + if len(self._current_printer_configuration.extruderConfigurations) != len(self._global_container_stack.extruderList): + self._current_printer_configuration.extruderConfigurations = [ExtruderConfigurationModel() for extruder in self._global_container_stack.extruderList] + + for extruder, extruder_configuration in zip(self._global_container_stack.extruderList, self._current_printer_configuration.extruderConfigurations): # For compare just the GUID is needed at this moment mat_type = extruder.material.getMetaDataEntry("material") if extruder.material != empty_material_container else None mat_guid = extruder.material.getMetaDataEntry("GUID") if extruder.material != empty_material_container else None @@ -198,11 +195,11 @@ class MachineManager(QObject): extruder_configuration.position = int(extruder.getMetaDataEntry("position")) extruder_configuration.material = material_model extruder_configuration.hotendID = extruder.variant.getName() if extruder.variant != empty_variant_container else None - self._current_printer_configuration.extruderConfigurations.append(extruder_configuration) # An empty build plate configuration from the network printer is presented as an empty string, so use "" for an # empty build plate. - self._current_printer_configuration.buildplateConfiguration = self._global_container_stack.getProperty("machine_buildplate_type", "value") if self._global_container_stack.variant != empty_variant_container else "" + self._current_printer_configuration.buildplateConfiguration = self._global_container_stack.getProperty("machine_buildplate_type", "value")\ + if self._global_container_stack.variant != empty_variant_container else self._global_container_stack.getProperty("machine_buildplate_type", "default_value") self.currentConfigurationChanged.emit() @pyqtSlot(QObject, result = bool) @@ -220,12 +217,9 @@ class MachineManager(QObject): return 0 return len(general_definition_containers[0].getAllKeys()) + ## Triggered when the global container stack is changed in CuraApplication. def _onGlobalContainerChanged(self) -> None: if self._global_container_stack: - try: - self._global_container_stack.nameChanged.disconnect(self._onMachineNameChanged) - except TypeError: # pyQtSignal gives a TypeError when disconnecting from something that was already disconnected. - pass try: self._global_container_stack.containersChanged.disconnect(self._onContainersChanged) except TypeError: @@ -250,7 +244,6 @@ class MachineManager(QObject): if self._global_container_stack: self._application.getPreferences().setValue("cura/active_machine", self._global_container_stack.getId()) - self._global_container_stack.nameChanged.connect(self._onMachineNameChanged) self._global_container_stack.containersChanged.connect(self._onContainersChanged) self._global_container_stack.propertyChanged.connect(self._onPropertyChanged) @@ -270,6 +263,8 @@ class MachineManager(QObject): extruder_stack.propertyChanged.connect(self._onPropertyChanged) extruder_stack.containersChanged.connect(self._onContainersChanged) + self._onRootMaterialChanged() + self.activeQualityGroupChanged.emit() def _onActiveExtruderStackChanged(self) -> None: @@ -280,6 +275,7 @@ class MachineManager(QObject): self.activeQualityChanged.emit() self.activeVariantChanged.emit() self.activeMaterialChanged.emit() + self.activeIntentChanged.emit() self.rootMaterialChanged.emit() self.numberExtrudersEnabledChanged.emit() @@ -292,88 +288,39 @@ class MachineManager(QObject): # Notify UI items, such as the "changed" star in profile pull down menu. self.activeStackValueChanged.emit() - ## Given a global_stack, make sure that it's all valid by searching for this quality group and applying it again - def _initMachineState(self, global_stack: "CuraContainerStack") -> None: - material_dict = {} - for position, extruder in global_stack.extruders.items(): - material_dict[position] = extruder.material.getMetaDataEntry("base_file") - self._current_root_material_id = material_dict - - # Update materials to make sure that the diameters match with the machine's - for position in global_stack.extruders: - self.updateMaterialWithVariant(position) - - global_quality = global_stack.quality - quality_type = global_quality.getMetaDataEntry("quality_type") - global_quality_changes = global_stack.qualityChanges - global_quality_changes_name = global_quality_changes.getName() - - # Try to set the same quality/quality_changes as the machine specified. - # If the quality/quality_changes is not available, switch to the default or the first quality that's available. - same_quality_found = False - quality_groups = self._application.getQualityManager().getQualityGroups(global_stack) - - if global_quality_changes.getId() != "empty_quality_changes": - quality_changes_groups = self._application.getQualityManager().getQualityChangesGroups(global_stack) - new_quality_changes_group = quality_changes_groups.get(global_quality_changes_name) - if new_quality_changes_group is not None: - self._setQualityChangesGroup(new_quality_changes_group) - same_quality_found = True - Logger.log("i", "Machine '%s' quality changes set to '%s'", - global_stack.getName(), new_quality_changes_group.name) - else: - new_quality_group = quality_groups.get(quality_type) - if new_quality_group is not None: - self._setQualityGroup(new_quality_group, empty_quality_changes = True) - same_quality_found = True - Logger.log("i", "Machine '%s' quality set to '%s'", - global_stack.getName(), new_quality_group.quality_type) - - # Could not find the specified quality/quality_changes, switch to the preferred quality if available, - # otherwise the first quality that's available, otherwise empty (not supported). - if not same_quality_found: - Logger.log("i", "Machine '%s' could not find quality_type '%s' and quality_changes '%s'. " - "Available quality types are [%s]. Switching to default quality.", - global_stack.getName(), quality_type, global_quality_changes_name, - ", ".join(quality_groups.keys())) - preferred_quality_type = global_stack.getMetaDataEntry("preferred_quality_type") - quality_group = quality_groups.get(preferred_quality_type) - if quality_group is None: - if quality_groups: - quality_group = list(quality_groups.values())[0] - self._setQualityGroup(quality_group, empty_quality_changes = True) - @pyqtSlot(str) def setActiveMachine(self, stack_id: str) -> None: self.blurSettings.emit() # Ensure no-one has focus. container_registry = CuraContainerRegistry.getInstance() - containers = container_registry.findContainerStacks(id = stack_id) if not containers: return - global_stack = containers[0] + global_stack = cast(GlobalStack, containers[0]) # Make sure that the default machine actions for this machine have been added self._application.getMachineActionManager().addDefaultMachineActions(global_stack) - ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack) + extruder_manager = ExtruderManager.getInstance() + extruder_manager.fixSingleExtrusionMachineExtruderDefinition(global_stack) if not global_stack.isValid(): # Mark global stack as invalid ConfigurationErrorMessage.getInstance().addFaultyContainers(global_stack.getId()) return # We're done here self._global_container_stack = global_stack + extruder_manager.addMachineExtruders(global_stack) self._application.setGlobalContainerStack(global_stack) - ExtruderManager.getInstance()._globalContainerStackChanged() - self._initMachineState(global_stack) - self._onGlobalContainerChanged() # Switch to the first enabled extruder self.updateDefaultExtruder() default_extruder_position = int(self.defaultExtruderPosition) - ExtruderManager.getInstance().setActiveExtruderIndex(default_extruder_position) + old_active_extruder_index = extruder_manager.activeExtruderIndex + extruder_manager.setActiveExtruderIndex(default_extruder_position) + if old_active_extruder_index == default_extruder_position: + # This signal might not have been emitted yet (if it didn't change) but we still want the models to update that depend on it because we changed the contents of the containers too. + extruder_manager.activeExtruderChanged.emit() self.__emitChangedSignals() @@ -388,7 +335,7 @@ 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) @@ -500,27 +447,6 @@ class MachineManager(QObject): def stacksHaveErrors(self) -> bool: 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() - return "" - @pyqtProperty(str, notify = globalContainerChanged) def activeMachineFirmwareVersion(self) -> str: if not self._printer_output_devices: @@ -537,24 +463,6 @@ class MachineManager(QObject): def printerConnected(self) -> bool: return bool(self._printer_output_devices) - @pyqtProperty(bool, notify = printerConnectedStatusChanged) - def activeMachineHasRemoteConnection(self) -> bool: - if self._global_container_stack: - has_remote_connection = False - - for connection_type in self._global_container_stack.configuredConnectionTypes: - has_remote_connection |= connection_type in [ConnectionType.NetworkConnection.value, - ConnectionType.CloudConnection.value] - return has_remote_connection - return False - - @pyqtProperty("QVariantList", notify=globalContainerChanged) - @deprecated("use Cura.MachineManager.activeMachine.configuredConnectionTypes instead", "4.1") - def activeMachineConfiguredConnectionTypes(self): - if self._global_container_stack: - return self._global_container_stack.configuredConnectionTypes - return [] - @pyqtProperty(bool, notify = printerConnectedStatusChanged) def activeMachineIsGroup(self) -> bool: return bool(self._printer_output_devices) and len(self._printer_output_devices[0].printers) > 1 @@ -598,7 +506,7 @@ class MachineManager(QObject): def activeStack(self) -> Optional["ExtruderStack"]: return self._active_container_stack - @pyqtProperty(str, notify=activeMaterialChanged) + @pyqtProperty(str, notify = activeMaterialChanged) def activeMaterialId(self) -> str: if self._active_container_stack: material = self._active_container_stack.material @@ -606,44 +514,20 @@ class MachineManager(QObject): return material.getId() return "" - ## Gets a dict with the active materials ids set in all extruder stacks and the global stack - # (when there is one extruder, the material is set in the global stack) - # - # \return The material ids in all stacks - @pyqtProperty("QVariantMap", notify = activeMaterialChanged) - def allActiveMaterialIds(self) -> Dict[str, str]: - result = {} - - active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - for stack in active_stacks: - material_container = stack.material - if not material_container: - continue - result[stack.getId()] = material_container.getId() - - return result - ## Gets the layer height of the currently active quality profile. # # This is indicated together with the name of the active quality profile. # # \return The layer height of the currently active quality profile. If - # there is no quality profile, this returns 0. + # there is no quality profile, this returns the default layer height. @pyqtProperty(float, notify = activeQualityGroupChanged) def activeQualityLayerHeight(self) -> float: if not self._global_container_stack: return 0 - if self._current_quality_changes_group: - value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = self._global_container_stack.qualityChanges.getId()) - if isinstance(value, SettingFunction): - value = value(self._global_container_stack) - return value - elif self._current_quality_group: - value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = self._global_container_stack.quality.getId()) - if isinstance(value, SettingFunction): - value = value(self._global_container_stack) - return value - return 0 + value = self._global_container_stack.getRawProperty("layer_height", "value", skip_until_container = self._global_container_stack.qualityChanges.getId()) + if isinstance(value, SettingFunction): + value = value(self._global_container_stack) + return value @pyqtProperty(str, notify = activeVariantChanged) def globalVariantName(self) -> str: @@ -655,27 +539,57 @@ class MachineManager(QObject): @pyqtProperty(str, notify = activeQualityGroupChanged) def activeQualityType(self) -> str: - quality_type = "" - if self._active_container_stack: - if self._current_quality_group: - quality_type = self._current_quality_group.quality_type - return quality_type + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + return "" + return global_stack.quality.getMetaDataEntry("quality_type") @pyqtProperty(bool, notify = activeQualityGroupChanged) def isActiveQualitySupported(self) -> bool: - is_supported = False - if self._global_container_stack: - if self._current_quality_group: - is_supported = self._current_quality_group.is_available - return is_supported + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_container_stack: + return False + active_quality_group = self.activeQualityGroup() + if active_quality_group is None: + return False + return active_quality_group.is_available @pyqtProperty(bool, notify = activeQualityGroupChanged) def isActiveQualityExperimental(self) -> bool: - is_experimental = False - if self._global_container_stack: - if self._current_quality_group: - is_experimental = self._current_quality_group.is_experimental - return is_experimental + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_container_stack: + return False + active_quality_group = self.activeQualityGroup() + if active_quality_group is None: + return False + return active_quality_group.is_experimental + + @pyqtProperty(str, notify = activeIntentChanged) + def activeIntentCategory(self) -> str: + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + + if not global_container_stack: + return "" + return global_container_stack.getIntentCategory() + + # Provies a list of extruder positions that have a different intent from the active one. + @pyqtProperty("QStringList", notify=activeIntentChanged) + def extruderPositionsWithNonActiveIntent(self): + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + + if not global_container_stack: + return [] + + active_intent_category = self.activeIntentCategory + result = [] + for extruder in global_container_stack.extruderList: + if not extruder.isEnabled: + continue + category = extruder.intent.getMetaDataEntry("intent_category", "default") + if category != active_intent_category: + result.append(str(int(extruder.getMetaDataEntry("position")) + 1)) + + return result ## Returns whether there is anything unsupported in the current set-up. # @@ -686,7 +600,7 @@ class MachineManager(QObject): def isCurrentSetupSupported(self) -> bool: if not self._global_container_stack: return False - for stack in [self._global_container_stack] + list(self._global_container_stack.extruders.values()): + for stack in [self._global_container_stack] + self._global_container_stack.extruderList: for container in stack.getContainers(): if not container: return False @@ -712,8 +626,8 @@ class MachineManager(QObject): def copyAllValuesToExtruders(self) -> None: if self._active_container_stack is None or self._global_container_stack is None: return - extruder_stacks = list(self._global_container_stack.extruders.values()) - for extruder_stack in extruder_stacks: + + for extruder_stack in self._global_container_stack.extruderList: if extruder_stack != self._active_container_stack: for key in self._active_container_stack.userChanges.getAllKeys(): new_value = self._active_container_stack.getProperty(key, "value") @@ -721,51 +635,14 @@ class MachineManager(QObject): # Check if the value has to be replaced extruder_stack.userChanges.setProperty(key, "value", new_value) - @pyqtProperty(str, notify = activeVariantChanged) - @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 - if variant: - return variant.getName() - - 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 - if variant: - return variant.getId() - - 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 - if variant: - return variant.getName() - - 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 - - return "" - ## Get the Definition ID to use to select quality profiles for the currently active machine # \returns DefinitionID (string) if found, empty string otherwise @pyqtProperty(str, notify = globalContainerChanged) def activeQualityDefinitionId(self) -> str: - if self._global_container_stack: - return getMachineDefinitionIDForQualitySearch(self._global_container_stack.definition) - return "" + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack: + return "" + return ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition ## Gets how the active definition calls variants # Caveat: per-definition-variant-title is currently not translated (though the fallback is) @@ -815,24 +692,6 @@ class MachineManager(QObject): # This reuses the method and remove all printers recursively self.removeMachine(hidden_containers[0].getId()) - @pyqtProperty(bool, notify = globalContainerChanged) - def hasMaterials(self) -> bool: - if self._global_container_stack: - return self._global_container_stack.getHasMaterials() - return False - - @pyqtProperty(bool, notify = globalContainerChanged) - def hasVariants(self) -> bool: - if self._global_container_stack: - return self._global_container_stack.getHasVariants() - return False - - @pyqtProperty(bool, notify = globalContainerChanged) - def hasVariantBuildplates(self) -> bool: - if self._global_container_stack: - return self._global_container_stack.getHasVariantsBuildPlates() - return False - ## The selected buildplate is compatible if it is compatible with all the materials in all the extruders @pyqtProperty(bool, notify = activeMaterialChanged) def variantBuildplateCompatible(self) -> bool: @@ -840,15 +699,15 @@ class MachineManager(QObject): return True buildplate_compatible = True # It is compatible by default - extruder_stacks = self._global_container_stack.extruders.values() - for stack in extruder_stacks: + for stack in self._global_container_stack.extruderList: if not stack.isEnabled: continue material_container = stack.material if material_container == empty_material_container: continue if material_container.getMetaDataEntry("buildplate_compatible"): - buildplate_compatible = buildplate_compatible and material_container.getMetaDataEntry("buildplate_compatible")[self.activeVariantBuildplateName] + active_buildplate_name = self.activeMachine.variant.name + buildplate_compatible = buildplate_compatible and material_container.getMetaDataEntry("buildplate_compatible")[active_buildplate_name] return buildplate_compatible @@ -864,8 +723,8 @@ class MachineManager(QObject): # (material_left_compatible or material_left_usable) and # (material_right_compatible or material_right_usable) result = not self.variantBuildplateCompatible - extruder_stacks = self._global_container_stack.extruders.values() - for stack in extruder_stacks: + + for stack in self._global_container_stack.extruderList: material_container = stack.material if material_container == empty_material_container: continue @@ -901,7 +760,7 @@ class MachineManager(QObject): old_value = old_value(self._global_container_stack) if int(old_value) < 0: continue - if int(old_value) >= extruder_count or not self._global_container_stack.extruders[str(old_value)].isEnabled: + if int(old_value) >= extruder_count or not self._global_container_stack.extruderList[int(old_value)].isEnabled: result.append(setting_key) Logger.log("d", "Reset setting [%s] in [%s] because its old value [%s] is no longer valid", setting_key, container, old_value) return result @@ -917,9 +776,8 @@ class MachineManager(QObject): # Apply quality changes that are incompatible to user changes, so we do not change the quality changes itself. self._global_container_stack.userChanges.setProperty(setting_key, "value", self._default_extruder_position) if add_user_changes: - caution_message = Message(catalog.i18nc( - "@info:generic", - "Settings have been changed to match the current availability of extruders: [%s]" % ", ".join(add_user_changes)), + caution_message = Message( + catalog.i18nc("@info:message Followed by a list of settings.", "Settings have been changed to match the current availability of extruders:") + " [{settings_list}]".format(settings_list = ", ".join(add_user_changes)), lifetime = 0, title = catalog.i18nc("@info:title", "Settings updated")) caution_message.show() @@ -947,7 +805,7 @@ class MachineManager(QObject): # Check to see if any objects are set to print with an extruder that will no longer exist root_node = self._application.getController().getScene().getRoot() - for node in DepthFirstIterator(root_node): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(root_node): if node.getMeshData(): extruder_nr = node.callDecoration("getActiveExtruderPosition") @@ -972,7 +830,7 @@ class MachineManager(QObject): if settable_per_extruder: limit_to_extruder = int(self._global_container_stack.getProperty(setting_key, "limit_to_extruder")) extruder_position = max(0, limit_to_extruder) - extruder_stack = self.getExtruder(extruder_position) + extruder_stack = self._global_container_stack.extruderList[extruder_position] if extruder_stack: extruder_stack.userChanges.setProperty(setting_key, "value", global_user_container.getProperty(setting_key, "value")) else: @@ -983,21 +841,15 @@ class MachineManager(QObject): self._application.globalContainerStackChanged.emit() self.forceUpdateAllSettings() - @pyqtSlot(int, result = QObject) - def getExtruder(self, position: int) -> Optional[ExtruderStack]: - if self._global_container_stack: - return self._global_container_stack.extruders.get(str(position)) - return None - def updateDefaultExtruder(self) -> None: if self._global_container_stack is None: return - extruder_items = sorted(self._global_container_stack.extruders.items()) + old_position = self._default_extruder_position new_default_position = "0" - for position, extruder in extruder_items: + for extruder in self._global_container_stack.extruderList: if extruder.isEnabled: - new_default_position = position + new_default_position = extruder.getMetaDataEntry("position", "0") break if new_default_position != old_position: self._default_extruder_position = new_default_position @@ -1009,7 +861,7 @@ class MachineManager(QObject): definition_changes_container = self._global_container_stack.definitionChanges machine_extruder_count = self._global_container_stack.getProperty("machine_extruder_count", "value") extruder_count = 0 - for position, extruder in self._global_container_stack.extruders.items(): + for position, extruder in enumerate(self._global_container_stack.extruderList): if extruder.isEnabled and int(position) < machine_extruder_count: extruder_count += 1 if self.numberExtrudersEnabled != extruder_count: @@ -1020,7 +872,10 @@ class MachineManager(QObject): def numberExtrudersEnabled(self) -> int: if self._global_container_stack is None: return 1 - return self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") + extruders_enabled_count = self._global_container_stack.definitionChanges.getProperty("extruders_enabled_count", "value") + if extruders_enabled_count is None: + extruders_enabled_count = len(self._global_container_stack.extruderList) + return extruders_enabled_count @pyqtProperty(str, notify = extruderChanged) def defaultExtruderPosition(self) -> str: @@ -1033,16 +888,16 @@ class MachineManager(QObject): return with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): property_names = ["value", "resolve", "validationState"] - for container in [self._global_container_stack] + list(self._global_container_stack.extruders.values()): + for container in [self._global_container_stack] + self._global_container_stack.extruderList: for setting_key in container.getAllKeys(): container.propertiesChanged.emit(setting_key, property_names) @pyqtSlot(int, bool) def setExtruderEnabled(self, position: int, enabled: bool) -> None: - extruder = self.getExtruder(position) - if not extruder or self._global_container_stack is None: + if self._global_container_stack is None: Logger.log("w", "Could not find extruder on position %s", position) return + extruder = self._global_container_stack.extruderList[position] extruder.setEnabled(enabled) self.updateDefaultExtruder() @@ -1064,25 +919,25 @@ class MachineManager(QObject): self.forceUpdateAllSettings() # Also trigger the build plate compatibility to update self.activeMaterialChanged.emit() - - def _onMachineNameChanged(self) -> None: - self.globalContainerChanged.emit() + self.activeIntentChanged.emit() def _onMaterialNameChanged(self) -> None: self.activeMaterialChanged.emit() + ## Get the signals that signal that the containers changed for all stacks. + # + # This includes the global stack and all extruder stacks. So if any + # container changed anywhere. def _getContainerChangedSignals(self) -> List[Signal]: if self._global_container_stack is None: return [] - stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - stacks.append(self._global_container_stack) - return [ s.containersChanged for s in stacks ] + return [s.containersChanged for s in ExtruderManager.getInstance().getActiveExtruderStacks() + [self._global_container_stack]] @pyqtSlot(str, str, str) def setSettingForAllExtruders(self, setting_name: str, property_name: str, property_value: str) -> None: if self._global_container_stack is None: return - for key, extruder in self._global_container_stack.extruders.items(): + for extruder in self._global_container_stack.extruderList: container = extruder.userChanges container.setProperty(setting_name, property_name, property_value) @@ -1092,59 +947,46 @@ class MachineManager(QObject): def resetSettingForAllExtruders(self, setting_name: str) -> None: if self._global_container_stack is None: return - for key, extruder in self._global_container_stack.extruders.items(): + for extruder in self._global_container_stack.extruderList: container = extruder.userChanges container.removeInstance(setting_name) - @pyqtProperty("QVariantList", notify = globalContainerChanged) - def currentExtruderPositions(self) -> List[str]: - if self._global_container_stack is None: - return [] - return sorted(list(self._global_container_stack.extruders.keys())) - ## Update _current_root_material_id when the current root material was changed. def _onRootMaterialChanged(self) -> None: self._current_root_material_id = {} + changed = False + if self._global_container_stack: - for position in self._global_container_stack.extruders: - self._current_root_material_id[position] = self._global_container_stack.extruders[position].material.getMetaDataEntry("base_file") + for extruder in self._global_container_stack.extruderList: + material_id = extruder.material.getMetaDataEntry("base_file") + position = extruder.getMetaDataEntry("position") + if position not in self._current_root_material_id or material_id != self._current_root_material_id[position]: + changed = True + self._current_root_material_id[position] = material_id + + if changed: + self.activeMaterialChanged.emit() @pyqtProperty("QVariant", notify = rootMaterialChanged) def currentRootMaterialId(self) -> Dict[str, str]: return self._current_root_material_id - ## Return the variant names in the extruder stack(s). - ## For the variant in the global stack, use activeVariantBuildplateName - @pyqtProperty("QVariant", notify = activeVariantChanged) - def activeVariantNames(self) -> Dict[str, str]: - result = {} - - active_stacks = ExtruderManager.getInstance().getActiveExtruderStacks() - for stack in active_stacks: - variant_container = stack.variant - position = stack.getMetaDataEntry("position") - if variant_container and variant_container != empty_variant_container: - result[position] = variant_container.getName() - - return result - # Sets all quality and quality_changes containers to empty_quality and empty_quality_changes containers # for all stacks in the currently active machine. # def _setEmptyQuality(self) -> None: if self._global_container_stack is None: return - self._current_quality_group = None - self._current_quality_changes_group = None self._global_container_stack.quality = empty_quality_container self._global_container_stack.qualityChanges = empty_quality_changes_container - for extruder in self._global_container_stack.extruders.values(): + for extruder in self._global_container_stack.extruderList: extruder.quality = empty_quality_container extruder.qualityChanges = empty_quality_changes_container self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() + self._updateIntentWithQuality() def _setQualityGroup(self, quality_group: Optional["QualityGroup"], empty_quality_changes: bool = True) -> None: if self._global_container_stack is None: @@ -1153,37 +995,33 @@ class MachineManager(QObject): self._setEmptyQuality() return - if quality_group.node_for_global is None or quality_group.node_for_global.getContainer() is None: + if quality_group.node_for_global is None or quality_group.node_for_global.container is None: return for node in quality_group.nodes_for_extruders.values(): - if node.getContainer() is None: + if node.container is None: return - self._current_quality_group = quality_group - if empty_quality_changes: - self._current_quality_changes_group = None - # Set quality and quality_changes for the GlobalStack - self._global_container_stack.quality = quality_group.node_for_global.getContainer() + self._global_container_stack.quality = quality_group.node_for_global.container if empty_quality_changes: self._global_container_stack.qualityChanges = empty_quality_changes_container # Set quality and quality_changes for each ExtruderStack for position, node in quality_group.nodes_for_extruders.items(): - self._global_container_stack.extruders[str(position)].quality = node.getContainer() + self._global_container_stack.extruderList[position].quality = node.container if empty_quality_changes: - self._global_container_stack.extruders[str(position)].qualityChanges = empty_quality_changes_container + self._global_container_stack.extruderList[position].qualityChanges = empty_quality_changes_container self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() + self._updateIntentWithQuality() def _fixQualityChangesGroupToNotSupported(self, quality_changes_group: "QualityChangesGroup") -> None: - nodes = [quality_changes_group.node_for_global] + list(quality_changes_group.nodes_for_extruders.values()) - containers = [n.getContainer() for n in nodes if n is not None] - for container in containers: - if container: - container.setMetaDataEntry("quality_type", "not_supported") + metadatas = [quality_changes_group.metadata_for_global] + list(quality_changes_group.metadata_per_extruder.values()) + for metadata in metadatas: + metadata["quality_type"] = "not_supported" # This actually changes the metadata of the container since they are stored by reference! quality_changes_group.quality_type = "not_supported" + quality_changes_group.intent_category = "default" def _setQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup") -> None: if self._global_container_stack is None: @@ -1192,67 +1030,76 @@ class MachineManager(QObject): # A custom quality can be created based on "not supported". # In that case, do not set quality containers to empty. quality_group = None - if quality_type != "not_supported": - quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) - quality_group = quality_group_dict.get(quality_type) + if quality_type != "not_supported": # Find the quality group that the quality changes was based on. + quality_group = ContainerTree.getInstance().getCurrentQualityGroups().get(quality_type) if quality_group is None: self._fixQualityChangesGroupToNotSupported(quality_changes_group) + container_registry = cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry() quality_changes_container = empty_quality_changes_container - quality_container = empty_quality_container # type: Optional[InstanceContainer] - if quality_changes_group.node_for_global and quality_changes_group.node_for_global.getContainer(): - quality_changes_container = cast(InstanceContainer, quality_changes_group.node_for_global.getContainer()) - if quality_group is not None and quality_group.node_for_global and quality_group.node_for_global.getContainer(): - quality_container = quality_group.node_for_global.getContainer() + quality_container = empty_quality_container # type: InstanceContainer + if quality_changes_group.metadata_for_global: + global_containers = container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"]) + if global_containers: + quality_changes_container = global_containers[0] + if quality_changes_group.metadata_for_global: + containers = container_registry.findContainers(id = quality_changes_group.metadata_for_global["id"]) + if containers: + quality_changes_container = cast(InstanceContainer, containers[0]) + if quality_group is not None and quality_group.node_for_global and quality_group.node_for_global.container: + quality_container = quality_group.node_for_global.container self._global_container_stack.quality = quality_container self._global_container_stack.qualityChanges = quality_changes_container for position, extruder in self._global_container_stack.extruders.items(): - quality_changes_node = quality_changes_group.nodes_for_extruders.get(position) quality_node = None if quality_group is not None: - quality_node = quality_group.nodes_for_extruders.get(position) + quality_node = quality_group.nodes_for_extruders.get(int(position)) quality_changes_container = empty_quality_changes_container quality_container = empty_quality_container - if quality_changes_node and quality_changes_node.getContainer(): - quality_changes_container = cast(InstanceContainer, quality_changes_node.getContainer()) - if quality_node and quality_node.getContainer(): - quality_container = quality_node.getContainer() + quality_changes_metadata = quality_changes_group.metadata_per_extruder.get(int(position)) + if quality_changes_metadata: + containers = container_registry.findContainers(id = quality_changes_metadata["id"]) + if containers: + quality_changes_container = cast(InstanceContainer, containers[0]) + if quality_node and quality_node.container: + quality_container = quality_node.container extruder.quality = quality_container extruder.qualityChanges = quality_changes_container - self._current_quality_group = quality_group - self._current_quality_changes_group = quality_changes_group + self.setIntentByCategory(quality_changes_group.intent_category) + self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() - def _setVariantNode(self, position: str, container_node: "ContainerNode") -> None: - if container_node.getContainer() is None or self._global_container_stack is None: + def _setVariantNode(self, position: str, variant_node: "VariantNode") -> None: + if self._global_container_stack is None: return - self._global_container_stack.extruders[position].variant = container_node.getContainer() + self._global_container_stack.extruders[position].variant = variant_node.container self.activeVariantChanged.emit() def _setGlobalVariant(self, container_node: "ContainerNode") -> None: if self._global_container_stack is None: return - self._global_container_stack.variant = container_node.getContainer() + self._global_container_stack.variant = container_node.container if not self._global_container_stack.variant: self._global_container_stack.variant = self._application.empty_variant_container - def _setMaterial(self, position: str, container_node: Optional["ContainerNode"] = None) -> None: + def _setMaterial(self, position: str, material_node: Optional["MaterialNode"] = None) -> None: if self._global_container_stack is None: return - if container_node and container_node.getContainer(): - self._global_container_stack.extruders[position].material = container_node.getContainer() - root_material_id = container_node.getMetaDataEntry("base_file", None) + if material_node and material_node.container: + material_container = material_node.container + self._global_container_stack.extruders[position].material = material_container + root_material_id = material_container.getMetaDataEntry("base_file", None) else: - self._global_container_stack.extruders[position].material = empty_material_container + self._global_container_stack.extruderList[int(position)].material = empty_material_container root_material_id = None # The _current_root_material_id is used in the MaterialMenu to see which material is selected - if root_material_id != self._current_root_material_id[position]: + if position not in self._current_root_material_id or root_material_id != self._current_root_material_id[position]: self._current_root_material_id[position] = root_material_id self.rootMaterialChanged.emit() @@ -1260,7 +1107,7 @@ class MachineManager(QObject): # Check material - variant compatibility if self._global_container_stack is not None: if Util.parseBool(self._global_container_stack.getMetaDataEntry("has_materials", False)): - for position, extruder in self._global_container_stack.extruders.items(): + for extruder in self._global_container_stack.extruderList: if not extruder.isEnabled: continue if not extruder.material.getMetaDataEntry("compatible"): @@ -1269,13 +1116,12 @@ class MachineManager(QObject): ## Update current quality type and machine after setting material def _updateQualityWithMaterial(self, *args: Any) -> None: - if self._global_container_stack is None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: return Logger.log("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 - candidate_quality_groups = self._quality_manager.getQualityGroups(self._global_container_stack) + current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") + candidate_quality_groups = ContainerTree.getInstance().getCurrentQualityGroups() available_quality_types = {qt for qt, g in candidate_quality_groups.items() if g.is_available} Logger.log("d", "Current quality type = [%s]", current_quality_type) @@ -1286,7 +1132,7 @@ class MachineManager(QObject): return if not available_quality_types: - if self._current_quality_changes_group is None: + if global_stack.qualityChanges == empty_quality_changes_container: Logger.log("i", "No available quality types found, setting all qualities to empty (Not Supported).") self._setEmptyQuality() return @@ -1299,6 +1145,9 @@ class MachineManager(QObject): # The current quality type is not available so we use the preferred quality type if it's available, # otherwise use one of the available quality types. quality_type = sorted(list(available_quality_types))[0] + if self._global_container_stack is None: + Logger.log("e", "Global stack not present!") + return preferred_quality_type = self._global_container_stack.getMetaDataEntry("preferred_quality_type") if preferred_quality_type in available_quality_types: quality_type = preferred_quality_type @@ -1307,7 +1156,40 @@ class MachineManager(QObject): current_quality_type, quality_type) self._setQualityGroup(candidate_quality_groups[quality_type], empty_quality_changes = True) - def updateMaterialWithVariant(self, position: Optional[str]) -> None: + ## Update the current intent after the quality changed + def _updateIntentWithQuality(self): + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return + Logger.log("d", "Updating intent due to quality change") + + category = "default" + + for extruder in global_stack.extruderList: + if not extruder.isEnabled: + continue + current_category = extruder.intent.getMetaDataEntry("intent_category", "default") + if current_category != "default" and current_category != category: + category = current_category + continue + # It's also possible that the qualityChanges has an opinion about the intent_category. + # This is in the case that a QC was made on an intent, but none of the materials have that intent. + # If the user switches back, we do want the intent to be selected again. + # + # Do not ask empty quality changes for intent category. + if extruder.qualityChanges.getId() == empty_quality_changes_container.getId(): + continue + current_category = extruder.qualityChanges.getMetaDataEntry("intent_category", "default") + if current_category != "default" and current_category != category: + category = current_category + self.setIntentByCategory(category) + + ## Update the material profile in the current stacks when the variant is + # changed. + # \param position The extruder stack to update. If provided with None, all + # extruder stacks will be updated. + @pyqtSlot() + def updateMaterialWithVariant(self, position: Optional[str] = None) -> None: if self._global_container_stack is None: return if position is None: @@ -1315,63 +1197,59 @@ class MachineManager(QObject): else: position_list = [position] - buildplate_name = None - if self._global_container_stack.variant.getId() != "empty_variant": - buildplate_name = self._global_container_stack.variant.getName() - for position_item in position_list: - extruder = self._global_container_stack.extruders[position_item] + try: + extruder = self._global_container_stack.extruderList[int(position_item)] + except IndexError: + continue current_material_base_name = extruder.material.getMetaDataEntry("base_file") - current_nozzle_name = None - if extruder.variant.getId() != empty_variant_container.getId(): - current_nozzle_name = extruder.variant.getMetaDataEntry("name") + current_nozzle_name = extruder.variant.getMetaDataEntry("name") - material_diameter = extruder.getCompatibleMaterialDiameter() - candidate_materials = self._material_manager.getAvailableMaterials( - self._global_container_stack.definition, - current_nozzle_name, - buildplate_name, - material_diameter) + # If we can keep the current material after the switch, try to do so. + nozzle_node = ContainerTree.getInstance().machines[self._global_container_stack.definition.getId()].variants[current_nozzle_name] + candidate_materials = nozzle_node.materials + old_approximate_material_diameter = int(extruder.material.getMetaDataEntry("approximate_diameter", default = 3)) + new_approximate_material_diameter = int(self._global_container_stack.extruderList[int(position_item)].getApproximateMaterialDiameter()) - if not candidate_materials: - self._setMaterial(position_item, container_node = None) - continue - - if current_material_base_name in candidate_materials: + # Only switch to the old candidate material if the approximate material diameter of the extruder stays the + # same. + if new_approximate_material_diameter == old_approximate_material_diameter and \ + current_material_base_name in candidate_materials: # The current material is also available after the switch. Retain it. new_material = candidate_materials[current_material_base_name] self._setMaterial(position_item, new_material) - continue - - # The current material is not available, find the preferred one - material_node = self._material_manager.getDefaultMaterial(self._global_container_stack, position_item, current_nozzle_name) - if material_node is not None: + else: + # The current material is not available, find the preferred one. + approximate_material_diameter = int(self._global_container_stack.extruderList[int(position_item)].getApproximateMaterialDiameter()) + material_node = nozzle_node.preferredMaterial(approximate_material_diameter) self._setMaterial(position_item, material_node) ## Given a printer definition name, select the right machine instance. In case it doesn't exist, create a new # 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: + if self._global_container_stack is None or self._global_container_stack.definition.name == machine_name: return + Logger.log("i", "Attempting to switch the printer type to [%s]", machine_name) # Get the definition id corresponding to this machine name machine_definition_id = CuraContainerRegistry.getInstance().findDefinitionContainers(name = machine_name)[0].getId() # Try to find a machine with the same network key - metadata_filter = {"group_id": self._global_container_stack.getMetaDataEntry("group_id"), - "um_network_key": self.activeMachineNetworkKey(), - } + metadata_filter = {"group_id": self._global_container_stack.getMetaDataEntry("group_id")} new_machine = self.getMachine(machine_definition_id, metadata_filter = metadata_filter) # If there is no machine, then create a new one and set it to the non-hidden instance if not new_machine: new_machine = CuraStackBuilder.createMachine(machine_definition_id + "_sync", machine_definition_id) if not new_machine: + Logger.log("e", "Failed to create new machine when switching configuration.") return + + for metadata_key in self._global_container_stack.getMetaData(): + if metadata_key in new_machine.getMetaData(): + continue # Don't copy the already preset stuff. + new_machine.setMetaDataEntry(metadata_key, self._global_container_stack.getMetaDataEntry(metadata_key)) + # Special case, group_id should be overwritten! new_machine.setMetaDataEntry("group_id", self._global_container_stack.getMetaDataEntry("group_id")) - new_machine.setMetaDataEntry("um_network_key", self.activeMachineNetworkKey()) - new_machine.setMetaDataEntry("group_name", self.activeMachineNetworkGroupName) - 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()) @@ -1379,13 +1257,28 @@ class MachineManager(QObject): new_machine.setMetaDataEntry("hidden", False) self._global_container_stack.setMetaDataEntry("hidden", True) + # The new_machine does not contain user changes (global or per-extruder user changes). + # Keep a temporary copy of the global and per-extruder user changes and transfer them to the user changes + # of the new machine after the new_machine becomes active. + global_user_changes = self._global_container_stack.userChanges + per_extruder_user_changes = {} + for extruder_name, extruder_stack in self._global_container_stack.extruders.items(): + per_extruder_user_changes[extruder_name] = extruder_stack.userChanges + self.setActiveMachine(new_machine.getId()) + # Apply the global and per-extruder userChanges to the new_machine (which is of different type than the + # previous one). + self._global_container_stack.setUserChanges(global_user_changes) + for extruder_name in self._global_container_stack.extruders.keys(): + self._global_container_stack.extruders[extruder_name].setUserChanges(per_extruder_user_changes[extruder_name]) + @pyqtSlot(QObject) def applyRemoteConfiguration(self, configuration: PrinterConfigurationModel) -> None: if self._global_container_stack is None: return self.blurSettings.emit() + container_registry = CuraContainerRegistry.getInstance() with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): self.switchPrinterType(configuration.printerType) @@ -1406,7 +1299,7 @@ class MachineManager(QObject): extruders_to_disable.add(extruder_configuration.position) # If there's no material and/or nozzle on the printer, enable the first extruder and disable the rest. - if len(extruders_to_disable) == len(self._global_container_stack.extruders): + if len(extruders_to_disable) == len(self._global_container_stack.extruderList): extruders_to_disable.remove(min(extruders_to_disable)) for extruder_configuration in configuration.extruderConfigurations: @@ -1414,42 +1307,33 @@ class MachineManager(QObject): # If the machine doesn't have a hotend or material, disable this extruder if int(position) in extruders_to_disable: - self._global_container_stack.extruders[position].setEnabled(False) + self._global_container_stack.extruderList[int(position)].setEnabled(False) need_to_show_message = True disabled_used_extruder_position_set.add(int(position)) else: - variant_container_node = self._variant_manager.getVariantNode(self._global_container_stack.definition.getId(), - extruder_configuration.hotendID) - material_container_node = self._material_manager.getMaterialNodeByType(self._global_container_stack, - position, - extruder_configuration.hotendID, - configuration.buildplateConfiguration, - extruder_configuration.material.guid) - if variant_container_node: - self._setVariantNode(position, variant_container_node) - else: - self._global_container_stack.extruders[position].variant = empty_variant_container + machine_node = ContainerTree.getInstance().machines.get(self._global_container_stack.definition.getId()) + variant_node = machine_node.variants.get(extruder_configuration.hotendID) + if variant_node is None: + continue + self._setVariantNode(position, variant_node) - if material_container_node: - self._setMaterial(position, material_container_node) - else: - self._global_container_stack.extruders[position].material = empty_material_container + # Find the material profile that the printer has stored. + # This might find one of the duplicates if the user duplicated the material to sync with. But that's okay; both have this GUID so both are correct. + approximate_diameter = int(self._global_container_stack.extruderList[int(position)].getApproximateMaterialDiameter()) + materials_with_guid = container_registry.findInstanceContainersMetadata(GUID = extruder_configuration.material.guid, approximate_diameter = str(approximate_diameter), ignore_case = True) + material_container_node = variant_node.preferredMaterial(approximate_diameter) + if materials_with_guid: # We also have the material profile that the printer wants to share. + base_file = materials_with_guid[0]["base_file"] + material_container_node = variant_node.materials.get(base_file, material_container_node) + + self._setMaterial(position, material_container_node) self._global_container_stack.extruders[position].setEnabled(True) self.updateMaterialWithVariant(position) self.updateDefaultExtruder() self.updateNumberExtrudersEnabled() - - if configuration.buildplateConfiguration is not None: - global_variant_container_node = self._variant_manager.getBuildplateVariantNode(self._global_container_stack.definition.getId(), configuration.buildplateConfiguration) - if global_variant_container_node: - self._setGlobalVariant(global_variant_container_node) - else: - self._global_container_stack.variant = empty_variant_container - else: - self._global_container_stack.variant = empty_variant_container self._updateQualityWithMaterial() if need_to_show_message: @@ -1458,7 +1342,7 @@ class MachineManager(QObject): # Show human-readable extruder names such as "Extruder Left", "Extruder Front" instead of "Extruder 1, 2, 3". extruder_names = [] for extruder_position in sorted(disabled_used_extruder_position_set): - extruder_stack = self._global_container_stack.extruders[str(extruder_position)] + extruder_stack = self._global_container_stack.extruderList[int(extruder_position)] extruder_name = extruder_stack.definition.getName() extruder_names.append(extruder_name) extruders_str = ", ".join(extruder_names) @@ -1483,17 +1367,12 @@ class MachineManager(QObject): def setMaterialById(self, position: str, root_material_id: str) -> None: if self._global_container_stack is None: return - buildplate_name = None - if self._global_container_stack.variant.getId() != "empty_variant": - buildplate_name = self._global_container_stack.variant.getName() machine_definition_id = self._global_container_stack.definition.id position = str(position) - extruder_stack = self._global_container_stack.extruders[position] + extruder_stack = self._global_container_stack.extruderList[int(position)] nozzle_name = extruder_stack.variant.getName() - material_diameter = extruder_stack.getApproximateMaterialDiameter() - material_node = self._material_manager.getMaterialNode(machine_definition_id, nozzle_name, buildplate_name, - material_diameter, root_material_id) + material_node = ContainerTree.getInstance().machines[machine_definition_id].variants[nozzle_name].materials[root_material_id] self.setMaterial(position, material_node) ## Global_stack: if you want to provide your own global_stack instead of the current active one @@ -1501,7 +1380,7 @@ class MachineManager(QObject): @pyqtSlot(str, "QVariant") def setMaterial(self, position: str, container_node, global_stack: Optional["GlobalStack"] = None) -> None: if global_stack is not None and global_stack != self._global_container_stack: - global_stack.extruders[position].material = container_node.getContainer() + global_stack.extruders[position].material = container_node.container return position = str(position) self.blurSettings.emit() @@ -1518,15 +1397,16 @@ class MachineManager(QObject): if self._global_container_stack is None: return machine_definition_id = self._global_container_stack.definition.id - variant_node = self._variant_manager.getVariantNode(machine_definition_id, variant_name) + machine_node = ContainerTree.getInstance().machines.get(machine_definition_id) + variant_node = machine_node.variants.get(variant_name) self.setVariant(position, variant_node) @pyqtSlot(str, "QVariant") - def setVariant(self, position: str, container_node: "ContainerNode") -> None: + def setVariant(self, position: str, variant_node: "VariantNode") -> None: position = str(position) self.blurSettings.emit() with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - self._setVariantNode(position, container_node) + self._setVariantNode(position, variant_node) self.updateMaterialWithVariant(position) self._updateQualityWithMaterial() @@ -1539,9 +1419,7 @@ class MachineManager(QObject): if self._global_container_stack is None: return # Get all the quality groups for this global stack and filter out by quality_type - quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) - quality_group = quality_group_dict[quality_type] - self.setQualityGroup(quality_group) + self.setQualityGroup(ContainerTree.getInstance().getCurrentQualityGroups()[quality_type]) ## Optionally provide global_stack if you want to use your own # The active global_stack is treated differently. @@ -1555,11 +1433,11 @@ class MachineManager(QObject): Logger.log("e", "Could not set quality group [%s] because it has no node_for_global", str(quality_group)) return # This is not changing the quality for the active machine !!!!!!!! - global_stack.quality = quality_group.node_for_global.getContainer() - for extruder_nr, extruder_stack in global_stack.extruders.items(): + global_stack.quality = quality_group.node_for_global.container + for extruder_nr, extruder_stack in enumerate(global_stack.extruderList): quality_container = empty_quality_container if extruder_nr in quality_group.nodes_for_extruders: - container = quality_group.nodes_for_extruders[extruder_nr].getContainer() + container = quality_group.nodes_for_extruders[extruder_nr].container quality_container = container if container is not None else quality_container extruder_stack.quality = quality_container return @@ -1572,9 +1450,91 @@ class MachineManager(QObject): if not no_dialog and self.hasUserSettings and self._application.getPreferences().getValue("cura/active_mode") == 1: self._application.discardOrKeepProfileChanges() - @pyqtProperty(QObject, fset = setQualityGroup, notify = activeQualityGroupChanged) + # The display name map of currently active quality. + # The display name has 2 parts, a main part and a suffix part. + # This display name is: + # - For built-in qualities (quality/intent): the quality type name, such as "Fine", "Normal", etc. + # - For custom qualities: - - + # Examples: + # - "my_profile - Fine" (only based on a default quality, no intent involved) + # - "my_profile - Engineering - Fine" (based on an intent) + @pyqtProperty("QVariantMap", notify = activeQualityDisplayNameChanged) + def activeQualityDisplayNameMap(self) -> Dict[str, str]: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return {"main": "", + "suffix": ""} + + display_name = global_stack.quality.getName() + + intent_category = self.activeIntentCategory + if intent_category != "default": + intent_display_name = IntentCategoryModel.translation(intent_category, + "name", + catalog.i18nc("@label", "Unknown")) + display_name = "{intent_name} - {the_rest}".format(intent_name = intent_display_name, + the_rest = display_name) + + main_part = display_name + suffix_part = "" + + # Not a custom quality + if global_stack.qualityChanges != empty_quality_changes_container: + main_part = self.activeQualityOrQualityChangesName + suffix_part = display_name + + return {"main": main_part, + "suffix": suffix_part} + + ## Change the intent category of the current printer. + # + # All extruders can change their profiles. If an intent profile is + # available with the desired intent category, that one will get chosen. + # Otherwise the intent profile will be left to the empty profile, which + # represents the "default" intent category. + # \param intent_category The intent category to change to. + @pyqtSlot(str) + def setIntentByCategory(self, intent_category: str) -> None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return + container_tree = ContainerTree.getInstance() + for extruder in global_stack.extruderList: + definition_id = global_stack.definition.getId() + variant_name = extruder.variant.getName() + material_base_file = extruder.material.getMetaDataEntry("base_file") + quality_id = extruder.quality.getId() + if quality_id == empty_quality_container.getId(): + extruder.intent = empty_intent_container + continue + quality_node = container_tree.machines[definition_id].variants[variant_name].materials[material_base_file].qualities[quality_id] + + for intent_node in quality_node.intents.values(): + if intent_node.intent_category == intent_category: # Found an intent with the correct category. + extruder.intent = intent_node.container + break + else: # No intent had the correct category. + extruder.intent = empty_intent_container + + ## Get the currently activated quality group. + # + # If no printer is added yet or the printer doesn't have quality profiles, + # this returns ``None``. + # \return The currently active quality group. def activeQualityGroup(self) -> Optional["QualityGroup"]: - return self._current_quality_group + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_stack or global_stack.quality == empty_quality_container: + return None + return ContainerTree.getInstance().getCurrentQualityGroups().get(self.activeQualityType) + + ## Get the name of the active quality group. + # \return The name of the active quality group. + @pyqtProperty(str, notify = activeQualityGroupChanged) + def activeQualityGroupName(self) -> str: + quality_group = self.activeQualityGroup() + if quality_group is None: + return "" + return quality_group.getName() @pyqtSlot(QObject) def setQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup", no_dialog: bool = False) -> None: @@ -1591,30 +1551,50 @@ class MachineManager(QObject): if self._global_container_stack is None: return with postponeSignals(*self._getContainerChangedSignals(), compress = CompressTechnique.CompressPerParameterValue): - self._setQualityGroup(self._current_quality_group) + self._setQualityGroup(self.activeQualityGroup()) for stack in [self._global_container_stack] + list(self._global_container_stack.extruders.values()): stack.userChanges.clear() @pyqtProperty(QObject, fset = setQualityChangesGroup, notify = activeQualityChangesGroupChanged) def activeQualityChangesGroup(self) -> Optional["QualityChangesGroup"]: - return self._current_quality_changes_group + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None or global_stack.qualityChanges == empty_quality_changes_container: + return None + + all_group_list = ContainerTree.getInstance().getCurrentQualityChangesGroups() + the_group = None + for group in all_group_list: # Match on the container ID of the global stack to find the quality changes group belonging to the active configuration. + if group.metadata_for_global and group.metadata_for_global["id"] == global_stack.qualityChanges.getId(): + the_group = group + break + + return the_group @pyqtProperty(bool, notify = activeQualityChangesGroupChanged) def hasCustomQuality(self) -> bool: - return self._current_quality_changes_group is not None + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + return global_stack is None or global_stack.qualityChanges != empty_quality_changes_container @pyqtProperty(str, notify = activeQualityGroupChanged) def activeQualityOrQualityChangesName(self) -> str: - name = empty_quality_container.getName() - if self._current_quality_changes_group: - name = self._current_quality_changes_group.name - elif self._current_quality_group: - name = self._current_quality_group.name - return name + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if not global_container_stack: + return empty_quality_container.getName() + if global_container_stack.qualityChanges != empty_quality_changes_container: + return global_container_stack.qualityChanges.getName() + return global_container_stack.quality.getName() @pyqtProperty(bool, notify = activeQualityGroupChanged) def hasNotSupportedQuality(self) -> bool: - return self._current_quality_group is None and self._current_quality_changes_group is None + global_container_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + return (not global_container_stack is None) and global_container_stack.quality == empty_quality_container and global_container_stack.qualityChanges == empty_quality_changes_container + + @pyqtProperty(bool, notify = activeQualityGroupChanged) + def isActiveQualityCustom(self) -> bool: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return False + return global_stack.qualityChanges != empty_quality_changes_container def _updateUponMaterialMetadataChange(self) -> None: if self._global_container_stack is None: @@ -1641,22 +1621,3 @@ class MachineManager(QObject): abbr_machine += stripped_word return abbr_machine - - # 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: - results = self._container_registry.findDefinitionContainersMetadata(name = machine_type_name) - return len(results) > 0 - - @pyqtSlot(str, result = str) - def getMachineTypeNameFromId(self, machine_type_id: str) -> str: - machine_type_name = "" - results = self._container_registry.findDefinitionContainersMetadata(id = machine_type_id) - if results: - machine_type_name = results[0]["name"] - return machine_type_name - - # 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 7ed9eb6fb7..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: diff --git a/cura/Settings/SettingInheritanceManager.py b/cura/Settings/SettingInheritanceManager.py index 12b541c3d8..7db579bf3f 100644 --- a/cura/Settings/SettingInheritanceManager.py +++ b/cura/Settings/SettingInheritanceManager.py @@ -28,20 +28,21 @@ if TYPE_CHECKING: class SettingInheritanceManager(QObject): def __init__(self, parent = None) -> None: super().__init__(parent) - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + self._global_container_stack = None # type: Optional[ContainerStack] self._settings_with_inheritance_warning = [] # type: List[str] self._active_container_stack = None # type: Optional[ExtruderStack] - self._onGlobalContainerChanged() - - ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged) - self._onActiveExtruderChanged() self._update_timer = QTimer() self._update_timer.setInterval(500) self._update_timer.setSingleShot(True) self._update_timer.timeout.connect(self._update) + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + ExtruderManager.getInstance().activeExtruderChanged.connect(self._onActiveExtruderChanged) + self._onGlobalContainerChanged() + self._onActiveExtruderChanged() + settingsWithIntheritanceChanged = pyqtSignal() ## Get the keys of all children settings with an override. @@ -88,8 +89,8 @@ class SettingInheritanceManager(QObject): self.settingsWithIntheritanceChanged.emit() @pyqtSlot() - def forceUpdate(self) -> None: - self._update() + def scheduleUpdate(self) -> None: + self._update_timer.start() def _onActiveExtruderChanged(self) -> None: new_active_stack = ExtruderManager.getInstance().getActiveExtruderStack() @@ -106,7 +107,7 @@ class SettingInheritanceManager(QObject): if self._active_container_stack is not None: self._active_container_stack.propertyChanged.connect(self._onPropertyChanged) self._active_container_stack.containersChanged.connect(self._onContainersChanged) - self._update() # Ensure that the settings_with_inheritance_warning list is populated. + self._update_timer.start() # Ensure that the settings_with_inheritance_warning list is populated. def _onPropertyChanged(self, key: str, property_name: str) -> None: if (property_name == "value" or property_name == "enabled") and self._global_container_stack: diff --git a/cura/Settings/SimpleModeSettingsManager.py b/cura/Settings/SimpleModeSettingsManager.py index b1896a9205..3923435e63 100644 --- a/cura/Settings/SimpleModeSettingsManager.py +++ b/cura/Settings/SimpleModeSettingsManager.py @@ -39,8 +39,8 @@ class SimpleModeSettingsManager(QObject): user_setting_keys.update(global_stack.userChanges.getAllKeys()) # check user settings in the extruder stacks - if global_stack.extruders: - for extruder_stack in global_stack.extruders.values(): + if global_stack.extruderList: + for extruder_stack in global_stack.extruderList: user_setting_keys.update(extruder_stack.userChanges.getAllKeys()) # remove settings that are visible in recommended (we don't show the reset button for those) diff --git a/cura/Settings/cura_empty_instance_containers.py b/cura/Settings/cura_empty_instance_containers.py index 0eedfc8654..b142c53c11 100644 --- a/cura/Settings/cura_empty_instance_containers.py +++ b/cura/Settings/cura_empty_instance_containers.py @@ -25,6 +25,9 @@ EMPTY_MATERIAL_CONTAINER_ID = "empty_material" empty_material_container = copy.deepcopy(empty_container) empty_material_container.setMetaDataEntry("id", EMPTY_MATERIAL_CONTAINER_ID) empty_material_container.setMetaDataEntry("type", "material") +empty_material_container.setMetaDataEntry("base_file", "empty_material") +empty_material_container.setMetaDataEntry("GUID", "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF") +empty_material_container.setMetaDataEntry("material", "empty") # Empty quality EMPTY_QUALITY_CONTAINER_ID = "empty_quality" @@ -41,6 +44,15 @@ empty_quality_changes_container = copy.deepcopy(empty_container) empty_quality_changes_container.setMetaDataEntry("id", EMPTY_QUALITY_CHANGES_CONTAINER_ID) empty_quality_changes_container.setMetaDataEntry("type", "quality_changes") empty_quality_changes_container.setMetaDataEntry("quality_type", "not_supported") +empty_quality_changes_container.setMetaDataEntry("intent_category", "not_supported") + +# Empty intent +EMPTY_INTENT_CONTAINER_ID = "empty_intent" +empty_intent_container = copy.deepcopy(empty_container) +empty_intent_container.setMetaDataEntry("id", EMPTY_INTENT_CONTAINER_ID) +empty_intent_container.setMetaDataEntry("type", "intent") +empty_intent_container.setMetaDataEntry("intent_category", "default") +empty_intent_container.setName(catalog.i18nc("@info:No intent profile selected", "Default")) # All empty container IDs set @@ -51,6 +63,7 @@ ALL_EMPTY_CONTAINER_ID_SET = { EMPTY_MATERIAL_CONTAINER_ID, EMPTY_QUALITY_CONTAINER_ID, EMPTY_QUALITY_CHANGES_CONTAINER_ID, + EMPTY_INTENT_CONTAINER_ID } @@ -73,4 +86,6 @@ __all__ = ["EMPTY_CONTAINER_ID", "empty_quality_container", "ALL_EMPTY_CONTAINER_ID_SET", "isEmptyContainer", + "EMPTY_INTENT_CONTAINER_ID", + "empty_intent_container" ] diff --git a/cura/SingleInstance.py b/cura/SingleInstance.py index cf07b143c6..6fcf0da6cf 100644 --- a/cura/SingleInstance.py +++ b/cura/SingleInstance.py @@ -87,7 +87,7 @@ class SingleInstance: if command == "clear-all": self._application.callLater(lambda: self._application.deleteAll()) - # Command: Load a model file + # Command: Load a model or project file elif command == "open": self._application.callLater(lambda f = payload["filePath"]: self._application._openFile(f)) diff --git a/cura/Snapshot.py b/cura/Snapshot.py index 04e13165ef..353b5ae17c 100644 --- a/cura/Snapshot.py +++ b/cura/Snapshot.py @@ -66,7 +66,7 @@ class Snapshot: looking_from_offset = Vector(-1, 1, 2) if size > 0: # determine the watch distance depending on the size - looking_from_offset = looking_from_offset * size * 1.3 + looking_from_offset = looking_from_offset * size * 1.75 camera.setPosition(look_at + looking_from_offset) camera.lookAt(look_at) @@ -85,8 +85,10 @@ class Snapshot: preview_pass.setCamera(camera) preview_pass.render() pixel_output = preview_pass.getOutput() - - min_x, max_x, min_y, max_y = Snapshot.getImageBoundaries(pixel_output) + try: + min_x, max_x, min_y, max_y = Snapshot.getImageBoundaries(pixel_output) + except ValueError: + return None size = max((max_x - min_x) / render_width, (max_y - min_y) / render_height) if size > 0.5 or satisfied: diff --git a/cura/UI/CuraSplashScreen.py b/cura/UI/CuraSplashScreen.py index 77c9ad1427..70df454e7d 100644 --- a/cura/UI/CuraSplashScreen.py +++ b/cura/UI/CuraSplashScreen.py @@ -7,14 +7,21 @@ from PyQt5.QtWidgets import QSplashScreen from UM.Resources import Resources from UM.Application import Application +from cura import ApplicationMetadata class CuraSplashScreen(QSplashScreen): def __init__(self): super().__init__() self._scale = 0.7 + self._version_y_offset = 0 # when extra visual elements are in the background image, move version text down + + if ApplicationMetadata.IsEnterpriseVersion: + splash_image = QPixmap(Resources.getPath(Resources.Images, "cura_enterprise.png")) + self._version_y_offset = 26 + else: + splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png")) - splash_image = QPixmap(Resources.getPath(Resources.Images, "cura.png")) self.setPixmap(splash_image) self._current_message = "" @@ -52,30 +59,27 @@ class CuraSplashScreen(QSplashScreen): painter.setRenderHint(QPainter.Antialiasing, True) version = Application.getInstance().getVersion().split("-") - buildtype = Application.getInstance().getBuildType() - if buildtype: - version[0] += " (%s)" % buildtype - # draw version text + # Draw version text font = QFont() # Using system-default font here - font.setPixelSize(37) + font.setPixelSize(18) painter.setFont(font) - painter.drawText(215, 66, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) + painter.drawText(60, 70 + self._version_y_offset, 330 * self._scale, 230 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[0]) if len(version) > 1: font.setPixelSize(16) painter.setFont(font) painter.setPen(QColor(200, 200, 200, 255)) - painter.drawText(247, 105, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) + painter.drawText(247, 105 + self._version_y_offset, 330 * self._scale, 255 * self._scale, Qt.AlignLeft | Qt.AlignTop, version[1]) painter.setPen(QColor(255, 255, 255, 255)) - # draw the loading image + # Draw the loading image pen = QPen() pen.setWidth(6 * self._scale) pen.setColor(QColor(32, 166, 219, 255)) painter.setPen(pen) painter.drawArc(60, 150, 32 * self._scale, 32 * self._scale, self._loading_image_rotation_angle * 16, 300 * 16) - # draw message text + # Draw message text if self._current_message: font = QFont() # Using system-default font here font.setPixelSize(13) diff --git a/cura/UI/MachineSettingsManager.py b/cura/UI/MachineSettingsManager.py index 7ecd9ed65f..671bb0ece0 100644 --- a/cura/UI/MachineSettingsManager.py +++ b/cura/UI/MachineSettingsManager.py @@ -2,11 +2,12 @@ # Cura is released under the terms of the LGPLv3 or higher. from typing import Optional, TYPE_CHECKING - from PyQt5.QtCore import QObject, pyqtSlot from UM.i18n import i18nCatalog +from cura.Machines.ContainerTree import ContainerTree + if TYPE_CHECKING: from cura.CuraApplication import CuraApplication @@ -42,7 +43,7 @@ class MachineSettingsManager(QObject): # 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". + # Function for the Machine Settings panel (QML) to update after the user changes "Number of Extruders". # # fieldOfView: The Ultimaker 2 family (not 2+) does not have materials in Cura by default, because the material is # to be set on the printer. But when switching to Marlin flavor, the printer firmware can not change/insert material @@ -51,8 +52,6 @@ class MachineSettingsManager(QObject): @pyqtSlot() def updateHasMaterialsMetadata(self): machine_manager = self._application.getMachineManager() - material_manager = self._application.getMaterialManager() - global_stack = machine_manager.activeMachine definition = global_stack.definition @@ -76,7 +75,10 @@ class MachineSettingsManager(QObject): # set materials for position in extruder_positions: if has_materials: - material_node = material_manager.getDefaultMaterial(global_stack, position, None) + extruder = global_stack.extruderList[int(position)] + approximate_diameter = extruder.getApproximateMaterialDiameter() + variant_node = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[extruder.variant.getName()] + material_node = variant_node.preferredMaterial(approximate_diameter) machine_manager.setMaterial(position, material_node) self.forceUpdate() diff --git a/cura/UI/ObjectsModel.py b/cura/UI/ObjectsModel.py index f3983e7965..5526b41098 100644 --- a/cura/UI/ObjectsModel.py +++ b/cura/UI/ObjectsModel.py @@ -50,6 +50,7 @@ class ObjectsModel(ListModel): 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) diff --git a/cura/UI/PrintInformation.py b/cura/UI/PrintInformation.py index 3fafaaba12..e33ab13b69 100644 --- a/cura/UI/PrintInformation.py +++ b/cura/UI/PrintInformation.py @@ -197,11 +197,7 @@ class PrintInformation(QObject): material_preference_values = json.loads(self._application.getInstance().getPreferences().getValue("cura/material_settings")) - extruder_stacks = global_stack.extruders - - for position in extruder_stacks: - extruder_stack = extruder_stacks[position] - index = int(position) + for index, extruder_stack in enumerate(global_stack.extruderList): if index >= len(self._material_amounts): continue amount = self._material_amounts[index] @@ -302,9 +298,7 @@ class PrintInformation(QObject): # Only update the job name when it's not user-specified. if not self._is_user_specified_job_name: - if self._pre_sliced: - self._job_name = catalog.i18nc("@label", "Pre-sliced file {0}", base_name) - elif self._application.getInstance().getPreferences().getValue("cura/jobname_prefix"): + if self._application.getInstance().getPreferences().getValue("cura/jobname_prefix") and not self._pre_sliced: # Don't add abbreviation if it already has the exact same abbreviation. if base_name.startswith(self._abbr_machine + "_"): self._job_name = base_name diff --git a/cura/Utils/Decorators.py b/cura/Utils/Decorators.py new file mode 100644 index 0000000000..9275ee6ce9 --- /dev/null +++ b/cura/Utils/Decorators.py @@ -0,0 +1,30 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import functools +import re +from typing import Callable + +# An API version must be a semantic version "x.y.z" where ".z" is optional. So the valid formats are as follows: +# - x.y.z +# - x.y +SEMANTIC_VERSION_REGEX = re.compile(r"^[0-9]+\.[0-9]+(\.[0-9]+)?$") + + +## Decorator for functions that belong to a set of APIs. For now, this should only be used for officially supported +# APIs, meaning that those APIs should be versioned and maintained. +# +# \param since_version The earliest version since when this API becomes supported. This means that since this version, +# this API function is supposed to behave the same. This parameter is not used. It's just a +# documentation. +def api(since_version: str) -> Callable: + # Make sure that APi versions are semantic versions + if not SEMANTIC_VERSION_REGEX.fullmatch(since_version): + raise ValueError("API since_version [%s] is not a semantic version." % since_version) + + def api_decorator(function): + @functools.wraps(function) + def api_wrapper(*args, **kwargs): + return function(*args, **kwargs) + return api_wrapper + return api_decorator diff --git a/cura_app.py b/cura_app.py index 1978e0f5fd..e14b4410bc 100755 --- a/cura_app.py +++ b/cura_app.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import argparse @@ -32,7 +32,8 @@ if not known_args["debug"]: 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") @@ -59,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 @@ -122,7 +131,10 @@ def exceptHook(hook_type, value, traceback): # Set exception hook to use the crash dialog handler sys.excepthook = exceptHook # Enable dumping traceback for all threads -faulthandler.enable(all_threads = True) +if sys.stderr: + faulthandler.enable(file = sys.stderr, all_threads = True) +else: + faulthandler.enable(file = sys.stdout, all_threads = True) # Workaround for a race condition on certain systems where there # is a race condition between Arcus and PyQt. Importing Arcus @@ -132,5 +144,37 @@ import Arcus #@UnusedImport import Savitar #@UnusedImport from cura.CuraApplication import CuraApplication + +# WORKAROUND: CURA-6739 +# The CTM file loading module in Trimesh requires the OpenCTM library to be dynamically loaded. It uses +# ctypes.util.find_library() to find libopenctm.dylib, but this doesn't seem to look in the ".app" application folder +# on Mac OS X. Adding the search path to environment variables such as DYLD_LIBRARY_PATH and DYLD_FALLBACK_LIBRARY_PATH +# makes it work. The workaround here uses DYLD_FALLBACK_LIBRARY_PATH. +if Platform.isOSX() and getattr(sys, "frozen", False): + old_env = os.environ.get("DYLD_FALLBACK_LIBRARY_PATH", "") + # This is where libopenctm.so is in the .app folder. + search_path = os.path.join(CuraApplication.getInstallPrefix(), "MacOS") + path_list = old_env.split(":") + if search_path not in path_list: + path_list.append(search_path) + os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = ":".join(path_list) + import trimesh.exchange.load + os.environ["DYLD_FALLBACK_LIBRARY_PATH"] = old_env + +# WORKAROUND: CURA-6739 +# Similar CTM file loading fix for Linux, but NOTE THAT this doesn't work directly with Python 3.5.7. There's a fix +# for ctypes.util.find_library() in Python 3.6 and 3.7. That fix makes sure that find_library() will check +# LD_LIBRARY_PATH. With Python 3.5, that fix needs to be backported to make this workaround work. +if Platform.isLinux() and getattr(sys, "frozen", False): + old_env = os.environ.get("LD_LIBRARY_PATH", "") + # This is where libopenctm.so is in the AppImage. + search_path = os.path.join(CuraApplication.getInstallPrefix(), "bin") + path_list = old_env.split(":") + if search_path not in path_list: + path_list.append(search_path) + os.environ["LD_LIBRARY_PATH"] = ":".join(path_list) + import trimesh.exchange.load + os.environ["LD_LIBRARY_PATH"] = old_env + app = CuraApplication() app.run() diff --git a/docker/build.sh b/docker/build.sh index eb20b18c0d..6aa0678ca3 100755 --- a/docker/build.sh +++ b/docker/build.sh @@ -20,7 +20,16 @@ cd "${PROJECT_DIR}" # 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}" +echo "GITHUB_REF: ${GITHUB_REF}" +echo "GITHUB_BASE_REF: ${GITHUB_BASE_REF}" + +GIT_REF_NAME="${GITHUB_REF}" +if [ -n "${GITHUB_BASE_REF}" ]; then + GIT_REF_NAME="${GITHUB_BASE_REF}" +fi +GIT_REF_NAME="$(basename "${GIT_REF_NAME}")" + +URANIUM_BRANCH="${GIT_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." diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index b81d0858a4..20eb9b29dc 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -19,12 +19,12 @@ from UM.Scene.SceneNode import SceneNode #For typing. from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from cura.Settings.ExtruderManager import ExtruderManager from cura.Scene.CuraSceneNode import CuraSceneNode from cura.Scene.BuildPlateDecorator import BuildPlateDecorator from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator from cura.Scene.ZOffsetDecorator import ZOffsetDecorator -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch try: @@ -131,7 +131,7 @@ class ThreeMFReader(MeshReader): um_node.callDecoration("setActiveExtruder", default_stack.getId()) # Get the definition & set it - definition_id = getMachineDefinitionIDForQualitySearch(global_container_stack.definition) + definition_id = ContainerTree.getInstance().machines[global_container_stack.definition.getId()].quality_definition um_node.callDecoration("getStack").getTop().setDefinition(definition_id) setting_container = um_node.callDecoration("getStack").getTop() diff --git a/plugins/3MFReader/ThreeMFWorkspaceReader.py b/plugins/3MFReader/ThreeMFWorkspaceReader.py index 8a18d1b698..dd35484c31 100755 --- a/plugins/3MFReader/ThreeMFWorkspaceReader.py +++ b/plugins/3MFReader/ThreeMFWorkspaceReader.py @@ -1,10 +1,10 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from configparser import ConfigParser import zipfile import os -from typing import Dict, List, Tuple, cast +from typing import cast, Dict, List, Optional, Tuple import xml.etree.ElementTree as ET @@ -14,7 +14,6 @@ from UM.Application import Application from UM.Logger import Logger from UM.Message import Message from UM.i18n import i18nCatalog -from UM.Signal import postponeSignals, CompressTechnique from UM.Settings.ContainerFormatError import ContainerFormatError from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer @@ -24,22 +23,25 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.Job import Job from UM.Preferences import Preferences -from cura.Machines.VariantType import VariantType +from cura.Machines.ContainerTree import ContainerTree from cura.Settings.CuraStackBuilder import CuraStackBuilder from cura.Settings.ExtruderManager import ExtruderManager from cura.Settings.ExtruderStack import ExtruderStack from cura.Settings.GlobalStack import GlobalStack +from cura.Settings.IntentManager import IntentManager from cura.Settings.CuraContainerStack import _ContainerIndexes from cura.CuraApplication import CuraApplication from cura.Utils.Threading import call_on_qt_thread +from PyQt5.QtCore import QCoreApplication + from .WorkspaceDialog import WorkspaceDialog i18n_catalog = i18nCatalog("cura") class ContainerInfo: - def __init__(self, file_name: str, serialized: str, parser: ConfigParser) -> None: + def __init__(self, file_name: Optional[str], serialized: Optional[str], parser: Optional[ConfigParser]) -> None: self.file_name = file_name self.serialized = serialized self.parser = parser @@ -59,7 +61,11 @@ class MachineInfo: self.container_id = None self.name = None self.definition_id = None + + self.metadata_dict = {} # type: Dict[str, str] + self.quality_type = None + self.intent_category = None self.custom_quality_name = None self.quality_changes_info = None self.variant_info = None @@ -79,6 +85,7 @@ class ExtruderInfo: self.definition_changes_info = None self.user_changes_info = None + self.intent_info = None ## Base implementation for reading 3MF workspace files. @@ -227,6 +234,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): else: Logger.log("w", "Unknown definition container type %s for %s", definition_container_type, definition_container_file) + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() if machine_definition_container_count != 1: @@ -253,12 +261,15 @@ 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 = "" + intent_name = "" + intent_category = "" num_settings_overridden_by_quality_changes = 0 # How many settings are changed by the quality changes num_user_settings = 0 quality_changes_conflict = False @@ -316,13 +327,17 @@ class ThreeMFWorkspaceReader(WorkspaceReader): elif container_type == "quality": if not quality_name: quality_name = parser["general"]["name"] + elif container_type == "intent": + if not intent_name: + intent_name = parser["general"]["name"] + intent_category = parser["metadata"]["intent_category"] elif container_type == "user": num_user_settings += len(parser["values"]) elif container_type in self._ignored_instance_container_types: # Ignore certain instance container types Logger.log("w", "Ignoring instance container [%s] with type [%s]", container_id, container_type) continue - + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() if self._machine_info.quality_changes_info.global_info is None: @@ -341,7 +356,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # To simplify this, only check if the global stack exists or not global_stack_id = self._stripFileToId(global_stack_file) serialized = archive.open(global_stack_file).read().decode("utf-8") + serialized = GlobalStack._updateSerialized(serialized, global_stack_file) machine_name = self._getMachineNameFromSerializedStack(serialized) + self._machine_info.metadata_dict = self._getMetaDataDictFromSerializedStack(serialized) + stacks = self._container_registry.findContainerStacks(name = machine_name, type = "machine") self._is_same_machine_type = True existing_global_stack = None @@ -397,7 +415,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): variant_id = parser["containers"][str(_ContainerIndexes.Variant)] if variant_id not in ("empty", "empty_variant"): self._machine_info.variant_info = instance_container_info_dict[variant_id] - + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Job.yieldThread() # if the global stack is found, we check if there are conflicts in the extruder stacks @@ -419,18 +437,26 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if parser.has_option("metadata", "enabled"): extruder_info.enabled = parser["metadata"]["enabled"] if variant_id not in ("empty", "empty_variant"): - extruder_info.variant_info = instance_container_info_dict[variant_id] + if variant_id in instance_container_info_dict: + extruder_info.variant_info = instance_container_info_dict[variant_id] + if material_id not in ("empty", "empty_material"): root_material_id = reverse_material_id_dict[material_id] extruder_info.root_material_id = root_material_id + definition_changes_id = parser["containers"][str(_ContainerIndexes.DefinitionChanges)] if definition_changes_id not in ("empty", "empty_definition_changes"): extruder_info.definition_changes_info = instance_container_info_dict[definition_changes_id] + user_changes_id = parser["containers"][str(_ContainerIndexes.UserChanges)] if user_changes_id not in ("empty", "empty_user_changes"): extruder_info.user_changes_info = instance_container_info_dict[user_changes_id] self._machine_info.extruder_info_dict[position] = extruder_info + intent_id = parser["containers"][str(_ContainerIndexes.Intent)] + if intent_id not in ("empty", "empty_intent"): + extruder_info.intent_info = instance_container_info_dict[intent_id] + if not machine_conflict and containers_found_dict["machine"]: if position not in global_stack.extruders: continue @@ -495,6 +521,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info.definition_id = machine_definition_id self._machine_info.quality_type = quality_type self._machine_info.custom_quality_name = quality_name + self._machine_info.intent_category = intent_category if machine_conflict and not self._is_same_machine_type: machine_conflict = False @@ -515,6 +542,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._dialog.setNumVisibleSettings(num_visible_settings) self._dialog.setQualityName(quality_name) self._dialog.setQualityType(quality_type) + self._dialog.setIntentName(intent_name) self._dialog.setNumSettingsOverriddenByQualityChanges(num_settings_overridden_by_quality_changes) self._dialog.setNumUserSettings(num_user_settings) self._dialog.setActiveMode(active_mode) @@ -558,26 +586,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # \param file_name @call_on_qt_thread def read(self, file_name): - container_registry = ContainerRegistry.getInstance() - signals = [container_registry.containerAdded, - container_registry.containerRemoved, - container_registry.containerMetaDataChanged] - # - # We now have different managers updating their lookup tables upon container changes. It is critical to make - # sure that the managers have a complete set of data when they update. - # - # In project loading, lots of the container-related signals are loosely emitted, which can create timing gaps - # for incomplete data update or other kinds of issues to happen. - # - # To avoid this, we postpone all signals so they don't get emitted immediately. But, please also be aware that, - # because of this, do not expect to have the latest data in the lookup tables in project loading. - # - with postponeSignals(*signals, compress = CompressTechnique.NoCompression): - return self._read(file_name) - - def _read(self, file_name): application = CuraApplication.getInstance() - material_manager = application.getMaterialManager() archive = zipfile.ZipFile(file_name, "r") @@ -648,6 +657,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): definition_container = self._container_registry.findDefinitionContainers(id = "fdmprinter")[0] #Fall back to defaults. self._container_registry.addContainer(definition_container) Job.yieldThread() + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. Logger.log("d", "Workspace loading is checking materials...") # Get all the material files and check if they exist. If not, add them. @@ -674,7 +684,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._resolve_strategies["material"] == "override": # Remove the old materials and then deserialize the one from the project root_material_id = material_container.getMetaDataEntry("base_file") - material_manager.removeMaterialByRootId(root_material_id) + application.getContainerRegistry().removeContainer(root_material_id) elif self._resolve_strategies["material"] == "new": # Note that we *must* deserialize it with a new ID, as multiple containers will be # auto created & added. @@ -697,6 +707,7 @@ class ThreeMFWorkspaceReader(WorkspaceReader): material_container.setDirty(True) self._container_registry.addContainer(material_container) Job.yieldThread() + QCoreApplication.processEvents() # Ensure that the GUI does not freeze. # Handle quality changes if any self._processQualityChanges(global_stack) @@ -727,9 +738,6 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if self._machine_info.quality_changes_info is None: return - application = CuraApplication.getInstance() - quality_manager = application.getQualityManager() - # If we have custom profiles, load them quality_changes_name = self._machine_info.quality_changes_info.name if self._machine_info.quality_changes_info is not None: @@ -737,12 +745,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info.quality_changes_info.name) # Get the correct extruder definition IDs for quality changes - from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch - machine_definition_id_for_quality = getMachineDefinitionIDForQualitySearch(global_stack.definition) + machine_definition_id_for_quality = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition machine_definition_for_quality = self._container_registry.findDefinitionContainers(id = machine_definition_id_for_quality)[0] quality_changes_info = self._machine_info.quality_changes_info quality_changes_quality_type = quality_changes_info.global_info.parser["metadata"]["quality_type"] + quality_changes_intent_category_per_extruder = {position: info.parser["metadata"].get("intent_category", "default") for position, info in quality_changes_info.extruder_info_dict.items()} quality_changes_name = quality_changes_info.name create_new = self._resolve_strategies.get("quality_changes") != "override" @@ -753,13 +761,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): quality_changes_name = self._container_registry.uniqueName(quality_changes_name) for position, container_info in container_info_dict.items(): extruder_stack = None + intent_category = None # type: Optional[str] if position is not None: extruder_stack = global_stack.extruders[position] - container = quality_manager._createQualityChanges(quality_changes_quality_type, - quality_changes_name, - global_stack, extruder_stack) + intent_category = quality_changes_intent_category_per_extruder[position] + container = self._createNewQualityChanges(quality_changes_quality_type, intent_category, quality_changes_name, global_stack, extruder_stack) container_info.container = container - container.setDirty(True) self._container_registry.addContainer(container) Logger.log("d", "Created new quality changes container [%s]", container.getId()) @@ -787,11 +794,10 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if not global_stack.extruders: ExtruderManager.getInstance().fixSingleExtrusionMachineExtruderDefinition(global_stack) extruder_stack = global_stack.extruders["0"] + intent_category = quality_changes_intent_category_per_extruder["0"] - container = quality_manager._createQualityChanges(quality_changes_quality_type, quality_changes_name, - global_stack, extruder_stack) + container = self._createNewQualityChanges(quality_changes_quality_type, intent_category, quality_changes_name, global_stack, extruder_stack) container_info.container = container - container.setDirty(True) self._container_registry.addContainer(container) Logger.log("d", "Created new quality changes container [%s]", container.getId()) @@ -817,10 +823,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if container_info.container is None: extruder_stack = global_stack.extruders[position] - container = quality_manager._createQualityChanges(quality_changes_quality_type, quality_changes_name, - global_stack, extruder_stack) + intent_category = quality_changes_intent_category_per_extruder[position] + container = self._createNewQualityChanges(quality_changes_quality_type, intent_category, quality_changes_name, global_stack, extruder_stack) container_info.container = container - container.setDirty(True) self._container_registry.addContainer(container) for key, value in container_info.parser["values"].items(): @@ -828,7 +833,47 @@ class ThreeMFWorkspaceReader(WorkspaceReader): self._machine_info.quality_changes_info.name = quality_changes_name - def _clearStack(self, stack): + ## Helper class to create a new quality changes profile. + # + # This will then later be filled with the appropriate data. + # \param quality_type The quality type of the new profile. + # \param intent_category The intent category of the new profile. + # \param name The name for the profile. This will later be made unique so + # it doesn't need to be unique yet. + # \param global_stack The global stack showing the configuration that the + # profile should be created for. + # \param extruder_stack The extruder stack showing the configuration that + # the profile should be created for. If this is None, it will be created + # for the global stack. + def _createNewQualityChanges(self, quality_type: str, intent_category: Optional[str], name: str, global_stack: GlobalStack, extruder_stack: Optional[ExtruderStack]) -> InstanceContainer: + container_registry = CuraApplication.getInstance().getContainerRegistry() + base_id = global_stack.definition.getId() if extruder_stack is None else extruder_stack.getId() + new_id = base_id + "_" + name + new_id = new_id.lower().replace(" ", "_") + new_id = container_registry.uniqueName(new_id) + + # Create a new quality_changes container for the quality. + quality_changes = InstanceContainer(new_id) + quality_changes.setName(name) + quality_changes.setMetaDataEntry("type", "quality_changes") + quality_changes.setMetaDataEntry("quality_type", quality_type) + if intent_category is not None: + quality_changes.setMetaDataEntry("intent_category", intent_category) + + # If we are creating a container for an extruder, ensure we add that to the container. + if extruder_stack is not None: + quality_changes.setMetaDataEntry("position", extruder_stack.getMetaDataEntry("position")) + + # If the machine specifies qualities should be filtered, ensure we match the current criteria. + machine_definition_id = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition + quality_changes.setDefinition(machine_definition_id) + + quality_changes.setMetaDataEntry("setting_version", CuraApplication.getInstance().SettingVersion) + quality_changes.setDirty(True) + return quality_changes + + @staticmethod + def _clearStack(stack): application = CuraApplication.getInstance() stack.definitionChanges.clear() @@ -887,41 +932,30 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.userChanges.setProperty(key, "value", value) def _applyVariants(self, global_stack, extruder_stack_dict): - application = CuraApplication.getInstance() - variant_manager = application.getVariantManager() + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + # Take the global variant from the machine info if available. if self._machine_info.variant_info is not None: - parser = self._machine_info.variant_info.parser - variant_name = parser["general"]["name"] - - variant_type = VariantType.BUILD_PLATE - - node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type) - if node is not None and node.getContainer() is not None: - global_stack.variant = node.getContainer() + variant_name = self._machine_info.variant_info.parser["general"]["name"] + if variant_name in machine_node.variants: + global_stack.variant = machine_node.variants[variant_name].container + else: + Logger.log("w", "Could not find global variant '{0}'.".format(variant_name)) for position, extruder_stack in extruder_stack_dict.items(): if position not in self._machine_info.extruder_info_dict: continue extruder_info = self._machine_info.extruder_info_dict[position] if extruder_info.variant_info is None: - continue - parser = extruder_info.variant_info.parser - - variant_name = parser["general"]["name"] - variant_type = VariantType.NOZZLE - - node = variant_manager.getVariantNode(global_stack.definition.getId(), variant_name, variant_type) - if node is not None and node.getContainer() is not None: - extruder_stack.variant = node.getContainer() + # If there is no variant_info, try to use the default variant. Otherwise, any available variant. + node = machine_node.variants.get(machine_node.preferred_variant_name, next(iter(machine_node.variants.values()))) + else: + variant_name = extruder_info.variant_info.parser["general"]["name"] + node = ContainerTree.getInstance().machines[global_stack.definition.getId()].variants[variant_name] + extruder_stack.variant = node.container def _applyMaterials(self, global_stack, extruder_stack_dict): - application = CuraApplication.getInstance() - material_manager = application.getMaterialManager() - - # Force update lookup tables first - material_manager.initialize() - + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] for position, extruder_stack in extruder_stack_dict.items(): if position not in self._machine_info.extruder_info_dict: continue @@ -932,18 +966,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): root_material_id = extruder_info.root_material_id root_material_id = self._old_new_materials.get(root_material_id, root_material_id) - build_plate_id = global_stack.variant.getId() - - # get material diameter of this extruder - machine_material_diameter = extruder_stack.getCompatibleMaterialDiameter() - material_node = material_manager.getMaterialNode(global_stack.definition.getId(), - extruder_stack.variant.getName(), - build_plate_id, - machine_material_diameter, - root_material_id) - - if material_node is not None and material_node.getContainer() is not None: - extruder_stack.material = material_node.getContainer() # type: InstanceContainer + material_node = machine_node.variants[extruder_stack.variant.getName()].materials[root_material_id] + extruder_stack.material = material_node.container # type: InstanceContainer def _applyChangesToMachine(self, global_stack, extruder_stack_dict): # Clear all first @@ -959,10 +983,12 @@ class ThreeMFWorkspaceReader(WorkspaceReader): # prepare the quality to select self._quality_changes_to_apply = None self._quality_type_to_apply = None + self._intent_category_to_apply = None if self._machine_info.quality_changes_info is not None: self._quality_changes_to_apply = self._machine_info.quality_changes_info.name else: self._quality_type_to_apply = self._machine_info.quality_type + self._intent_category_to_apply = self._machine_info.intent_category # Set enabled/disabled for extruders for position, extruder_stack in extruder_stack_dict.items(): @@ -973,34 +999,38 @@ class ThreeMFWorkspaceReader(WorkspaceReader): extruder_stack.setMetaDataEntry("enabled", "True") extruder_stack.setMetaDataEntry("enabled", str(extruder_info.enabled)) + # Set metadata fields that are missing from the global stack + for key, value in self._machine_info.metadata_dict.items(): + if key not in global_stack.getMetaData(): + global_stack.setMetaDataEntry(key, value) + def _updateActiveMachine(self, global_stack): # Actually change the active machine. machine_manager = Application.getInstance().getMachineManager() - material_manager = Application.getInstance().getMaterialManager() - quality_manager = Application.getInstance().getQualityManager() - - # Force update the lookup maps first - material_manager.initialize() - quality_manager.initialize() + container_tree = ContainerTree.getInstance() machine_manager.setActiveMachine(global_stack.getId()) + # Set metadata fields that are missing from the global stack + for key, value in self._machine_info.metadata_dict.items(): + if key not in global_stack.getMetaData(): + global_stack.setMetaDataEntry(key, value) + if self._quality_changes_to_apply: - quality_changes_group_dict = quality_manager.getQualityChangesGroups(global_stack) - if self._quality_changes_to_apply not in quality_changes_group_dict: + quality_changes_group_list = container_tree.getCurrentQualityChangesGroups() + quality_changes_group = next((qcg for qcg in quality_changes_group_list if qcg.name == self._quality_changes_to_apply), None) + if not quality_changes_group: Logger.log("e", "Could not find quality_changes [%s]", self._quality_changes_to_apply) return - quality_changes_group = quality_changes_group_dict[self._quality_changes_to_apply] machine_manager.setQualityChangesGroup(quality_changes_group, no_dialog = True) else: self._quality_type_to_apply = self._quality_type_to_apply.lower() - quality_group_dict = quality_manager.getQualityGroups(global_stack) + quality_group_dict = container_tree.getCurrentQualityGroups() if self._quality_type_to_apply in quality_group_dict: quality_group = quality_group_dict[self._quality_type_to_apply] else: Logger.log("i", "Could not find quality type [%s], switch to default", self._quality_type_to_apply) preferred_quality_type = global_stack.getMetaDataEntry("preferred_quality_type") - quality_group_dict = quality_manager.getQualityGroups(global_stack) quality_group = quality_group_dict.get(preferred_quality_type) if quality_group is None: Logger.log("e", "Could not get preferred quality type [%s]", preferred_quality_type) @@ -1008,10 +1038,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader): if quality_group is not None: machine_manager.setQualityGroup(quality_group, no_dialog = True) + # Also apply intent if available + available_intent_category_list = IntentManager.getInstance().currentAvailableIntentCategories() + if self._intent_category_to_apply is not None and self._intent_category_to_apply in available_intent_category_list: + machine_manager.setIntentByCategory(self._intent_category_to_apply) + # Notify everything/one that is to notify about changes. global_stack.containersChanged.emit(global_stack.getTop()) - def _stripFileToId(self, file): + @staticmethod + def _stripFileToId(file): mime_type = MimeTypeDatabase.getMimeTypeForFile(file) file = mime_type.stripExtension(file) return file.replace("Cura/", "") @@ -1020,7 +1056,8 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return self._container_registry.getContainerForMimeType(MimeTypeDatabase.getMimeType("application/x-ultimaker-material-profile")) ## Get the list of ID's of all containers in a container stack by partially parsing it's serialized data. - def _getContainerIdListFromSerialized(self, serialized): + @staticmethod + def _getContainerIdListFromSerialized(serialized): parser = ConfigParser(interpolation = None, empty_lines_in_values = False) parser.read_string(serialized) @@ -1041,12 +1078,20 @@ class ThreeMFWorkspaceReader(WorkspaceReader): return container_ids - def _getMachineNameFromSerializedStack(self, serialized): + @staticmethod + def _getMachineNameFromSerializedStack(serialized): parser = ConfigParser(interpolation = None, empty_lines_in_values = False) parser.read_string(serialized) return parser["general"].get("name", "") - def _getMaterialLabelFromSerialized(self, serialized): + @staticmethod + def _getMetaDataDictFromSerializedStack(serialized: str) -> Dict[str, str]: + parser = ConfigParser(interpolation = None, empty_lines_in_values = False) + parser.read_string(serialized) + return dict(parser["metadata"]) + + @staticmethod + def _getMaterialLabelFromSerialized(serialized): data = ET.fromstring(serialized) metadata = data.iterfind("./um:metadata/um:name/um:label", {"um": "http://www.ultimaker.com/material"}) for entry in metadata: diff --git a/plugins/3MFReader/WorkspaceDialog.py b/plugins/3MFReader/WorkspaceDialog.py index 332c57ceb1..3df7f1f570 100644 --- a/plugins/3MFReader/WorkspaceDialog.py +++ b/plugins/3MFReader/WorkspaceDialog.py @@ -43,6 +43,7 @@ class WorkspaceDialog(QObject): self._quality_name = "" self._num_settings_overridden_by_quality_changes = 0 self._quality_type = "" + self._intent_name = "" self._machine_name = "" self._machine_type = "" self._variant_type = "" @@ -60,6 +61,7 @@ class WorkspaceDialog(QObject): hasVisibleSettingsFieldChanged = pyqtSignal() numSettingsOverridenByQualityChangesChanged = pyqtSignal() qualityTypeChanged = pyqtSignal() + intentNameChanged = pyqtSignal() machineNameChanged = pyqtSignal() materialLabelsChanged = pyqtSignal() objectsOnPlateChanged = pyqtSignal() @@ -166,6 +168,15 @@ class WorkspaceDialog(QObject): self._quality_name = quality_name self.qualityNameChanged.emit() + @pyqtProperty(str, notify = intentNameChanged) + def intentName(self) -> str: + return self._intent_name + + def setIntentName(self, intent_name: str) -> None: + if self._intent_name != intent_name: + self._intent_name = intent_name + self.intentNameChanged.emit() + @pyqtProperty(str, notify=activeModeChanged) def activeMode(self): return self._active_mode diff --git a/plugins/3MFReader/WorkspaceDialog.qml b/plugins/3MFReader/WorkspaceDialog.qml index 58d881c915..d0fd3d0846 100644 --- a/plugins/3MFReader/WorkspaceDialog.qml +++ b/plugins/3MFReader/WorkspaceDialog.qml @@ -1,10 +1,10 @@ // Copyright (c) 2016 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 import UM 1.1 as UM @@ -13,8 +13,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Open Project") - minimumWidth: 500 * screenScaleFactor - minimumHeight: 450 * screenScaleFactor + minimumWidth: UM.Theme.getSize("popup_dialog").width + minimumHeight: UM.Theme.getSize("popup_dialog").height width: minimumWidth height: minimumHeight @@ -24,7 +24,7 @@ UM.Dialog onClosing: manager.notifyClosed() onVisibleChanged: { - if(visible) + if (visible) { machineResolveComboBox.currentIndex = 0 qualityChangesResolveComboBox.currentIndex = 0 @@ -55,8 +55,8 @@ UM.Dialog // See http://stackoverflow.com/questions/7659442/listelement-fields-as-properties Component.onCompleted: { - append({"key": "override", "label": catalog.i18nc("@action:ComboBox option", "Update existing")}); - append({"key": "new", "label": catalog.i18nc("@action:ComboBox option", "Create new")}); + append({"key": "override", "label": catalog.i18nc("@action:ComboBox Update/override existing profile", "Update existing")}); + append({"key": "new", "label": catalog.i18nc("@action:ComboBox Save settings in a new profile", "Create new")}); } } @@ -223,6 +223,21 @@ UM.Dialog } } Row + { + width: parent.width + height: childrenRect.height + Label + { + text: catalog.i18nc("@action:label", "Intent") + width: (parent.width / 3) | 0 + } + Label + { + text: manager.intentName + width: (parent.width / 3) | 0 + } + } + Row { width: parent.width height: manager.numUserSettings != 0 ? childrenRect.height : 0 diff --git a/plugins/3MFReader/__init__.py b/plugins/3MFReader/__init__.py index ce94bbe69c..d68338c35f 100644 --- a/plugins/3MFReader/__init__.py +++ b/plugins/3MFReader/__init__.py @@ -12,7 +12,6 @@ except ImportError: from . import ThreeMFWorkspaceReader from UM.i18n import i18nCatalog -from UM.Platform import Platform catalog = i18nCatalog("cura") diff --git a/plugins/3MFReader/plugin.json b/plugins/3MFReader/plugin.json index 5af21a7033..e366a5da72 100644 --- a/plugins/3MFReader/plugin.json +++ b/plugins/3MFReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for reading 3MF files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/3MFWriter/plugin.json b/plugins/3MFWriter/plugin.json index 3820ebd2e7..5c72072447 100644 --- a/plugins/3MFWriter/plugin.json +++ b/plugins/3MFWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for writing 3MF files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/AMFReader/AMFReader.py b/plugins/AMFReader/AMFReader.py index d35fbe3d40..6c5ee91e87 100644 --- a/plugins/AMFReader/AMFReader.py +++ b/plugins/AMFReader/AMFReader.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019 fieldOfView +# Copyright (c) 2019 fieldOfView, Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. # This AMF parser is based on the AMF parser in legacy cura: @@ -39,9 +39,9 @@ class AMFReader(MeshReader): MimeTypeDatabase.addMimeType( MimeType( - name="application/x-amf", - comment="AMF", - suffixes=["amf"] + name = "application/x-amf", + comment = "AMF", + suffixes = ["amf"] ) ) @@ -94,7 +94,7 @@ class AMFReader(MeshReader): if t.tag == "x": v[0] = float(t.text) * scale elif t.tag == "y": - v[2] = float(t.text) * scale + v[2] = -float(t.text) * scale elif t.tag == "z": v[1] = float(t.text) * scale amf_mesh_vertices.append(v) @@ -114,7 +114,7 @@ class AMFReader(MeshReader): 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 = 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() @@ -123,7 +123,7 @@ class AMFReader(MeshReader): 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.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()) @@ -165,9 +165,9 @@ class AMFReader(MeshReader): indices.append(face) face_count += 1 - vertices = numpy.asarray(vertices, dtype=numpy.float32) - indices = numpy.asarray(indices, dtype=numpy.int32) + 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) + mesh_data = MeshData(vertices = vertices, indices = indices, normals = normals) return mesh_data diff --git a/plugins/AMFReader/plugin.json b/plugins/AMFReader/plugin.json index 599dc03c76..5e5b0f211b 100644 --- a/plugins/AMFReader/plugin.json +++ b/plugins/AMFReader/plugin.json @@ -3,5 +3,5 @@ "author": "fieldOfView", "version": "1.0.0", "description": "Provides support for reading AMF files.", - "api": "6.0.0" + "api": "7.0.0" } diff --git a/plugins/CuraDrive/plugin.json b/plugins/CuraDrive/plugin.json index d1cab39ca5..9b9b3e2c15 100644 --- a/plugins/CuraDrive/plugin.json +++ b/plugins/CuraDrive/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "description": "Backup and restore your configuration.", "version": "1.2.0", - "api": 6, + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/CuraDrive/src/qml/main.qml b/plugins/CuraDrive/src/qml/main.qml index 48bf3b6ea4..796a31e1d3 100644 --- a/plugins/CuraDrive/src/qml/main.qml +++ b/plugins/CuraDrive/src/qml/main.qml @@ -18,6 +18,7 @@ Window minimumHeight: Math.round(UM.Theme.getSize("modal_window_minimum").height) maximumWidth: Math.round(minimumWidth * 1.2) maximumHeight: Math.round(minimumHeight * 1.2) + modality: Qt.ApplicationModal width: minimumWidth height: minimumHeight color: UM.Theme.getColor("main_background") diff --git a/plugins/CuraEngineBackend/CuraEngineBackend.py b/plugins/CuraEngineBackend/CuraEngineBackend.py index 6b558bc65b..1437153f32 100755 --- a/plugins/CuraEngineBackend/CuraEngineBackend.py +++ b/plugins/CuraEngineBackend/CuraEngineBackend.py @@ -369,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 @@ -400,7 +400,7 @@ class CuraEngineBackend(QObject, Backend): self.setState(BackendState.NotStarted) if job.getResult() == StartJobResult.ObjectsWithDisabledExtruder: - self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because there are objects associated with disabled Extruder %s." % job.getMessage()), + self._error_message = Message(catalog.i18nc("@info:status", "Unable to slice because there are objects associated with disabled Extruder %s.") % job.getMessage(), title = catalog.i18nc("@info:title", "Unable to slice")) self._error_message.show() self.setState(BackendState.Error) @@ -438,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) @@ -460,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") @@ -543,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): @@ -560,6 +570,10 @@ 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() @@ -631,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)) @@ -670,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: @@ -811,9 +834,8 @@ class CuraEngineBackend(QObject, Backend): if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onSettingChanged) self._global_container_stack.containersChanged.disconnect(self._onChanged) - extruders = list(self._global_container_stack.extruders.values()) - for extruder in extruders: + for extruder in self._global_container_stack.extruderList: extruder.propertyChanged.disconnect(self._onSettingChanged) extruder.containersChanged.disconnect(self._onChanged) @@ -822,8 +844,8 @@ class CuraEngineBackend(QObject, Backend): if self._global_container_stack: self._global_container_stack.propertyChanged.connect(self._onSettingChanged) # Note: Only starts slicing when the value changed. self._global_container_stack.containersChanged.connect(self._onChanged) - extruders = list(self._global_container_stack.extruders.values()) - for extruder in extruders: + + for extruder in self._global_container_stack.extruderList: extruder.propertyChanged.connect(self._onSettingChanged) extruder.containersChanged.connect(self._onChanged) self._onChanged() diff --git a/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py b/plugins/CuraEngineBackend/ProcessSlicedLayersJob.py index ed4f556cc9..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 @@ -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 fc4de3dfa5..43d54d8b12 100644 --- a/plugins/CuraEngineBackend/StartSliceJob.py +++ b/plugins/CuraEngineBackend/StartSliceJob.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import numpy @@ -11,6 +11,7 @@ import Arcus #For typing. from UM.Job import Job from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode from UM.Settings.ContainerStack import ContainerStack #For typing. from UM.Settings.SettingRelation import SettingRelation #For typing. @@ -71,7 +72,7 @@ class GcodeStartEndFormatter(Formatter): value = default_value_str # "-1" is global stack, and if the setting value exists in the global stack, use it as the fallback value. if key in kwargs["-1"]: - value = kwargs["-1"] + value = kwargs["-1"][key] if str(extruder_nr) in kwargs and key in kwargs[str(extruder_nr)]: value = kwargs[str(extruder_nr)][key] @@ -105,6 +106,11 @@ class StartSliceJob(Job): if stack is None: return False + # if there are no per-object settings we don't need to check the other settings here + stack_top = stack.getTop() + if stack_top is None or not stack_top.getAllKeys(): + return False + for key in stack.getAllKeys(): validation_state = stack.getProperty(key, "validationState") if validation_state in (ValidatorState.Exception, ValidatorState.MaximumError, ValidatorState.MinimumError, ValidatorState.Invalid): @@ -133,6 +139,14 @@ class StartSliceJob(Job): self.setResult(StartJobResult.BuildPlateError) return + # Wait for error checker to be done. + while CuraApplication.getInstance().getMachineErrorChecker().needToWaitForResult: + time.sleep(0.1) + + if CuraApplication.getInstance().getMachineErrorChecker().hasError: + self.setResult(StartJobResult.SettingError) + return + # Don't slice if the buildplate or the nozzle type is incompatible with the materials if not CuraApplication.getInstance().getMachineManager().variantBuildplateCompatible and \ not CuraApplication.getInstance().getMachineManager().variantBuildplateUsable: @@ -150,7 +164,7 @@ class StartSliceJob(Job): # Don't slice if there is a per object setting with an error value. - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): if not isinstance(node, CuraSceneNode) or not node.isSelectable(): continue @@ -160,15 +174,16 @@ class StartSliceJob(Job): with self._scene.getSceneLock(): # Remove old layer data. - for node in DepthFirstIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in DepthFirstIterator(self._scene.getRoot()): if node.callDecoration("getLayerData") and node.callDecoration("getBuildPlateNumber") == self._build_plate_number: - node.getParent().removeChild(node) + # Singe we walk through all nodes in the scene, they always have a parent. + cast(SceneNode, node.getParent()).removeChild(node) break # Get the objects in their groups to print. object_groups = [] if stack.getProperty("print_sequence", "value") == "one_at_a_time": - for node in OneAtATimeIterator(self._scene.getRoot()): #type: ignore #Ignore type error because iter() should get called automatically by Python syntax. + for node in OneAtATimeIterator(self._scene.getRoot()): temp_list = [] # Node can't be printed, so don't bother sending it. @@ -183,7 +198,8 @@ class StartSliceJob(Job): children = node.getAllChildren() children.append(node) for child_node in children: - if child_node.getMeshData() and child_node.getMeshData().getVertices() is not None: + mesh_data = child_node.getMeshData() + if mesh_data and mesh_data.getVertices() is not None: temp_list.append(child_node) if temp_list: @@ -194,8 +210,9 @@ 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: + 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 @@ -210,7 +227,7 @@ class StartSliceJob(Job): Job.yieldThread() - #If the list doesn't have any model with suitable settings then clean the list + # If the list doesn't have any model with suitable settings then clean the list # otherwise CuraEngine will crash if not has_printing_mesh: temp_list.clear() @@ -261,10 +278,14 @@ class StartSliceJob(Job): 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] @@ -288,7 +309,7 @@ class StartSliceJob(Job): obj.vertices = flat_verts - self._handlePerObjectSettings(object, obj) + self._handlePerObjectSettings(cast(CuraSceneNode, object), obj) Job.yieldThread() diff --git a/plugins/CuraEngineBackend/plugin.json b/plugins/CuraEngineBackend/plugin.json index 28f0e294e7..5482e3699e 100644 --- a/plugins/CuraEngineBackend/plugin.json +++ b/plugins/CuraEngineBackend/plugin.json @@ -2,7 +2,7 @@ "name": "CuraEngine Backend", "author": "Ultimaker B.V.", "description": "Provides the link to the CuraEngine slicing backend.", - "api": "6.0", + "api": "7.0", "version": "1.0.1", "i18n-catalog": "cura" } diff --git a/plugins/CuraProfileReader/CuraProfileReader.py b/plugins/CuraProfileReader/CuraProfileReader.py index 11e58dac6d..d4e5d393b2 100644 --- a/plugins/CuraProfileReader/CuraProfileReader.py +++ b/plugins/CuraProfileReader/CuraProfileReader.py @@ -1,11 +1,14 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import configparser -from UM.PluginRegistry import PluginRegistry +import configparser +from typing import List, Optional, Tuple + from UM.Logger import Logger from UM.Settings.ContainerFormatError import ContainerFormatError from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make. +from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from cura.ReaderWriters.ProfileReader import ProfileReader import zipfile @@ -17,39 +20,43 @@ import zipfile class CuraProfileReader(ProfileReader): ## Initialises the cura profile reader. # This does nothing since the only other function is basically stateless. - def __init__(self): + def __init__(self) -> None: super().__init__() ## Reads a cura profile from a file and returns it. # # \param file_name The file to read the cura profile from. - # \return The cura profile that was in the file, if any. If the file could - # not be read or didn't contain a valid profile, \code None \endcode is + # \return The cura profiles that were in the file, if any. If the file + # could not be read or didn't contain a valid profile, ``None`` is # returned. - def read(self, file_name): + def read(self, file_name: str) -> List[Optional[InstanceContainer]]: try: with zipfile.ZipFile(file_name, "r") as archive: - results = [] + results = [] # type: List[Optional[InstanceContainer]] for profile_id in archive.namelist(): with archive.open(profile_id) as f: serialized = f.read() - profile = self._loadProfile(serialized.decode("utf-8"), profile_id) - if profile is not None: - results.append(profile) + upgraded_profiles = self._upgradeProfile(serialized.decode("utf-8"), profile_id) #After upgrading it may split into multiple profiles. + for upgraded_profile in upgraded_profiles: + serialization, new_id = upgraded_profile + profile = self._loadProfile(serialization, new_id) + if profile is not None: + results.append(profile) return results except zipfile.BadZipFile: # It must be an older profile from Cura 2.1. with open(file_name, encoding = "utf-8") as fhandle: - serialized = fhandle.read() - return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized, file_name)] + serialized_bytes = fhandle.read() + return [self._loadProfile(serialized, profile_id) for serialized, profile_id in self._upgradeProfile(serialized_bytes, file_name)] ## Convert a profile from an old Cura to this Cura if needed. # - # \param serialized \type{str} The profile data to convert in the serialized on-disk format. - # \param profile_id \type{str} The name of the profile. - # \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names. - def _upgradeProfile(self, serialized, profile_id): + # \param serialized The profile data to convert in the serialized on-disk + # format. + # \param profile_id The name of the profile. + # \return List of serialized profile strings and matching profile names. + def _upgradeProfile(self, serialized: str, profile_id: str) -> List[Tuple[str, str]]: parser = configparser.ConfigParser(interpolation = None) parser.read_string(serialized) @@ -61,48 +68,67 @@ class CuraProfileReader(ProfileReader): return [] version = int(parser["general"]["version"]) + setting_version = int(parser["metadata"].get("setting_version", "0")) if InstanceContainer.Version != version: name = parser["general"]["name"] - return self._upgradeProfileVersion(serialized, name, version) + return self._upgradeProfileVersion(serialized, name, version, setting_version) else: return [(serialized, profile_id)] ## Load a profile from a serialized string. # - # \param serialized \type{str} The profile data to read. - # \param profile_id \type{str} The name of the profile. - # \return \type{InstanceContainer|None} - def _loadProfile(self, serialized, profile_id): + # \param serialized The profile data to read. + # \param profile_id The name of the profile. + # \return The profile that was stored in the string. + def _loadProfile(self, serialized: str, profile_id: str) -> Optional[InstanceContainer]: # Create an empty profile. profile = InstanceContainer(profile_id) profile.setMetaDataEntry("type", "quality_changes") try: - profile.deserialize(serialized) + profile.deserialize(serialized, file_name = profile_id) except ContainerFormatError as e: Logger.log("e", "Error in the format of a container: %s", str(e)) return None except Exception as e: Logger.log("e", "Error while trying to parse profile: %s", str(e)) return None + + global_stack = CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return None + + active_quality_definition = ContainerTree.getInstance().machines[global_stack.definition.getId()].quality_definition + if profile.getMetaDataEntry("definition") != active_quality_definition: + profile.setMetaDataEntry("definition", active_quality_definition) return profile ## Upgrade a serialized profile to the current profile format. # - # \param serialized \type{str} The profile data to convert. - # \param profile_id \type{str} The name of the profile. - # \param source_version \type{int} The profile version of 'serialized'. - # \return \type{List[Tuple[str,str]]} List of serialized profile strings and matching profile names. - def _upgradeProfileVersion(self, serialized, profile_id, source_version): - converter_plugins = PluginRegistry.getInstance().getAllMetaData(filter={"version_upgrade": {} }, active_only=True) + # \param serialized The profile data to convert. + # \param profile_id The name of the profile. + # \param source_version The profile version of 'serialized'. + # \return List of serialized profile strings and matching profile names. + def _upgradeProfileVersion(self, serialized: str, profile_id: str, main_version: int, setting_version: int) -> List[Tuple[str, str]]: + source_version = main_version * 1000000 + setting_version - source_format = ("profile", source_version) - profile_convert_funcs = [plugin["version_upgrade"][source_format][2] for plugin in converter_plugins - if source_format in plugin["version_upgrade"] and plugin["version_upgrade"][source_format][1] == InstanceContainer.Version] - - if not profile_convert_funcs: + from UM.VersionUpgradeManager import VersionUpgradeManager + results = VersionUpgradeManager.getInstance().updateFilesData("quality_changes", source_version, [serialized], [profile_id]) + if results is None: return [] - filenames, outputs = profile_convert_funcs[0](serialized, profile_id) - if filenames is None and outputs is None: + serialized = results.files_data[0] + + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + if "general" not in parser: + Logger.log("w", "Missing required section 'general'.") return [] - return list(zip(outputs, filenames)) + + new_source_version = results.version + if int(new_source_version / 1000000) != InstanceContainer.Version or new_source_version % 1000000 != CuraApplication.SettingVersion: + Logger.log("e", "Failed to upgrade profile [%s]", profile_id) + + if int(parser["general"]["version"]) != InstanceContainer.Version: + Logger.log("e", "Failed to upgrade profile [%s]", profile_id) + return [] + return [(serialized, profile_id)] diff --git a/plugins/CuraProfileReader/plugin.json b/plugins/CuraProfileReader/plugin.json index 169fb43360..e1309b2d46 100644 --- a/plugins/CuraProfileReader/plugin.json +++ b/plugins/CuraProfileReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for importing Cura profiles.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/CuraProfileWriter/plugin.json b/plugins/CuraProfileWriter/plugin.json index 9627c754d7..180376f266 100644 --- a/plugins/CuraProfileWriter/plugin.json +++ b/plugins/CuraProfileWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for exporting Cura profiles.", - "api": "6.0", + "api": "7.0", "i18n-catalog":"cura" } diff --git a/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py b/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py index ad10a4f075..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 for new version: {version}".format(current_version)) + Logger.log("i", "Showing firmware update message for new version: {version}".format(version = current_version)) message = FirmwareUpdateCheckerMessage(machine_id, self._machine_name, self._lookups.getRedirectUserUrl()) message.actionTriggered.connect(self._callback) @@ -113,7 +120,7 @@ class FirmwareUpdateCheckerJob(Job): Logger.log("i", "No machine with name {0} in list of firmware to check.".format(self._machine_name)) except Exception as e: - Logger.log("w", "Failed to check for new version: %s", e) + Logger.logException("w", "Failed to check for new version: %s", e) if not self.silent: Message(i18n_catalog.i18nc("@info", "Could not access update information.")).show() return diff --git a/plugins/FirmwareUpdateChecker/plugin.json b/plugins/FirmwareUpdateChecker/plugin.json index 6c55d77fd8..34e26fb146 100644 --- a/plugins/FirmwareUpdateChecker/plugin.json +++ b/plugins/FirmwareUpdateChecker/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Checks for firmware updates.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/FirmwareUpdater/plugin.json b/plugins/FirmwareUpdater/plugin.json index c1034e5e42..2546263064 100644 --- a/plugins/FirmwareUpdater/plugin.json +++ b/plugins/FirmwareUpdater/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides a machine actions for updating firmware.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeGzReader/GCodeGzReader.py b/plugins/GCodeGzReader/GCodeGzReader.py index d075e4e3b0..a528b494e9 100644 --- a/plugins/GCodeGzReader/GCodeGzReader.py +++ b/plugins/GCodeGzReader/GCodeGzReader.py @@ -27,6 +27,6 @@ class GCodeGzReader(MeshReader): file_data = file.read() uncompressed_gcode = gzip.decompress(file_data).decode("utf-8") PluginRegistry.getInstance().getPluginObject("GCodeReader").preReadFromStream(uncompressed_gcode) - result = PluginRegistry.getInstance().getPluginObject("GCodeReader").readFromStream(uncompressed_gcode) + result = PluginRegistry.getInstance().getPluginObject("GCodeReader").readFromStream(uncompressed_gcode, file_name) return result diff --git a/plugins/GCodeGzReader/plugin.json b/plugins/GCodeGzReader/plugin.json index d4f281682f..b3d52b1627 100644 --- a/plugins/GCodeGzReader/plugin.json +++ b/plugins/GCodeGzReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Reads g-code from a compressed archive.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeGzWriter/plugin.json b/plugins/GCodeGzWriter/plugin.json index b0e6f8d605..de59d1eda8 100644 --- a/plugins/GCodeGzWriter/plugin.json +++ b/plugins/GCodeGzWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Writes g-code to a compressed archive.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeProfileReader/plugin.json b/plugins/GCodeProfileReader/plugin.json index af1c2d1827..162c31ce35 100644 --- a/plugins/GCodeProfileReader/plugin.json +++ b/plugins/GCodeProfileReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for importing profiles from g-code files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeReader/FlavorParser.py b/plugins/GCodeReader/FlavorParser.py index 12bed210d2..d05338ae4d 100644 --- a/plugins/GCodeReader/FlavorParser.py +++ b/plugins/GCodeReader/FlavorParser.py @@ -3,7 +3,7 @@ import math import re -from typing import Dict, List, NamedTuple, Optional, Union +from typing import Dict, List, NamedTuple, Optional, Union, Set import numpy @@ -38,6 +38,8 @@ class FlavorParser: 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 @@ -66,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: @@ -292,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 @@ -418,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() @@ -453,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) @@ -467,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 settings is not None and 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/GCodeReader/plugin.json b/plugins/GCodeReader/plugin.json index bbc94fa917..e34fefbdff 100644 --- a/plugins/GCodeReader/plugin.json +++ b/plugins/GCodeReader/plugin.json @@ -3,6 +3,6 @@ "author": "Victor Larchenko, Ultimaker", "version": "1.0.1", "description": "Allows loading and displaying G-code files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 3e5bf59e73..792b2aff10 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -1,4 +1,4 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import re # For escaping characters in the settings. @@ -9,8 +9,7 @@ from UM.Mesh.MeshWriter import MeshWriter from UM.Logger import Logger from UM.Application import Application from UM.Settings.InstanceContainer import InstanceContainer - -from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch +from cura.Machines.ContainerTree import ContainerTree from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -117,17 +116,24 @@ class GCodeWriter(MeshWriter): # \return A serialised string of the settings. def _serialiseSettings(self, stack): container_registry = self._application.getContainerRegistry() - quality_manager = self._application.getQualityManager() prefix = self._setting_keyword + str(GCodeWriter.version) + " " # The prefix to put before each line. prefix_length = len(prefix) quality_type = stack.quality.getMetaDataEntry("quality_type") container_with_profile = stack.qualityChanges + machine_definition_id_for_quality = ContainerTree.getInstance().machines[stack.definition.getId()].quality_definition if container_with_profile.getId() == "empty_quality_changes": # If the global quality changes is empty, create a new one quality_name = container_registry.uniqueName(stack.quality.getName()) - container_with_profile = quality_manager._createQualityChanges(quality_type, quality_name, stack, None) + quality_id = container_registry.uniqueName((stack.definition.getId() + "_" + quality_name).lower().replace(" ", "_")) + container_with_profile = InstanceContainer(quality_id) + container_with_profile.setName(quality_name) + container_with_profile.setMetaDataEntry("type", "quality_changes") + container_with_profile.setMetaDataEntry("quality_type", quality_type) + if stack.getMetaDataEntry("position") is not None: # For extruder stacks, the quality changes should include an intent category. + container_with_profile.setMetaDataEntry("intent_category", stack.intent.getMetaDataEntry("intent_category", "default")) + container_with_profile.setDefinition(machine_definition_id_for_quality) flat_global_container = self._createFlattenedContainerInstance(stack.userChanges, container_with_profile) # If the quality changes is not set, we need to set type manually @@ -139,7 +145,6 @@ class GCodeWriter(MeshWriter): flat_global_container.setMetaDataEntry("quality_type", stack.quality.getMetaDataEntry("quality_type", "normal")) # Get the machine definition ID for quality profiles - machine_definition_id_for_quality = getMachineDefinitionIDForQualitySearch(stack.definition) flat_global_container.setMetaDataEntry("definition", machine_definition_id_for_quality) serialized = flat_global_container.serialize() @@ -151,7 +156,12 @@ class GCodeWriter(MeshWriter): if extruder_quality.getId() == "empty_quality_changes": # Same story, if quality changes is empty, create a new one quality_name = container_registry.uniqueName(stack.quality.getName()) - extruder_quality = quality_manager._createQualityChanges(quality_type, quality_name, stack, None) + quality_id = container_registry.uniqueName((stack.definition.getId() + "_" + quality_name).lower().replace(" ", "_")) + extruder_quality = InstanceContainer(quality_id) + extruder_quality.setName(quality_name) + extruder_quality.setMetaDataEntry("type", "quality_changes") + extruder_quality.setMetaDataEntry("quality_type", quality_type) + extruder_quality.setDefinition(machine_definition_id_for_quality) flat_extruder_quality = self._createFlattenedContainerInstance(extruder.userChanges, extruder_quality) # If the quality changes is not set, we need to set type manually diff --git a/plugins/GCodeWriter/plugin.json b/plugins/GCodeWriter/plugin.json index f3a95ddb78..457652bf3f 100644 --- a/plugins/GCodeWriter/plugin.json +++ b/plugins/GCodeWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Writes g-code to a file.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/ImageReader/ConfigUI.qml b/plugins/ImageReader/ConfigUI.qml index 47ba10778c..0429fae4e1 100644 --- a/plugins/ImageReader/ConfigUI.qml +++ b/plugins/ImageReader/ConfigUI.qml @@ -143,6 +143,52 @@ UM.Dialog } } + UM.TooltipArea { + Layout.fillWidth:true + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","For lithophanes a simple logarithmic model for translucency is available. For height maps the pixel values correspond to heights linearly.") + Row { + width: parent.width + + Label { + text: "Color Model" + width: 150 * screenScaleFactor + anchors.verticalCenter: parent.verticalCenter + } + ComboBox { + id: color_model + objectName: "ColorModel" + model: [ catalog.i18nc("@item:inlistbox","Linear"), catalog.i18nc("@item:inlistbox","Translucency") ] + width: 180 * screenScaleFactor + onCurrentIndexChanged: { manager.onColorModelChanged(currentIndex) } + } + } + } + + UM.TooltipArea { + Layout.fillWidth:true + height: childrenRect.height + text: catalog.i18nc("@info:tooltip","The percentage of light penetrating a print with a thickness of 1 millimeter. Lowering this value increases the contrast in dark regions and decreases the contrast in light regions of the image.") + visible: color_model.currentText == catalog.i18nc("@item:inlistbox","Translucency") + Row { + width: parent.width + + Label { + text: catalog.i18nc("@action:label", "1mm Transmittance (%)") + width: 150 * screenScaleFactor + anchors.verticalCenter: parent.verticalCenter + } + TextField { + id: transmittance + objectName: "Transmittance" + focus: true + validator: RegExpValidator {regExp: /^[1-9]\d{0,2}([\,|\.]\d*)?$/} + width: 180 * screenScaleFactor + onTextChanged: { manager.onTransmittanceChanged(text) } + } + } + } + UM.TooltipArea { Layout.fillWidth:true height: childrenRect.height diff --git a/plugins/ImageReader/ImageReader.py b/plugins/ImageReader/ImageReader.py index e720ce4854..7fb13e915c 100644 --- a/plugins/ImageReader/ImageReader.py +++ b/plugins/ImageReader/ImageReader.py @@ -3,7 +3,9 @@ import numpy -from PyQt5.QtGui import QImage, qRed, qGreen, qBlue +import math + +from PyQt5.QtGui import QImage, qRed, qGreen, qBlue, qAlpha from PyQt5.QtCore import Qt from UM.Mesh.MeshReader import MeshReader @@ -46,9 +48,9 @@ class ImageReader(MeshReader): def _read(self, file_name): size = max(self._ui.getWidth(), self._ui.getDepth()) - return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher) + return self._generateSceneNode(file_name, size, self._ui.peak_height, self._ui.base_height, self._ui.smoothing, 512, self._ui.lighter_is_higher, self._ui.use_transparency_model, self._ui.transmittance_1mm) - def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher): + def _generateSceneNode(self, file_name, xz_size, peak_height, base_height, blur_iterations, max_size, lighter_is_higher, use_transparency_model, transmittance_1mm): scene_node = SceneNode() mesh = MeshBuilder() @@ -99,12 +101,14 @@ class ImageReader(MeshReader): for x in range(0, width): for y in range(0, height): qrgb = img.pixel(x, y) - avg = float(qRed(qrgb) + qGreen(qrgb) + qBlue(qrgb)) / (3 * 255) - height_data[y, x] = avg + if use_transparency_model: + height_data[y, x] = (0.299 * math.pow(qRed(qrgb) / 255.0, 2.2) + 0.587 * math.pow(qGreen(qrgb) / 255.0, 2.2) + 0.114 * math.pow(qBlue(qrgb) / 255.0, 2.2)) + else: + height_data[y, x] = (0.212655 * qRed(qrgb) + 0.715158 * qGreen(qrgb) + 0.072187 * qBlue(qrgb)) / 255 # fast computation ignoring gamma and degamma Job.yieldThread() - if not lighter_is_higher: + if lighter_is_higher == use_transparency_model: height_data = 1 - height_data for _ in range(0, blur_iterations): @@ -124,8 +128,20 @@ class ImageReader(MeshReader): Job.yieldThread() - height_data *= scale_vector.y - height_data += base_height + if use_transparency_model: + divisor = 1.0 / math.log(transmittance_1mm / 100.0) # log-base doesn't matter here. Precompute this value for faster computation of each pixel. + min_luminance = (transmittance_1mm / 100.0) ** (peak_height - base_height) + for (y, x) in numpy.ndindex(height_data.shape): + mapped_luminance = min_luminance + (1.0 - min_luminance) * height_data[y, x] + height_data[y, x] = base_height + divisor * math.log(mapped_luminance) # use same base as a couple lines above this + else: + height_data *= scale_vector.y + height_data += base_height + + if img.hasAlphaChannel(): + for x in range(0, width): + for y in range(0, height): + height_data[y, x] *= qAlpha(img.pixel(x, y)) / 255.0 heightmap_face_count = 2 * height_minus_one * width_minus_one total_face_count = heightmap_face_count + (width_minus_one * 2) * (height_minus_one * 2) + 2 diff --git a/plugins/ImageReader/ImageReaderUI.py b/plugins/ImageReader/ImageReaderUI.py index 213468a2ab..a61fabb742 100644 --- a/plugins/ImageReader/ImageReaderUI.py +++ b/plugins/ImageReader/ImageReaderUI.py @@ -34,6 +34,8 @@ class ImageReaderUI(QObject): self.peak_height = 2.5 self.smoothing = 1 self.lighter_is_higher = False; + self.use_transparency_model = True; + self.transmittance_1mm = 50.0; # based on pearl PLA self._ui_lock = threading.Lock() self._cancelled = False @@ -75,6 +77,7 @@ class ImageReaderUI(QObject): self._ui_view.findChild(QObject, "Base_Height").setProperty("text", str(self.base_height)) self._ui_view.findChild(QObject, "Peak_Height").setProperty("text", str(self.peak_height)) + self._ui_view.findChild(QObject, "Transmittance").setProperty("text", str(self.transmittance_1mm)) self._ui_view.findChild(QObject, "Smoothing").setProperty("value", self.smoothing) def _createConfigUI(self): @@ -144,3 +147,11 @@ class ImageReaderUI(QObject): @pyqtSlot(int) def onImageColorInvertChanged(self, value): self.lighter_is_higher = (value == 1) + + @pyqtSlot(int) + def onColorModelChanged(self, value): + self.use_transparency_model = (value == 0) + + @pyqtSlot(int) + def onTransmittanceChanged(self, value): + self.transmittance_1mm = value diff --git a/plugins/ImageReader/plugin.json b/plugins/ImageReader/plugin.json index d966537d99..a5f03a540d 100644 --- a/plugins/ImageReader/plugin.json +++ b/plugins/ImageReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Enables ability to generate printable geometry from 2D image files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 013bab6f11..87b26eb4ec 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -157,7 +157,7 @@ class LegacyProfileReader(ProfileReader): data = stream.getvalue() profile = InstanceContainer(profile_id) - profile.deserialize(data) # Also performs the version upgrade. + profile.deserialize(data, file_name) # Also performs the version upgrade. profile.setDirty(True) #We need to return one extruder stack and one global stack. diff --git a/plugins/LegacyProfileReader/plugin.json b/plugins/LegacyProfileReader/plugin.json index 2f5264ad37..f4f18becbf 100644 --- a/plugins/LegacyProfileReader/plugin.json +++ b/plugins/LegacyProfileReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for importing profiles from legacy Cura versions.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py index 480a61f301..cd0f681828 100644 --- a/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py +++ b/plugins/LegacyProfileReader/tests/TestLegacyProfileReader.py @@ -5,6 +5,8 @@ import configparser # An input for some functions we're testing. import os.path # To find the integration test .ini files. import pytest # To register tests with. import unittest.mock # To mock the application, plug-in and container registry out. +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import UM.Application # To mock the application out. import UM.PluginRegistry # To mock the plug-in registry out. @@ -12,11 +14,14 @@ import UM.Settings.ContainerRegistry # To mock the container registry out. import UM.Settings.InstanceContainer # To intercept the serialised data from the read() function. import LegacyProfileReader as LegacyProfileReaderModule # To get the directory of the module. -from LegacyProfileReader import LegacyProfileReader # The module we're testing. + @pytest.fixture def legacy_profile_reader(): - return LegacyProfileReader() + try: + return LegacyProfileReaderModule.LegacyProfileReader() + except TypeError: + return LegacyProfileReaderModule.LegacyProfileReader.LegacyProfileReader() test_prepareDefaultsData = [ { @@ -157,7 +162,7 @@ def test_read(legacy_profile_reader, file_name): plugin_registry.getPluginPath = unittest.mock.MagicMock(return_value = os.path.dirname(LegacyProfileReaderModule.__file__)) # Mock out the resulting InstanceContainer so that we can intercept the data before it's passed through the version upgrader. - def deserialize(self, data): # Intercepts the serialised data that we'd perform the version upgrade from when deserializing. + def deserialize(self, data, filename): # Intercepts the serialised data that we'd perform the version upgrade from when deserializing. global intercepted_data intercepted_data = data @@ -187,4 +192,4 @@ def test_read(legacy_profile_reader, file_name): assert parser["metadata"]["type"] == "quality_changes" assert parser["metadata"]["quality_type"] == "normal" assert parser["metadata"]["position"] == "0" - assert parser["metadata"]["setting_version"] == "5" # Yes, before we upgraded. \ No newline at end of file + assert parser["metadata"]["setting_version"] == "5" # Yes, before we upgraded. diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.py b/plugins/MachineSettingsAction/MachineSettingsAction.py index cddc4e5fe8..28535024a7 100755 --- a/plugins/MachineSettingsAction/MachineSettingsAction.py +++ b/plugins/MachineSettingsAction/MachineSettingsAction.py @@ -9,8 +9,11 @@ import UM.i18n from UM.FlameProfiler import pyqtSlot from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.DefinitionContainer import DefinitionContainer +from UM.Util import parseBool +import cura.CuraApplication # Imported like this to prevent circular dependencies. from cura.MachineAction import MachineAction +from cura.Machines.ContainerTree import ContainerTree # To re-build the machine node when hasMaterials changes. from cura.Settings.CuraStackBuilder import CuraStackBuilder from cura.Settings.cura_empty_instance_containers import isEmptyContainer @@ -40,6 +43,9 @@ class MachineSettingsAction(MachineAction): self._backend = self._application.getBackend() self.onFinished.connect(self._onFinished) + # If the g-code flavour changes between UltiGCode and another flavour, we need to update the container tree. + self._application.globalContainerStackChanged.connect(self._updateHasMaterialsInContainerTree) + # Which container index in a stack to store machine setting changes. @pyqtProperty(int, constant = True) def storeContainerIndex(self) -> int: @@ -50,6 +56,18 @@ class MachineSettingsAction(MachineAction): if isinstance(container, DefinitionContainer) and container.getMetaDataEntry("type") == "machine": self._application.getMachineActionManager().addSupportedAction(container.getId(), self.getKey()) + ## Triggered when the global container stack changes or when the g-code + # flavour setting is changed. + def _updateHasMaterialsInContainerTree(self) -> None: + global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() + if global_stack is None: + return + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + + if machine_node.has_materials != parseBool(global_stack.getMetaDataEntry("has_materials")): # May have changed due to the g-code flavour. + machine_node.has_materials = parseBool(global_stack.getMetaDataEntry("has_materials")) + machine_node._loadAll() + def _reset(self): global_stack = self._application.getMachineManager().activeMachine if not global_stack: @@ -92,16 +110,13 @@ class MachineSettingsAction(MachineAction): return definition = global_stack.getDefinition() - if definition.getProperty("machine_gcode_flavor", "value") != "UltiGCode" or definition.getMetaDataEntry("has_materials", False): + 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(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: @@ -110,11 +125,15 @@ class MachineSettingsAction(MachineAction): if "has_materials" in global_stack.getMetaData(): global_stack.removeMetaDataEntry("has_materials") + self._updateHasMaterialsInContainerTree() + # set materials - for position in extruder_positions: - if has_materials: - material_node = material_manager.getDefaultMaterial(global_stack, position, None) - machine_manager.setMaterial(position, material_node) + machine_node = ContainerTree.getInstance().machines[global_stack.definition.getId()] + for position, extruder in enumerate(global_stack.extruderList): + #Find out what material we need to default to. + approximate_diameter = round(extruder.getProperty("material_diameter", "value")) + material_node = machine_node.variants[extruder.variant.getName()].preferredMaterial(approximate_diameter) + machine_manager.setMaterial(str(position), material_node) self._application.globalContainerStackChanged.emit() diff --git a/plugins/MachineSettingsAction/MachineSettingsAction.qml b/plugins/MachineSettingsAction/MachineSettingsAction.qml index a1540c22ab..56b4d3e3b6 100644 --- a/plugins/MachineSettingsAction/MachineSettingsAction.qml +++ b/plugins/MachineSettingsAction/MachineSettingsAction.qml @@ -87,9 +87,25 @@ Cura.MachineAction } } } + + Label + { + id: machineNameLabel + anchors.top: parent.top + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: Cura.MachineManager.activeMachine.name + horizontalAlignment: Text.AlignHCenter + font: UM.Theme.getFont("large_bold") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + } + UM.TabRow { id: tabBar + anchors.top: machineNameLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width Repeater { diff --git a/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml b/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml index 5ba331de2b..2ceabf87d0 100644 --- a/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml +++ b/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml @@ -68,7 +68,7 @@ Item Cura.NumericTextFieldWithUnit // "Nozzle size" { id: extruderNozzleSizeField - visible: !Cura.MachineManager.hasVariants + visible: !Cura.MachineManager.activeMachine.hasVariants containerStackId: base.extruderStackId settingKey: "machine_nozzle_size" settingStoreIndex: propertyStoreIndex diff --git a/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml b/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml index 1535301616..3780d6447b 100644 --- a/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml +++ b/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml @@ -3,6 +3,7 @@ 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 @@ -16,40 +17,37 @@ Item id: base UM.I18nCatalog { id: catalog; name: "cura" } - anchors.left: parent.left - anchors.right: parent.right - anchors.top: parent.top - - property int labelWidth: 120 * 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 machineStackId: Cura.MachineManager.activeMachineId + property int labelWidth: (columnWidth * 2 / 3 - UM.Theme.getSize("default_margin").width * 2) | 0 + property int controlWidth: (columnWidth / 3) | 0 + property var labelFont: UM.Theme.getFont("default") + + property string machineStackId: Cura.MachineManager.activeMachine.id property var forceUpdateFunction: manager.forceUpdate - Item + RowLayout { 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 - + anchors + { + top: parent.top + left: parent.left + right: parent.right + margins: UM.Theme.getSize("default_margin").width + } + spacing: UM.Theme.getSize("default_margin").width + // ======================================= // Left-side column for "Printer Settings" // ======================================= Column { - anchors.top: parent.top - anchors.left: parent.left - width: base.columnWidth + Layout.fillWidth: true + Layout.alignment: Qt.AlignTop spacing: base.columnSpacing @@ -59,6 +57,8 @@ Item font: UM.Theme.getFont("medium_bold") color: UM.Theme.getColor("text") renderType: Text.NativeRendering + width: parent.width + elide: Text.ElideRight } Cura.NumericTextFieldWithUnit // "X (Width)" @@ -140,6 +140,18 @@ Item 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 @@ -163,9 +175,8 @@ Item // ======================================= Column { - anchors.top: parent.top - anchors.right: parent.right - width: base.columnWidth + Layout.fillWidth: true + Layout.alignment: Qt.AlignTop spacing: base.columnSpacing @@ -175,6 +186,8 @@ Item font: UM.Theme.getFont("medium_bold") color: UM.Theme.getColor("text") renderType: Text.NativeRendering + width: parent.width + elide: Text.ElideRight } Cura.PrintHeadMinMaxTextField // "X min" @@ -192,6 +205,7 @@ Item axisName: "x" axisMinOrMax: "min" allowNegativeValue: true + allowPositiveValue: false forceUpdateOnChangeFunction: forceUpdateFunction } @@ -211,6 +225,7 @@ Item axisName: "y" axisMinOrMax: "min" allowNegativeValue: true + allowPositiveValue: false forceUpdateOnChangeFunction: forceUpdateFunction } @@ -229,7 +244,8 @@ Item axisName: "x" axisMinOrMax: "max" - allowNegativeValue: true + allowNegativeValue: false + allowPositiveValue: true forceUpdateOnChangeFunction: forceUpdateFunction } @@ -250,7 +266,8 @@ Item axisName: "y" axisMinOrMax: "max" - allowNegativeValue: true + allowNegativeValue: false + allowPositiveValue: true forceUpdateOnChangeFunction: forceUpdateFunction } @@ -314,25 +331,38 @@ Item onGlobalContainerChanged: extruderCountModel.update() } } + + Cura.SimpleCheckBox // "Shared Heater" + { + id: sharedHeaterCheckBox + containerStackId: machineStackId + settingKey: "machine_extruders_share_heater" + settingStoreIndex: propertyStoreIndex + labelText: catalog.i18nc("@label", "Shared Heater") + labelFont: base.labelFont + labelWidth: base.labelWidth + forceUpdateOnChangeFunction: forceUpdateFunction + } } } - Item // Start and End G-code + RowLayout // 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 + spacing: UM.Theme.getSize("default_margin").width + anchors + { + top: upperBlock.bottom + bottom: parent.bottom + left: parent.left + right: parent.right + margins: UM.Theme.getSize("default_margin").width + } Cura.GcodeTextArea // "Start G-code" { - 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 + Layout.fillWidth: true + Layout.fillHeight: true labelText: catalog.i18nc("@title:label", "Start G-code") containerStackId: machineStackId @@ -342,11 +372,8 @@ Item 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 + Layout.fillWidth: true + Layout.fillHeight: true labelText: catalog.i18nc("@title:label", "End G-code") containerStackId: machineStackId diff --git a/plugins/MachineSettingsAction/plugin.json b/plugins/MachineSettingsAction/plugin.json index d734c1adf5..cc1e5fb01e 100644 --- a/plugins/MachineSettingsAction/plugin.json +++ b/plugins/MachineSettingsAction/plugin.json @@ -3,6 +3,6 @@ "author": "fieldOfView", "version": "1.0.1", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/ModelChecker/ModelChecker.py b/plugins/ModelChecker/ModelChecker.py index 0619c95d67..0afed28f19 100644 --- a/plugins/ModelChecker/ModelChecker.py +++ b/plugins/ModelChecker/ModelChecker.py @@ -76,7 +76,9 @@ class ModelChecker(QObject, Extension): # This function can be triggered in the middle of a machine change, so do not proceed if the machine change # has not done yet. - if str(node_extruder_position) not in global_container_stack.extruders: + try: + extruder = global_container_stack.extruderList[int(node_extruder_position)] + except IndexError: Application.getInstance().callLater(lambda: self.onChanged.emit()) return False @@ -131,9 +133,9 @@ class ModelChecker(QObject, Extension): material_shrinkage = {} # Get all shrinkage values of materials used - for extruder_position, extruder in global_container_stack.extruders.items(): + for extruder_position, extruder in enumerate(global_container_stack.extruderList): shrinkage = extruder.material.getProperty("material_shrinkage_percentage", "value") if shrinkage is None: shrinkage = 0 - material_shrinkage[extruder_position] = shrinkage + material_shrinkage[str(extruder_position)] = shrinkage return material_shrinkage diff --git a/plugins/ModelChecker/plugin.json b/plugins/ModelChecker/plugin.json index 59be5bbf0a..6437fb0802 100644 --- a/plugins/ModelChecker/plugin.json +++ b/plugins/ModelChecker/plugin.json @@ -2,7 +2,7 @@ "name": "Model Checker", "author": "Ultimaker B.V.", "version": "1.0.1", - "api": "6.0", + "api": "7.0", "description": "Checks models and print configuration for possible printing issues and give suggestions.", "i18n-catalog": "cura" } diff --git a/plugins/MonitorStage/MonitorMain.qml b/plugins/MonitorStage/MonitorMain.qml index 9e719ddb43..a70c10ff0f 100644 --- a/plugins/MonitorStage/MonitorMain.qml +++ b/plugins/MonitorStage/MonitorMain.qml @@ -25,7 +25,7 @@ Rectangle { // Readability: var connectedTypes = [2, 3]; - var types = Cura.MachineManager.activeMachineConfiguredConnectionTypes + var types = Cura.MachineManager.activeMachine.configuredConnectionTypes // Check if configured connection types includes either 2 or 3 (LAN or cloud) for (var i = 0; i < types.length; i++) @@ -97,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 @@ -166,4 +166,4 @@ Rectangle } } } -} \ No newline at end of file +} diff --git a/plugins/MonitorStage/__init__.py b/plugins/MonitorStage/__init__.py index 0468e6319b..a755268c79 100644 --- a/plugins/MonitorStage/__init__.py +++ b/plugins/MonitorStage/__init__.py @@ -12,7 +12,7 @@ def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Monitor"), - "weight": 2 + "weight": 30 } } diff --git a/plugins/MonitorStage/plugin.json b/plugins/MonitorStage/plugin.json index 95e4b86f36..2274351527 100644 --- a/plugins/MonitorStage/plugin.json +++ b/plugins/MonitorStage/plugin.json @@ -1,8 +1,8 @@ -{ - "name": "Monitor Stage", - "author": "Ultimaker B.V.", - "version": "1.0.1", - "description": "Provides a monitor stage in Cura.", - "api": "6.0", - "i18n-catalog": "cura" +{ + "name": "Monitor Stage", + "author": "Ultimaker B.V.", + "version": "1.0.1", + "description": "Provides a monitor stage in Cura.", + "api": "7.0", + "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/PerObjectItem.qml b/plugins/PerObjectSettingsTool/PerObjectItem.qml index 559ad2bf81..7c6ece12db 100644 --- a/plugins/PerObjectSettingsTool/PerObjectItem.qml +++ b/plugins/PerObjectSettingsTool/PerObjectItem.qml @@ -29,6 +29,17 @@ UM.TooltipArea UM.ActiveTool.forceUpdate(); } } + + // When the user removes settings from the list addedSettingsModel, we need to recheck if the + // setting is visible or not to show a mark in the CheckBox. + Connections + { + target: addedSettingsModel + onVisibleCountChanged: + { + check.checked = addedSettingsModel.getVisible(model.key) + } + } } diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py index 3e1df1c7b8..61d0dbc0f0 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingVisibilityHandler.py @@ -1,7 +1,7 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import QObject, pyqtProperty, pyqtSignal +from PyQt5.QtCore import pyqtProperty from UM.FlameProfiler import pyqtSlot from UM.Application import Application @@ -13,6 +13,7 @@ import UM.Settings.Models.SettingVisibilityHandler from cura.Settings.ExtruderManager import ExtruderManager #To get global-inherits-stack setting values from different extruders. from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + ## The per object setting visibility handler ensures that only setting # definitions that have a matching instance Container are returned as visible. class PerObjectSettingVisibilityHandler(UM.Settings.Models.SettingVisibilityHandler.SettingVisibilityHandler): diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 035d2e5299..bb342d5045 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -4,22 +4,68 @@ import QtQuick 2.2 import QtQuick.Controls 1.2 import QtQuick.Controls.Styles 1.2 -import QtQuick.Window 2.2 import UM 1.2 as UM import Cura 1.0 as Cura import ".." -Item { - id: base; - UM.I18nCatalog { id: catalog; name: "cura"; } - - width: childrenRect.width; - height: childrenRect.height; - property var all_categories_except_support: [ "machine_settings", "resolution", "shell", "infill", "material", "speed", +Item +{ + id: base + width: childrenRect.width + height: childrenRect.height + property var allCategoriesExceptSupport: [ "machine_settings", "resolution", "shell", "infill", "material", "speed", "travel", "cooling", "platform_adhesion", "dual", "meshfix", "blackmagic", "experimental"] + readonly property string normalMeshType: "" + readonly property string supportMeshType: "support_mesh" + readonly property string cuttingMeshType: "cutting_mesh" + readonly property string infillMeshType: "infill_mesh" + readonly property string antiOverhangMeshType: "anti_overhang_mesh" + + property var currentMeshType: UM.ActiveTool.properties.getValue("MeshType") + + // Update the view every time the currentMeshType changes + onCurrentMeshTypeChanged: + { + var type = currentMeshType + + // set checked state of mesh type buttons + normalButton.checked = type === normalMeshType + supportMeshButton.checked = type === supportMeshType + overhangMeshButton.checked = type === infillMeshType || type === cuttingMeshType + antiOverhangMeshButton.checked = type === antiOverhangMeshType + + // update active type label + for (var button in meshTypeButtons.children) + { + if (meshTypeButtons.children[button].checked){ + meshTypeLabel.text = catalog.i18nc("@label", "Mesh Type") + ": " + meshTypeButtons.children[button].text + break + } + } + } + + function setOverhangsMeshType() + { + if (infillOnlyCheckbox.checked) + { + setMeshType(infillMeshType) + } + else + { + setMeshType(cuttingMeshType) + } + } + + function setMeshType(type) + { + UM.ActiveTool.setProperty("MeshType", type) + } + + UM.I18nCatalog { id: catalog; name: "uranium"} + Column { id: items @@ -28,123 +74,97 @@ Item { spacing: UM.Theme.getSize("default_margin").height - Row + Row // Mesh type buttons { + id: meshTypeButtons spacing: UM.Theme.getSize("default_margin").width - Label + Button { - text: catalog.i18nc("@label","Mesh Type") - font: UM.Theme.getFont("default") - color: UM.Theme.getColor("text") - height: UM.Theme.getSize("setting").height - verticalAlignment: Text.AlignVCenter + id: normalButton + text: catalog.i18nc("@label", "Normal model") + iconSource: UM.Theme.getIcon("pos_normal"); + property bool needBorder: true + checkable: true + onClicked: setMeshType(normalMeshType); + style: UM.Theme.styles.tool_button; + z: 4 } - UM.SettingPropertyProvider + Button { - id: meshTypePropertyProvider - containerStack: Cura.MachineManager.activeMachine - watchedProperties: [ "enabled" ] + id: supportMeshButton + text: catalog.i18nc("@label", "Print as support") + iconSource: UM.Theme.getIcon("pos_print_as_support"); + property bool needBorder: true + checkable:true + onClicked: setMeshType(supportMeshType) + style: UM.Theme.styles.tool_button; + z: 3 } - ComboBox + Button { - id: meshTypeSelection - style: UM.Theme.styles.combobox - onActivated: { - UM.ActiveTool.setProperty("MeshType", model.get(index).type) - } - model: ListModel - { - id: meshTypeModel - Component.onCompleted: meshTypeSelection.populateModel() - } - - function populateModel() - { - meshTypeModel.append({ - type: "", - text: catalog.i18nc("@label", "Normal model") - }); - meshTypePropertyProvider.key = "support_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "support_mesh", - text: catalog.i18nc("@label", "Print as support") - }); - } - meshTypePropertyProvider.key = "anti_overhang_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "anti_overhang_mesh", - text: catalog.i18nc("@label", "Don't support overlap with other models") - }); - } - meshTypePropertyProvider.key = "cutting_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "cutting_mesh", - text: catalog.i18nc("@label", "Modify settings for overlap with other models") - }); - } - meshTypePropertyProvider.key = "infill_mesh"; - if(meshTypePropertyProvider.properties.enabled == "True") - { - meshTypeModel.append({ - type: "infill_mesh", - text: catalog.i18nc("@label", "Modify settings for infill of other models") - }); - } - - meshTypeSelection.updateCurrentIndex(); - } - - function updateCurrentIndex() - { - var mesh_type = UM.ActiveTool.properties.getValue("MeshType"); - meshTypeSelection.currentIndex = -1; - for(var index=0; index < meshTypeSelection.model.count; index++) - { - if(meshTypeSelection.model.get(index).type == mesh_type) - { - meshTypeSelection.currentIndex = index; - return; - } - } - meshTypeSelection.currentIndex = 0; - } + id: overhangMeshButton + text: catalog.i18nc("@label", "Modify settings for overlaps") + iconSource: UM.Theme.getIcon("pos_modify_overlaps"); + property bool needBorder: true + checkable:true + onClicked: setMeshType(infillMeshType) + style: UM.Theme.styles.tool_button; + z: 2 } - Connections + Button { - target: Cura.MachineManager - onGlobalContainerChanged: - { - meshTypeSelection.model.clear(); - meshTypeSelection.populateModel(); - } - } - - Connections - { - target: UM.Selection - onSelectionChanged: meshTypeSelection.updateCurrentIndex() + id: antiOverhangMeshButton + text: catalog.i18nc("@label", "Don't support overlaps") + iconSource: UM.Theme.getIcon("pos_modify_dont_support_overlap"); + property bool needBorder: true + checkable: true + onClicked: setMeshType(antiOverhangMeshType) + style: UM.Theme.styles.tool_button; + z: 1 } } - Column + Label + { + id: meshTypeLabel + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + height: UM.Theme.getSize("setting").height + verticalAlignment: Text.AlignVCenter + } + + CheckBox + { + id: infillOnlyCheckbox + + text: catalog.i18nc("@action:checkbox", "Infill only"); + + style: UM.Theme.styles.checkbox; + + visible: currentMeshType === infillMeshType || currentMeshType === cuttingMeshType + onClicked: setOverhangsMeshType() + + Binding + { + target: infillOnlyCheckbox + property: "checked" + value: currentMeshType === infillMeshType + } + } + + Column // Settings Dialog { // This is to ensure that the panel is first increasing in size up to 200 and then shows a scrollbar. // It kinda looks ugly otherwise (big panel, no content on it) id: currentSettings property int maximumHeight: 200 * screenScaleFactor height: Math.min(contents.count * (UM.Theme.getSize("section").height + UM.Theme.getSize("default_lining").height), maximumHeight) - visible: meshTypeSelection.model.get(meshTypeSelection.currentIndex).type != "anti_overhang_mesh" + visible: currentMeshType != "anti_overhang_mesh" ScrollView { @@ -159,26 +179,26 @@ Item { model: UM.SettingDefinitionsModel { - id: addedSettingsModel; + id: addedSettingsModel containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" expanded: [ "*" ] filter: { if (printSequencePropertyProvider.properties.value == "one_at_a_time") { - return {"settable_per_meshgroup": true}; + return {"settable_per_meshgroup": true} } - return {"settable_per_mesh": true}; + return {"settable_per_mesh": true} } exclude: { - var excluded_settings = [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]; + var excluded_settings = [ "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] - if(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type == "support_mesh") + if (currentMeshType == "support_mesh") { - excluded_settings = excluded_settings.concat(base.all_categories_except_support); + excluded_settings = excluded_settings.concat(base.allCategoriesExceptSupport) } - return excluded_settings; + return excluded_settings } visibilityHandler: Cura.PerObjectSettingVisibilityHandler @@ -188,8 +208,9 @@ Item { // For some reason the model object is updated after removing him from the memory and // it happens only on Windows. For this reason, set the destroyed value manually. - Component.onDestruction: { - setDestroyed(true); + Component.onDestruction: + { + setDestroyed(true) } } @@ -213,7 +234,8 @@ Item { //causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely. asynchronous: model.type != "enum" && model.type != "extruder" - onLoaded: { + onLoaded: + { settingLoader.item.showRevertButton = false settingLoader.item.showInheritButton = false settingLoader.item.showLinkedSettingIcon = false @@ -299,7 +321,7 @@ Item { target: inheritStackProvider onPropertiesChanged: { - provider.forcePropertiesChanged(); + provider.forcePropertiesChanged() } } @@ -312,22 +334,22 @@ Item { // so here we connect to the signal and update the those values. if (typeof UM.ActiveTool.properties.getValue("SelectedObjectId") !== "undefined") { - const selectedObjectId = UM.ActiveTool.properties.getValue("SelectedObjectId"); + const selectedObjectId = UM.ActiveTool.properties.getValue("SelectedObjectId") if (addedSettingsModel.visibilityHandler.selectedObjectId != selectedObjectId) { - addedSettingsModel.visibilityHandler.selectedObjectId = selectedObjectId; + addedSettingsModel.visibilityHandler.selectedObjectId = selectedObjectId } } if (typeof UM.ActiveTool.properties.getValue("ContainerID") !== "undefined") { - const containerId = UM.ActiveTool.properties.getValue("ContainerID"); + const containerId = UM.ActiveTool.properties.getValue("ContainerID") if (provider.containerStackId != containerId) { - provider.containerStackId = containerId; + provider.containerStackId = containerId } if (inheritStackProvider.containerStackId != containerId) { - inheritStackProvider.containerStackId = containerId; + inheritStackProvider.containerStackId = containerId } } } @@ -337,7 +359,7 @@ Item { } } - Button + Cura.SecondaryButton { id: customiseSettingsButton; height: UM.Theme.getSize("setting_control").height; @@ -345,33 +367,12 @@ Item { text: catalog.i18nc("@action:button", "Select settings"); - style: ButtonStyle - { - background: Rectangle - { - width: control.width; - height: control.height; - border.width: UM.Theme.getSize("default_lining").width; - border.color: control.pressed ? UM.Theme.getColor("action_button_active_border") : - control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border") - color: control.pressed ? UM.Theme.getColor("action_button_active") : - control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button") - } - label: Label - { - text: control.text; - color: UM.Theme.getColor("setting_control_text"); - font: UM.Theme.getFont("default") - anchors.centerIn: parent - } - } - onClicked: { settingPickDialog.visible = true; - if (meshTypeSelection.model.get(meshTypeSelection.currentIndex).type == "support_mesh") + if (currentMeshType == "support_mesh") { - settingPickDialog.additional_excluded_settings = base.all_categories_except_support; + settingPickDialog.additional_excluded_settings = base.allCategoriesExceptSupport; } else { @@ -379,138 +380,12 @@ Item { } } } + } - - UM.Dialog { + SettingPickDialog + { id: settingPickDialog - - title: catalog.i18nc("@title:window", "Select Settings to Customize for this model") - width: screenScaleFactor * 360 - - property var additional_excluded_settings - - onVisibilityChanged: - { - // force updating the model to sync it with addedSettingsModel - if(visible) - { - // Set skip setting, it will prevent from resetting selected mesh_type - contents.model.visibilityHandler.addSkipResetSetting(meshTypeSelection.model.get(meshTypeSelection.currentIndex).type) - listview.model.forceUpdate() - - updateFilter() - } - } - - function updateFilter() - { - var new_filter = {}; - new_filter["settable_per_mesh"] = true; - // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value` - // is set to "one_at_a_time", because the current backend architecture isn't ready for that. - - if(filterInput.text != "") - { - new_filter["i18n_label"] = "*" + filterInput.text; - } - - listview.model.filter = new_filter; - } - - TextField { - id: filterInput - - anchors { - top: parent.top - left: parent.left - right: toggleShowAll.left - rightMargin: UM.Theme.getSize("default_margin").width - } - - placeholderText: catalog.i18nc("@label:textbox", "Filter..."); - - onTextChanged: settingPickDialog.updateFilter() - } - - CheckBox - { - id: toggleShowAll - - anchors { - top: parent.top - right: parent.right - } - - text: catalog.i18nc("@label:checkbox", "Show all") - checked: listview.model.showAll - onClicked: - { - listview.model.showAll = checked; - } - } - - ScrollView - { - id: scrollView - - anchors - { - top: filterInput.bottom; - left: parent.left; - right: parent.right; - bottom: parent.bottom; - } - ListView - { - id:listview - model: UM.SettingDefinitionsModel - { - id: definitionsModel; - containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" - visibilityHandler: UM.SettingPreferenceVisibilityHandler {} - expanded: [ "*" ] - exclude: - { - var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ]; - excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings); - return excluded_settings; - } - } - delegate:Loader - { - id: loader - - width: parent.width - height: model.type != undefined ? UM.Theme.getSize("section").height : 0; - - property var definition: model - property var settingDefinitionsModel: definitionsModel - - asynchronous: true - source: - { - switch(model.type) - { - case "category": - return "PerObjectCategory.qml" - default: - return "PerObjectItem.qml" - } - } - } - Component.onCompleted: settingPickDialog.updateFilter() - } - } - - rightButtons: [ - Button { - text: catalog.i18nc("@action:button", "Close"); - onClicked: { - settingPickDialog.visible = false; - } - } - ] } UM.SettingPropertyProvider @@ -533,25 +408,25 @@ Item { storeIndex: 0 } - SystemPalette { id: palette; } + SystemPalette { id: palette } Component { - id: settingTextField; + id: settingTextField Cura.SettingTextField { } } Component { - id: settingComboBox; + id: settingComboBox Cura.SettingComboBox { } } Component { - id: settingExtruder; + id: settingExtruder Cura.SettingExtruder { } } @@ -565,22 +440,23 @@ Item { Component { - id: settingCheckBox; + id: settingCheckBox Cura.SettingCheckBox { } } Component { - id: settingCategory; + id: settingCategory Cura.SettingCategory { } } Component { - id: settingUnknown; + id: settingUnknown Cura.SettingUnknown { } } + } diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index baa700165c..b2eb925a6d 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -1,6 +1,6 @@ # Copyright (c) 2016 Ultimaker B.V. # Uranium is released under the terms of the LGPLv3 or higher. - +from UM.Logger import Logger from UM.Tool import Tool from UM.Scene.Selection import Selection from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator @@ -20,15 +20,11 @@ class PerObjectSettingsTool(Tool): self.setExposedProperties("SelectedObjectId", "ContainerID", "SelectedActiveExtruder", "MeshType") - self._advanced_mode = False self._multi_extrusion = False self._single_model_selected = False Selection.selectionChanged.connect(self.propertyChanged) - Application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferenceChanged) - self._onPreferenceChanged("cura/active_mode") - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) self._onGlobalContainerChanged() Selection.selectionChanged.connect(self._updateEnabled) @@ -70,8 +66,16 @@ class PerObjectSettingsTool(Tool): selected_object.addDecorator(SettingOverrideDecorator()) selected_object.callDecoration("setActiveExtruder", extruder_stack_id) - def setMeshType(self, mesh_type): + ## Returns True when the mesh_type was changed, False when current mesh_type == mesh_type + def setMeshType(self, mesh_type: str) -> bool: + if self.getMeshType() == mesh_type: + return False + selected_object = Selection.getSelectedObject(0) + if selected_object is None: + Logger.log("w", "Tried setting the mesh type of the selected object, but no object was selected") + return False + stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. if not stack: selected_object.addDecorator(SettingOverrideDecorator()) @@ -90,6 +94,9 @@ class PerObjectSettingsTool(Tool): new_instance.resetState() # Ensure that the state is not seen as a user state. settings.addInstance(new_instance) + self.propertyChanged.emit() + return True + def getMeshType(self): selected_object = Selection.getSelectedObject(0) stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway. @@ -103,11 +110,6 @@ class PerObjectSettingsTool(Tool): return "" - def _onPreferenceChanged(self, preference): - if preference == "cura/active_mode": - self._advanced_mode = Application.getInstance().getPreferences().getValue(preference) == 1 - self._updateEnabled() - def _onGlobalContainerChanged(self): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: @@ -140,4 +142,4 @@ class PerObjectSettingsTool(Tool): self._single_model_selected = False # Group is selected, so tool needs to be disabled else: self._single_model_selected = True - Application.getInstance().getController().toolEnabledChanged.emit(self._plugin_id, self._advanced_mode and self._single_model_selected) + Application.getInstance().getController().toolEnabledChanged.emit(self._plugin_id, self._single_model_selected) diff --git a/plugins/PerObjectSettingsTool/SettingPickDialog.qml b/plugins/PerObjectSettingsTool/SettingPickDialog.qml new file mode 100644 index 0000000000..92e22f26bc --- /dev/null +++ b/plugins/PerObjectSettingsTool/SettingPickDialog.qml @@ -0,0 +1,139 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.2 + +import UM 1.2 as UM +import Cura 1.0 as Cura +import ".." + +UM.Dialog + { + id: settingPickDialog + + title: catalog.i18nc("@title:window", "Select Settings to Customize for this model") + width: screenScaleFactor * 360 + + property var additional_excluded_settings + + onVisibilityChanged: + { + // force updating the model to sync it with addedSettingsModel + if (visible) + { + // Set skip setting, it will prevent from resetting selected mesh_type + contents.model.visibilityHandler.addSkipResetSetting(currentMeshType) + listview.model.forceUpdate() + + updateFilter() + } + } + + function updateFilter() + { + var new_filter = {} + new_filter["settable_per_mesh"] = true + // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value` + // is set to "one_at_a_time", because the current backend architecture isn't ready for that. + + if (filterInput.text != "") + { + new_filter["i18n_label"] = "*" + filterInput.text + } + + listview.model.filter = new_filter + } + + TextField { + id: filterInput + + anchors { + top: parent.top + left: parent.left + right: toggleShowAll.left + rightMargin: UM.Theme.getSize("default_margin").width + } + + placeholderText: catalog.i18nc("@label:textbox", "Filter...") + + onTextChanged: settingPickDialog.updateFilter() + } + + CheckBox + { + id: toggleShowAll + + anchors { + top: parent.top + right: parent.right + } + + text: catalog.i18nc("@label:checkbox", "Show all") + checked: listview.model.showAll + onClicked: + { + listview.model.showAll = checked + } + } + + ScrollView + { + id: scrollView + + anchors + { + top: filterInput.bottom + left: parent.left + right: parent.right + bottom: parent.bottom + } + ListView + { + id:listview + model: UM.SettingDefinitionsModel + { + id: definitionsModel + containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" + visibilityHandler: UM.SettingPreferenceVisibilityHandler {} + expanded: [ "*" ] + exclude: + { + var excluded_settings = [ "machine_settings", "command_line_settings", "support_mesh", "anti_overhang_mesh", "cutting_mesh", "infill_mesh" ] + excluded_settings = excluded_settings.concat(settingPickDialog.additional_excluded_settings) + return excluded_settings + } + } + delegate:Loader + { + id: loader + + width: parent.width + height: model.type != undefined ? UM.Theme.getSize("section").height : 0 + + property var definition: model + property var settingDefinitionsModel: definitionsModel + + asynchronous: true + source: + { + switch(model.type) + { + case "category": + return "PerObjectCategory.qml" + default: + return "PerObjectItem.qml" + } + } + } + Component.onCompleted: settingPickDialog.updateFilter() + } + } + + rightButtons: [ + Button { + text: catalog.i18nc("@action:button", "Close") + onClicked: { + settingPickDialog.visible = false + } + } + ] + } \ No newline at end of file diff --git a/plugins/PerObjectSettingsTool/plugin.json b/plugins/PerObjectSettingsTool/plugin.json index f272abf06a..b30acfd52e 100644 --- a/plugins/PerObjectSettingsTool/plugin.json +++ b/plugins/PerObjectSettingsTool/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides the Per Model Settings.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/PerObjectSettingsTool/tool_icon.svg b/plugins/PerObjectSettingsTool/tool_icon.svg index 4b15eb453f..41e49cae07 100644 --- a/plugins/PerObjectSettingsTool/tool_icon.svg +++ b/plugins/PerObjectSettingsTool/tool_icon.svg @@ -1,3 +1,22 @@ - - - + + + + per_model_settings + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/plugin.json b/plugins/PostProcessingPlugin/plugin.json index 1e73133c53..6a2b84933e 100644 --- a/plugins/PostProcessingPlugin/plugin.json +++ b/plugins/PostProcessingPlugin/plugin.json @@ -2,7 +2,7 @@ "name": "Post Processing", "author": "Ultimaker", "version": "2.2.1", - "api": "6.0", + "api": "7.0", "description": "Extension that allows for user created scripts for post processing", "catalog": "cura" } \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py index ba7b06bb1b..cdbb4a79ef 100644 --- a/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py +++ b/plugins/PostProcessingPlugin/scripts/ChangeAtZ.py @@ -367,6 +367,8 @@ class ChangeAtZ(Script): modified_gcode = "" lines = active_layer.split("\n") for line in lines: + if line.strip() == "": + continue if ";Generated with Cura_SteamEngine" in line: TWinstances += 1 modified_gcode += ";ChangeAtZ instances: %d\n" % TWinstances diff --git a/plugins/PostProcessingPlugin/scripts/ColorMix.py b/plugins/PostProcessingPlugin/scripts/ColorMix.py new file mode 100644 index 0000000000..1152ba70da --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/ColorMix.py @@ -0,0 +1,190 @@ +# ColorMix script - 2-1 extruder color mix and blending +# This script is specific for the Geeetech A10M dual extruder but should work with other Marlin printers. +# It runs with the PostProcessingPlugin which is released under the terms of the AGPLv3 or higher. +# This script is licensed under the Creative Commons - Attribution - Share Alike (CC BY-SA) terms + +#Authors of the 2-1 ColorMix plug-in / script: +# Written by John Hryb - john.hryb.4@gmail.com + +##history / change-log: +##V1.0.0 + +## Uses - +## M163 - Set Mix Factor +## M164 - Save Mix - saves to T3 as a unique mix + +import re #To perform the search and replace. +from ..Script import Script + +class ColorMix(Script): + def __init__(self): + super().__init__() + + def getSettingDataString(self): + return """{ + "name":"ColorMix 2-1", + "key":"ColorMix 2-1", + "metadata": {}, + "version": 2, + "settings": + { + "measurement_units": + { + "label": "Units of measurement", + "description": "Input value as mm or layer number.", + "type": "enum", + "options": {"mm":"mm","layer":"Layer"}, + "default_value": "layer" + }, + "start_height": + { + "label": "Start Height", + "description": "Value to start at (mm or layer)", + "type": "float", + "default_value": 0, + "minimum_value": "0" + }, + "behavior": + { + "label": "Fixed or blend", + "description": "Select Fixed (set new mixture) or Blend mode (dynamic mix)", + "type": "enum", + "options": {"fixed_value":"Fixed","blend_value":"Blend"}, + "default_value": "fixed_value" + }, + "finish_height": + { + "label": "Finish Height", + "description": "Value to stop at (mm or layer)", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "minimum_value_warning": "0.1", + "enabled": "c_behavior == 'blend_value'" + }, + "mix_start_ratio": + { + "label": "Start mix ratio", + "description": "First extruder percentage 0-100", + "type": "float", + "default_value": 100, + "minimum_value": "0", + "minimum_value_warning": "0", + "maximum_value_warning": "100" + }, + "mix_finish_ratio": + { + "label": "End mix ratio", + "description": "First extruder percentage 0-100 to finish blend", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "minimum_value_warning": "0", + "maximum_value_warning": "100", + "enabled": "c_behavior == 'blend_value'" + }, + "notes": + { + "label": "Notes", + "description": "A spot to put a note", + "type": "str", + "default_value": "" + } + } + }""" + def getValue(self, line, key, default = None): #replace default getvalue due to comment-reading feature + if not key in line or (";" in line and line.find(key) > line.find(";") and + not ";ChangeAtZ" in key and not ";LAYER:" in key): + return default + subPart = line[line.find(key) + len(key):] #allows for string lengths larger than 1 + if ";ChangeAtZ" in key: + m = re.search("^[0-4]", subPart) + elif ";LAYER:" in key: + m = re.search("^[+-]?[0-9]*", subPart) + else: + #the minus at the beginning allows for negative values, e.g. for delta printers + m = re.search("^[-]?[0-9]*\.?[0-9]*", subPart) + if m == None: + return default + try: + return float(m.group(0)) + except: + return default + + def execute(self, data): + #get user variables + firstHeight = 0.0 + secondHeight = 0.0 + firstMix = 0.0 + SecondMix = 0.0 + + firstHeight = self.getSettingValueByKey("start_height") + secondHeight = self.getSettingValueByKey("finish_height") + firstMix = self.getSettingValueByKey("mix_start_ratio") + SecondMix = self.getSettingValueByKey("mix_finish_ratio") + + #locals + layer = 0 + + #get layer height + layerHeight = .2 + for active_layer in data: + lines = active_layer.split("\n") + for line in lines: + if ";Layer height: " in line: + layerHeight = self.getValue(line, ";Layer height: ", layerHeight) + break + #get layers to use + startLayer = 0 + endLayer = 0 + if self.getSettingValueByKey("measurement_units") == "mm": + if firstHeight == 0: + startLayer = 0 + else: + startLayer = firstHeight / layerHeight + if secondHeight == 0: + endLayer = 0 + else: + endLayer = secondHeight / layerHeight + else: #layer height + startLayer = firstHeight + endLayer = secondHeight + #see if one-shot + if self.getSettingValueByKey("behavior") == "fixed_value": + endLayer = startLayer + firstExtruderIncrements = 0 + else: #blend + firstExtruderIncrements = (SecondMix - firstMix) / (endLayer - startLayer) + firstExtruderValue = 0 + index = 0 + #start scanning + for active_layer in data: + modified_gcode = "" + lineIndex = 0; + lines = active_layer.split("\n") + for line in lines: + #dont leave blanks + if line != "": + modified_gcode += line + "\n" + # find current layer + if ";LAYER:" in line: + layer = self.getValue(line, ";LAYER:", layer) + if (layer >= startLayer) and (layer <= endLayer): #find layers of interest + if lines[lineIndex + 4] == "T2": #check if needing to delete old data + del lines[(lineIndex + 1):(lineIndex + 5)] + firstExtruderValue = int(((layer - startLayer) * firstExtruderIncrements) + firstMix) + if firstExtruderValue == 100: + modified_gcode += "M163 S0 P1\n" + modified_gcode += "M163 S1 P0\n" + elif firstExtruderValue == 0: + modified_gcode += "M163 S0 P0\n" + modified_gcode += "M163 S1 P1\n" + else: + modified_gcode += "M163 S0 P0.{:02d}\n".format(firstExtruderValue) + modified_gcode += "M163 S1 P0.{:02d}\n".format(100 - firstExtruderValue) + modified_gcode += "M164 S2\n" + modified_gcode += "T2\n" + lineIndex += 1 #for deleting index + data[index] = modified_gcode + index += 1 + return data 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/DisplayRemainingTimeOnLCD.py b/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py new file mode 100644 index 0000000000..7d9af10925 --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/DisplayRemainingTimeOnLCD.py @@ -0,0 +1,94 @@ +# Cura PostProcessingPlugin +# Author: Mathias Lyngklip Kjeldgaard +# Date: July 31, 2019 +# Modified: November 26, 2019 + +# Description: This plugin displayes the remaining time on the LCD of the printer +# using the estimated print-time generated by Cura. + + + + +from ..Script import Script + +import re +import datetime + + +class DisplayRemainingTimeOnLCD(Script): + + def __init__(self): + super().__init__() + + + def getSettingDataString(self): + return """{ + "name":"Display Remaining Time on LCD", + "key":"DisplayRemainingTimeOnLCD", + "metadata": {}, + "version": 2, + "settings": + { + "TurnOn": + { + "label": "Enable", + "description": "When enabled, It will write Time Left: HHMMSS on the display. This is updated every layer.", + "type": "bool", + "default_value": false + } + } + }""" + + def execute(self, data): + if self.getSettingValueByKey("TurnOn"): + total_time = 0 + total_time_string = "" + for layer in data: + layer_index = data.index(layer) + lines = layer.split("\n") + for line in lines: + if line.startswith(";TIME:"): + # At this point, we have found a line in the GCODE with ";TIME:" + # which is the indication of total_time. Looks like: ";TIME:1337", where + # 1337 is the total print time in seconds. + line_index = lines.index(line) # We take a hold of that line + split_string = re.split(":", line) # Then we split it, so we can get the number + + string_with_numbers = "{}".format(split_string[1]) # Here we insert that number from the + # list into a string. + total_time = int(string_with_numbers) # Only to contert it to a int. + + m, s = divmod(total_time, 60) # Math to calculate + h, m = divmod(m, 60) # hours, minutes and seconds. + total_time_string = "{:d}h{:02d}m{:02d}s".format(h, m, s) # Now we put it into the string + lines[line_index] = "M117 Time Left {}".format(total_time_string) # And print that string instead of the original one + + + + + elif line.startswith(";TIME_ELAPSED:"): + + # As we didnt find the total time (";TIME:"), we have found a elapsed time mark + # This time represents the time the printer have printed. So with some math; + # totalTime - printTime = RemainingTime. + line_index = lines.index(line) # We get a hold of the line + list_split = re.split(":", line) # Again, we split at ":" so we can get the number + string_with_numbers = "{}".format(list_split[1]) # Then we put that number from the list, into a string + + current_time = float(string_with_numbers) # This time we convert to a float, as the line looks something like: + # ;TIME_ELAPSED:1234.6789 + # which is total time in seconds + + time_left = total_time - current_time # Here we calculate remaining time + m1, s1 = divmod(time_left, 60) # And some math to get the total time in seconds into + h1, m1 = divmod(m1, 60) # the right format. (HH,MM,SS) + current_time_string = "{:d}h{:2d}m{:2d}s".format(int(h1), int(m1), int(s1)) # Here we create the string holding our time + lines[line_index] = "M117 Time Left {}".format(current_time_string) # And now insert that into the GCODE + + + # Here we are OUT of the second for-loop + # Which means we have found and replaces all the occurences. + # Which also means we are ready to join the lines for that section of the GCODE file. + final_lines = "\n".join(lines) + data[layer_index] = final_lines + return data diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py index 8b50a88b7f..17b4de88dd 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeight.py @@ -1,15 +1,18 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from ..Script import Script from UM.Application import Application #To get the current printer's settings. +from UM.Logger import Logger + +from typing import List, Tuple class PauseAtHeight(Script): - def __init__(self): + def __init__(self) -> None: super().__init__() - def getSettingDataString(self): + def getSettingDataString(self) -> str: return """{ "name": "Pause at height", "key": "PauseAtHeight", @@ -105,19 +108,24 @@ class PauseAtHeight(Script): "standby_temperature": { "label": "Standby Temperature", - "description": "Change the temperature during the pause", + "description": "Change the temperature during the pause.", "unit": "°C", "type": "int", "default_value": 0 + }, + "display_text": + { + "label": "Display Text", + "description": "Text that should appear on the display while paused. If left empty, there will not be any message.", + "type": "str", + "default_value": "" } } }""" - def getNextXY(self, layer: str): - """ - Get the X and Y values for a layer (will be used to get X and Y of - the layer after the pause - """ + ## Get the X and Y values for a layer (will be used to get X and Y of the + # layer after the pause). + def getNextXY(self, layer: str) -> Tuple[float, float]: lines = layer.split("\n") for line in lines: if self.getValue(line, "X") is not None and self.getValue(line, "Y") is not None: @@ -126,8 +134,10 @@ class PauseAtHeight(Script): return x, y return 0, 0 - def execute(self, data: list): - """data is a list. Each index contains a layer""" + ## Inserts the pause commands. + # \param data: List of layers. + # \return New list of layers. + def execute(self, data: List[str]) -> List[str]: pause_at = self.getSettingValueByKey("pause_at") pause_height = self.getSettingValueByKey("pause_height") pause_layer = self.getSettingValueByKey("pause_layer") @@ -143,6 +153,7 @@ class PauseAtHeight(Script): firmware_retract = Application.getInstance().getGlobalContainerStack().getProperty("machine_firmware_retract", "value") control_temperatures = Application.getInstance().getGlobalContainerStack().getProperty("machine_nozzle_temp_enabled", "value") initial_layer_height = Application.getInstance().getGlobalContainerStack().getProperty("layer_height_0", "value") + display_text = self.getSettingValueByKey("display_text") is_griffin = False @@ -151,6 +162,9 @@ class PauseAtHeight(Script): # use offset to calculate the current height: = - layer_0_z = 0 current_z = 0 + current_height = 0 + current_layer = 0 + current_extrusion_f = 0 got_first_g_cmd_on_layer_0 = False current_t = 0 #Tracks the current extruder for tracking the target temperature. target_temperature = {} #Tracks the current target temperature for each extruder. @@ -184,6 +198,10 @@ class PauseAtHeight(Script): if not layers_started: continue + # Look for the feed rate of an extrusion instruction + if self.getValue(line, "F") is not None and self.getValue(line, "E") is not None: + current_extrusion_f = self.getValue(line, "F") + # If a Z instruction is in the line, read the current Z if self.getValue(line, "Z") is not None: current_z = self.getValue(line, "Z") @@ -201,7 +219,7 @@ class PauseAtHeight(Script): current_height = current_z - layer_0_z if current_height < pause_height: - break # Try the next layer. + continue # Scan the enitre layer, z-changes are not always on the same/first line. # Pause at layer else: @@ -247,8 +265,8 @@ class PauseAtHeight(Script): # the nozzle) x, y = self.getNextXY(layer) prev_lines = prev_layer.split("\n") - for line in prev_lines: - new_e = self.getValue(line, 'E', current_e) + for lin in prev_lines: + new_e = self.getValue(lin, "E", current_e) if new_e != current_e: current_e = new_e break @@ -264,7 +282,7 @@ class PauseAtHeight(Script): if not is_griffin: # Retraction - prepend_gcode += self.putValue(M = 83) + "\n" + prepend_gcode += self.putValue(M = 83) + " ; switch to relative E values for any needed retraction\n" if retraction_amount != 0: if firmware_retract: #Can't set the distance directly to what the user wants. We have to choose ourselves. retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature. @@ -274,25 +292,28 @@ class PauseAtHeight(Script): prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n" # Move the head away - prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" + prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + " ; move up a millimeter to get out of the way\n" # This line should be ok prepend_gcode += self.putValue(G = 1, X = park_x, Y = park_y, F = 9000) + "\n" if current_z < 15: - prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + "\n" + prepend_gcode += self.putValue(G = 1, Z = 15, F = 300) + " ; too close to bed--move to at least 15mm\n" if control_temperatures: # Set extruder standby temperature - prepend_gcode += self.putValue(M = 104, S = standby_temperature) + "; standby temperature\n" + prepend_gcode += self.putValue(M = 104, S = standby_temperature) + " ; standby temperature\n" + + if display_text: + prepend_gcode += "M117 " + display_text + "\n" # Wait till the user continues printing - prepend_gcode += self.putValue(M = 0) + ";Do the actual pause\n" + prepend_gcode += self.putValue(M = 0) + " ; Do the actual pause\n" if not is_griffin: if control_temperatures: # Set extruder resume temperature - prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + "; resume temperature\n" + prepend_gcode += self.putValue(M = 109, S = int(target_temperature.get(current_t, 0))) + " ; resume temperature\n" # Push the filament back, if retraction_amount != 0: @@ -308,8 +329,10 @@ class PauseAtHeight(Script): prepend_gcode += self.putValue(G = 1, E = -retraction_amount, F = retraction_speed * 60) + "\n" # Move the head back - prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" + if current_z < 15: + prepend_gcode += self.putValue(G = 1, Z = current_z + 1, F = 300) + "\n" prepend_gcode += self.putValue(G = 1, X = x, Y = y, F = 9000) + "\n" + prepend_gcode += self.putValue(G = 1, Z = current_z, F = 300) + " ; move back down to resume height\n" if retraction_amount != 0: if firmware_retract: #Can't set the distance directly to what the user wants. We have to choose ourselves. retraction_count = 1 if control_temperatures else 3 #Retract more if we don't control the temperature. @@ -317,8 +340,13 @@ class PauseAtHeight(Script): prepend_gcode += self.putValue(G = 11) + "\n" else: prepend_gcode += self.putValue(G = 1, E = retraction_amount, F = retraction_speed * 60) + "\n" - prepend_gcode += self.putValue(G = 1, F = 9000) + "\n" - prepend_gcode += self.putValue(M = 82) + "\n" + + if current_extrusion_f != 0: + prepend_gcode += self.putValue(G = 1, F = current_extrusion_f) + " ; restore extrusion feedrate\n" + else: + Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect") + + prepend_gcode += self.putValue(M = 82) + " ; switch back to absolute E values\n" # reset extrude value to pre pause value prepend_gcode += self.putValue(G = 92, E = current_e) + "\n" diff --git a/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py b/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py index f6c93d9ae6..0353574289 100644 --- a/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py +++ b/plugins/PostProcessingPlugin/scripts/PauseAtHeightforRepetier.py @@ -1,3 +1,4 @@ +from UM.Logger import Logger from ..Script import Script class PauseAtHeightforRepetier(Script): def __init__(self): @@ -73,6 +74,7 @@ class PauseAtHeightforRepetier(Script): def execute(self, data): x = 0. y = 0. + current_extrusion_f = 0 current_z = 0. pause_z = self.getSettingValueByKey("pause_height") retraction_amount = self.getSettingValueByKey("retraction_amount") @@ -94,9 +96,11 @@ class PauseAtHeightforRepetier(Script): if self.getValue(line, 'G') == 1 or self.getValue(line, 'G') == 0: current_z = self.getValue(line, 'Z') + if self.getValue(line, 'F') is not None and self.getValue(line, 'E') is not None: + current_extrusion_f = self.getValue(line, 'F', current_extrusion_f) x = self.getValue(line, 'X', x) y = self.getValue(line, 'Y', y) - if current_z != None: + if current_z is not None: if current_z >= pause_z: index = data.index(layer) @@ -150,7 +154,12 @@ class PauseAtHeightforRepetier(Script): prepend_gcode +="G1 X%f Y%f F9000\n" % (x, y) if retraction_amount != 0: prepend_gcode +="G1 E%f F6000\n" % (retraction_amount) - prepend_gcode +="G1 F9000\n" + + if current_extrusion_f != 0: + prepend_gcode += self.putValue(G=1, F=current_extrusion_f) + " ; restore extrusion feedrate\n" + else: + Logger.log("w", "No previous feedrate found in gcode, feedrate for next layer(s) might be incorrect") + prepend_gcode +="M82\n" # reset extrude value to pre pause value diff --git a/plugins/PostProcessingPlugin/scripts/RetractContinue.py b/plugins/PostProcessingPlugin/scripts/RetractContinue.py new file mode 100644 index 0000000000..b0af9cd95e --- /dev/null +++ b/plugins/PostProcessingPlugin/scripts/RetractContinue.py @@ -0,0 +1,75 @@ +# Copyright (c) 2019 Ultimaker B.V. +# The PostProcessingPlugin is released under the terms of the AGPLv3 or higher. + +import math + +from ..Script import Script + +## Continues retracting during all travel moves. +class RetractContinue(Script): + def getSettingDataString(self): + return """{ + "name": "Retract Continue", + "key": "RetractContinue", + "metadata": {}, + "version": 2, + "settings": + { + "extra_retraction_speed": + { + "label": "Extra Retraction Ratio", + "description": "How much does it retract during the travel move, by ratio of the travel length.", + "type": "float", + "default_value": 0.05 + } + } + }""" + + def execute(self, data): + current_e = 0 + current_x = 0 + current_y = 0 + extra_retraction_speed = self.getSettingValueByKey("extra_retraction_speed") + + for layer_number, layer in enumerate(data): + lines = layer.split("\n") + for line_number, line in enumerate(lines): + if self.getValue(line, "G") in {0, 1}: # Track X,Y location. + current_x = self.getValue(line, "X", current_x) + current_y = self.getValue(line, "Y", current_y) + if self.getValue(line, "G") == 1: + if self.getValue(line, "E"): + new_e = self.getValue(line, "E") + if new_e >= current_e: # Not a retraction. + continue + # A retracted travel move may consist of multiple commands, due to combing. + # This continues retracting over all of these moves and only unretracts at the end. + delta_line = 1 + dx = current_x # Track the difference in X for this move only to compute the length of the travel. + dy = current_y + while line_number + delta_line < len(lines) and self.getValue(lines[line_number + delta_line], "G") != 1: + travel_move = lines[line_number + delta_line] + if self.getValue(travel_move, "G") != 0: + delta_line += 1 + continue + travel_x = self.getValue(travel_move, "X", dx) + travel_y = self.getValue(travel_move, "Y", dy) + f = self.getValue(travel_move, "F", "no f") + length = math.sqrt((travel_x - dx) * (travel_x - dx) + (travel_y - dy) * (travel_y - dy)) # Length of the travel move. + new_e -= length * extra_retraction_speed # New retraction is by ratio of this travel move. + if f == "no f": + new_travel_move = "G1 X{travel_x} Y{travel_y} E{new_e}".format(travel_x = travel_x, travel_y = travel_y, new_e = new_e) + else: + new_travel_move = "G1 F{f} X{travel_x} Y{travel_y} E{new_e}".format(f = f, travel_x = travel_x, travel_y = travel_y, new_e = new_e) + lines[line_number + delta_line] = new_travel_move + + delta_line += 1 + dx = travel_x + dy = travel_y + + current_e = new_e + + new_layer = "\n".join(lines) + data[layer_number] = new_layer + + return data \ No newline at end of file diff --git a/plugins/PostProcessingPlugin/scripts/Stretch.py b/plugins/PostProcessingPlugin/scripts/Stretch.py index 13b41eaacd..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: 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/__init__.py b/plugins/PrepareStage/__init__.py index f085d788f9..8e86ff303d 100644 --- a/plugins/PrepareStage/__init__.py +++ b/plugins/PrepareStage/__init__.py @@ -10,7 +10,7 @@ def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Prepare"), - "weight": 0 + "weight": 10 } } diff --git a/plugins/PrepareStage/plugin.json b/plugins/PrepareStage/plugin.json index dc5c68ce16..e65c62ef49 100644 --- a/plugins/PrepareStage/plugin.json +++ b/plugins/PrepareStage/plugin.json @@ -1,8 +1,8 @@ -{ - "name": "Prepare Stage", - "author": "Ultimaker B.V.", - "version": "1.0.1", - "description": "Provides a prepare stage in Cura.", - "api": "6.0", - "i18n-catalog": "cura" +{ + "name": "Prepare Stage", + "author": "Ultimaker B.V.", + "version": "1.0.1", + "description": "Provides a prepare stage in Cura.", + "api": "7.0", + "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/PreviewStage/PreviewMain.qml b/plugins/PreviewStage/PreviewMain.qml index 6b5ce2436b..2926f0d012 100644 --- a/plugins/PreviewStage/PreviewMain.qml +++ b/plugins/PreviewStage/PreviewMain.qml @@ -11,12 +11,34 @@ import Cura 1.0 as Cura Item { + + // An Item whose bounds are guaranteed to be safe for overlays to be placed. + // Defaults to parent, ie. the entire available area + property var safeArea: parent + + // Subtract the actionPanel from the safe area. This way the view won't draw interface elements under/over it + Item + { + id: childSafeArea + x: safeArea.x - parent.x + y: safeArea.y - parent.y + width: actionPanelWidget.x - x + height: actionPanelWidget.y - y + } + Loader { id: previewMain anchors.fill: parent source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : "" + + onLoaded: + { + if (previewMain.item.safeArea !== undefined){ + previewMain.item.safeArea = Qt.binding(function() { return childSafeArea }); + } + } } Cura.ActionPanelWidget diff --git a/plugins/PreviewStage/__init__.py b/plugins/PreviewStage/__init__.py index 424f573e4a..cb32f583ee 100644 --- a/plugins/PreviewStage/__init__.py +++ b/plugins/PreviewStage/__init__.py @@ -11,7 +11,7 @@ def getMetaData(): return { "stage": { "name": i18n_catalog.i18nc("@item:inmenu", "Preview"), - "weight": 1 + "weight": 20 } } diff --git a/plugins/PreviewStage/plugin.json b/plugins/PreviewStage/plugin.json index e1e4288bae..1c21e682ee 100644 --- a/plugins/PreviewStage/plugin.json +++ b/plugins/PreviewStage/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides a preview stage in Cura.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py b/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py index 51b6a70b7a..c89bd31e21 100644 --- a/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py +++ b/plugins/RemovableDriveOutputDevice/WindowsRemovableDrivePlugin.py @@ -48,9 +48,13 @@ class WindowsRemovableDrivePlugin(RemovableDrivePlugin.RemovableDrivePlugin): drives = {} bitmask = ctypes.windll.kernel32.GetLogicalDrives() - # Check possible drive letters, from A to Z + # Check possible drive letters, from C to Z # Note: using ascii_uppercase because we do not want this to change with locale! - for letter in string.ascii_uppercase: + # Skip A and B, since those drives are typically reserved for floppy disks. + # Those drives can theoretically be reassigned but it's safer to not check them for removable drives. + # Windows will also behave weirdly even with some of its internal functions if you do this (e.g. search indexing doesn't search it). + # Users that have removable drives in A or B will just have to save to file and select the drive there. + for letter in string.ascii_uppercase[2:]: drive = "{0}:/".format(letter) # Do we really want to skip A and B? diff --git a/plugins/RemovableDriveOutputDevice/plugin.json b/plugins/RemovableDriveOutputDevice/plugin.json index 5523d6b1c1..c794257e3a 100644 --- a/plugins/RemovableDriveOutputDevice/plugin.json +++ b/plugins/RemovableDriveOutputDevice/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "description": "Provides removable drive hotplugging and writing support.", "version": "1.0.1", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SimulationView/LayerSlider.qml b/plugins/SimulationView/LayerSlider.qml index 88f298d1f5..d6de45df9b 100644 --- a/plugins/SimulationView/LayerSlider.qml +++ b/plugins/SimulationView/LayerSlider.qml @@ -155,25 +155,19 @@ Item } onPositionChanged: parent.onHandleDragged() - onPressed: sliderRoot.setActiveHandle(rangeHandle) + onPressed: + { + sliderRoot.setActiveHandle(rangeHandle) + sliderRoot.forceActiveFocus() + } } - SimulationSliderLabel - { - id: rangleHandleLabel + } - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - width - UM.Theme.getSize("default_margin").width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent - - // custom properties - maximumValue: sliderRoot.maximumValue - value: sliderRoot.upperValue - busy: UM.SimulationView.busy - setValue: rangeHandle.setValueManually // connect callback functions - } + onHeightChanged : { + // After a height change, the pixel-position of the handles is out of sync with the property value + setLowerValue(lowerValue) + setUpperValue(upperValue) } // Upper handle @@ -270,11 +264,12 @@ Item { id: upperHandleLabel - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - parent.width - width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width, y + height / 2) - visible: sliderRoot.activeHandle == parent + height: sliderRoot.handleSize + anchors.bottom: parent.top + anchors.bottomMargin: UM.Theme.getSize("narrow_margin").height + anchors.horizontalCenter: parent.horizontalCenter + target: Qt.point(parent.width / 2, parent.top) + visible: sliderRoot.activeHandle == parent || sliderRoot.activeHandle == rangeHandle // custom properties maximumValue: sliderRoot.maximumValue @@ -333,7 +328,6 @@ Item // set the slider position based on the lower value function setValue(value) { - // Normalize values between range, since using arrow keys will create out-of-the-range values value = sliderRoot.normalizeValue(value) @@ -380,11 +374,12 @@ Item { id: lowerHandleLabel - height: sliderRoot.handleSize + UM.Theme.getSize("default_margin").height - x: parent.x - parent.width - width - anchors.verticalCenter: parent.verticalCenter - target: Qt.point(sliderRoot.width + width, y + height / 2) - visible: sliderRoot.activeHandle == parent + height: sliderRoot.handleSize + anchors.top: parent.bottom + anchors.topMargin: UM.Theme.getSize("narrow_margin").height + anchors.horizontalCenter: parent.horizontalCenter + target: Qt.point(parent.width / 2, parent.bottom) + visible: sliderRoot.activeHandle == parent || sliderRoot.activeHandle == rangeHandle // custom properties maximumValue: sliderRoot.maximumValue @@ -393,4 +388,4 @@ Item setValue: lowerHandle.setValueManually // connect callback functions } } -} \ No newline at end of file +} diff --git a/plugins/SimulationView/NozzleNode.py b/plugins/SimulationView/NozzleNode.py index 8a29871775..11b788c128 100644 --- a/plugins/SimulationView/NozzleNode.py +++ b/plugins/SimulationView/NozzleNode.py @@ -3,7 +3,6 @@ from UM.Application import Application from UM.Math.Color import Color -from UM.Math.Vector import Vector from UM.PluginRegistry import PluginRegistry from UM.Scene.SceneNode import SceneNode from UM.View.GL.OpenGL import OpenGL diff --git a/plugins/SimulationView/PathSlider.qml b/plugins/SimulationView/PathSlider.qml index c7a43c6407..facdbb6a53 100644 --- a/plugins/SimulationView/PathSlider.qml +++ b/plugins/SimulationView/PathSlider.qml @@ -56,6 +56,11 @@ Item return Math.min(Math.max(value, sliderRoot.minimumValue), sliderRoot.maximumValue) } + onWidthChanged : { + // After a width change, the pixel-position of the handle is out of sync with the property value + setHandleValue(handleValue) + } + // slider track Rectangle { diff --git a/plugins/SimulationView/SimulationSliderLabel.qml b/plugins/SimulationView/SimulationSliderLabel.qml index 06c6a51b44..c1fb0f4de9 100644 --- a/plugins/SimulationView/SimulationSliderLabel.qml +++ b/plugins/SimulationView/SimulationSliderLabel.qml @@ -1,7 +1,6 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 +import QtQuick 2.5 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.1 import QtQuick.Controls.Styles 1.1 @@ -20,9 +19,9 @@ UM.PointingRectangle { property int startFrom: 1 target: Qt.point(parent.width, y + height / 2) - arrowSize: UM.Theme.getSize("default_arrow").width + arrowSize: UM.Theme.getSize("button_tooltip_arrow").height height: parent.height - width: valueLabel.width + UM.Theme.getSize("default_margin").width + width: valueLabel.width visible: false color: UM.Theme.getColor("tool_panel_background") @@ -40,26 +39,35 @@ UM.PointingRectangle { anchors.fill: parent } + TextMetrics { + id: maxValueMetrics + font: valueLabel.font + text: maximumValue + 1 // layers are 0 based, add 1 for display value + + } + TextField { id: valueLabel anchors { verticalCenter: parent.verticalCenter horizontalCenter: parent.horizontalCenter + alignWhenCentered: false } - width: ((maximumValue + 1).toString().length + 1) * 10 * screenScaleFactor + width: maxValueMetrics.width + UM.Theme.getSize("default_margin").width text: sliderLabelRoot.value + startFrom // the current handle value, add 1 because layers is an array - horizontalAlignment: TextInput.AlignRight + horizontalAlignment: TextInput.AlignHCenter // key bindings, work when label is currenctly focused (active handle in LayerSlider) Keys.onUpPressed: sliderLabelRoot.setValue(sliderLabelRoot.value + ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) Keys.onDownPressed: sliderLabelRoot.setValue(sliderLabelRoot.value - ((event.modifiers & Qt.ShiftModifier) ? 10 : 1)) style: TextFieldStyle { - textColor: UM.Theme.getColor("setting_control_text") + textColor: UM.Theme.getColor("text") font: UM.Theme.getFont("default") - background: Item { } + renderType: Text.NativeRendering + background: Item { } } onEditingFinished: { diff --git a/plugins/SimulationView/SimulationView.py b/plugins/SimulationView/SimulationView.py index 3b2db2efac..6d6f19c57c 100644 --- a/plugins/SimulationView/SimulationView.py +++ b/plugins/SimulationView/SimulationView.py @@ -48,7 +48,7 @@ if TYPE_CHECKING: catalog = i18nCatalog("cura") -## View used to display g-code paths. +## The preview layer view. It is used to display g-code paths. class SimulationView(CuraView): # Must match SimulationViewMenuComponent.qml LAYER_VIEW_TYPE_MATERIAL_TYPE = 0 @@ -83,9 +83,13 @@ class SimulationView(CuraView): self._simulationview_composite_shader = None # type: Optional["ShaderProgram"] self._old_composite_shader = None # type: Optional["ShaderProgram"] + self._max_feedrate = sys.float_info.min + self._min_feedrate = sys.float_info.max + self._max_thickness = sys.float_info.min + self._min_thickness = sys.float_info.max + self._global_container_stack = None # type: Optional[ContainerStack] - self._proxy = SimulationViewProxy() - self._controller.getScene().getRoot().childrenChanged.connect(self._onSceneChanged) + self._proxy = None self._resetSettings() self._legend_items = None @@ -104,7 +108,6 @@ class SimulationView(CuraView): Application.getInstance().getPreferences().addPreference("layerview/show_skin", True) Application.getInstance().getPreferences().addPreference("layerview/show_infill", True) - Application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferencesChanged) self._updateWithPreferences() self._solid_layers = int(Application.getInstance().getPreferences().getValue("view/top_layer_count")) @@ -180,8 +183,7 @@ class SimulationView(CuraView): def _onSceneChanged(self, node: "SceneNode") -> None: if node.getMeshData() is None: - self.resetLayerData() - + return self.setActivity(False) self.calculateMaxLayers() self.calculateMaxPathsOnLayer(self._current_layer_num) @@ -211,6 +213,8 @@ class SimulationView(CuraView): def beginRendering(self) -> None: scene = self.getController().getScene() renderer = self.getRenderer() + if renderer is None: + return if not self._ghost_shader: self._ghost_shader = OpenGL.getInstance().createShaderProgram(Resources.getPath(Resources.Shaders, "color.shader")) @@ -218,10 +222,10 @@ class SimulationView(CuraView): if theme is not None: self._ghost_shader.setUniformValue("u_color", Color(*theme.getColor("layerview_ghost").getRgb())) - for node in DepthFirstIterator(scene.getRoot()): # type: ignore + for node in DepthFirstIterator(scene.getRoot()): # We do not want to render ConvexHullNode as it conflicts with the bottom layers. # However, it is somewhat relevant when the node is selected, so do render it then. - if type(node) is ConvexHullNode and not Selection.isSelected(node.getWatchedNode()): + if type(node) is ConvexHullNode and not Selection.isSelected(cast(ConvexHullNode, node).getWatchedNode()): continue if not node.render(renderer): @@ -384,7 +388,7 @@ class SimulationView(CuraView): self._max_thickness = max(float(p.lineThicknesses.max()), self._max_thickness) try: self._min_thickness = min(float(p.lineThicknesses[numpy.nonzero(p.lineThicknesses)].min()), self._min_thickness) - except: + except ValueError: # Sometimes, when importing a GCode the line thicknesses are zero and so the minimum (avoiding # the zero) can't be calculated Logger.log("i", "Min thickness can't be calculated because all the values are zero") @@ -441,6 +445,8 @@ class SimulationView(CuraView): ## Hackish way to ensure the proxy is already created, which ensures that the layerview.qml is already created # as this caused some issues. def getProxy(self, engine, script_engine): + if self._proxy is None: + self._proxy = SimulationViewProxy(self) return self._proxy def endRendering(self) -> None: @@ -460,6 +466,13 @@ class SimulationView(CuraView): return True if event.type == Event.ViewActivateEvent: + # Start listening to changes. + Application.getInstance().getPreferences().preferenceChanged.connect(self._onPreferencesChanged) + self._controller.getScene().getRoot().childrenChanged.connect(self._onSceneChanged) + + self.calculateMaxLayers() + self.calculateMaxPathsOnLayer(self._current_layer_num) + # FIX: on Max OS X, somehow QOpenGLContext.currentContext() can become None during View switching. # This can happen when you do the following steps: # 1. Start Cura @@ -479,7 +492,11 @@ class SimulationView(CuraView): # Make sure the SimulationPass is created layer_pass = self.getSimulationPass() - self.getRenderer().addRenderPass(layer_pass) + renderer = self.getRenderer() + if renderer is None: + return False + + renderer.addRenderPass(layer_pass) # Make sure the NozzleNode is add to the root nozzle = self.getNozzleNode() @@ -498,7 +515,7 @@ class SimulationView(CuraView): self._simulationview_composite_shader.setUniformValue("u_outline_color", Color(*theme.getColor("model_selection_outline").getRgb())) if not self._composite_pass: - self._composite_pass = cast(CompositePass, self.getRenderer().getRenderPass("composite")) + self._composite_pass = cast(CompositePass, renderer.getRenderPass("composite")) self._old_layer_bindings = self._composite_pass.getLayerBindings()[:] # make a copy so we can restore to it later self._composite_pass.getLayerBindings().append("simulationview") @@ -506,13 +523,21 @@ class SimulationView(CuraView): self._composite_pass.setCompositeShader(self._simulationview_composite_shader) elif event.type == Event.ViewDeactivateEvent: + self._controller.getScene().getRoot().childrenChanged.disconnect(self._onSceneChanged) + Application.getInstance().getPreferences().preferenceChanged.disconnect(self._onPreferencesChanged) self._wireprint_warning_message.hide() Application.getInstance().globalContainerStackChanged.disconnect(self._onGlobalStackChanged) if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged) if self._nozzle_node: self._nozzle_node.setParent(None) - self.getRenderer().removeRenderPass(self._layer_pass) + + renderer = self.getRenderer() + if renderer is None: + return False + + if self._layer_pass is not None: + renderer.removeRenderPass(self._layer_pass) if self._composite_pass: self._composite_pass.setLayerBindings(cast(List[str], self._old_layer_bindings)) self._composite_pass.setCompositeShader(cast(ShaderProgram, self._old_composite_shader)) @@ -572,14 +597,14 @@ class SimulationView(CuraView): self._current_layer_jumps = job.getResult().get("jumps") self._controller.getScene().sceneChanged.emit(self._controller.getScene().getRoot()) - self._top_layers_job = None # type: Optional["_CreateTopLayersJob"] + self._top_layers_job = None def _updateWithPreferences(self) -> None: self._solid_layers = int(Application.getInstance().getPreferences().getValue("view/top_layer_count")) self._only_show_top_layers = bool(Application.getInstance().getPreferences().getValue("view/only_show_top_layers")) self._compatibility_mode = self._evaluateCompatibilityMode() - self.setSimulationViewType(int(float(Application.getInstance().getPreferences().getValue("layerview/layer_view_type")))); + self.setSimulationViewType(int(float(Application.getInstance().getPreferences().getValue("layerview/layer_view_type")))) for extruder_nr, extruder_opacity in enumerate(Application.getInstance().getPreferences().getValue("layerview/extruder_opacities").split("|")): try: diff --git a/plugins/SimulationView/SimulationViewMainComponent.qml b/plugins/SimulationView/SimulationViewMainComponent.qml index 58901652d3..bfd8799673 100644 --- a/plugins/SimulationView/SimulationViewMainComponent.qml +++ b/plugins/SimulationView/SimulationViewMainComponent.qml @@ -11,19 +11,39 @@ import Cura 1.0 as Cura Item { - property bool is_simulation_playing: false + // An Item whose bounds are guaranteed to be safe for overlays to be placed. + // Defaults to parent, ie. the entire available area + // eg. the layer slider will not be placed in this area. + property var safeArea: parent + + + property bool isSimulationPlaying: false + readonly property real layerSliderSafeYMin: safeArea.y + readonly property real layerSliderSafeYMax: safeArea.y + safeArea.height + readonly property real pathSliderSafeXMin: safeArea.x + playButton.width + readonly property real pathSliderSafeXMax: safeArea.x + safeArea.width + visible: UM.SimulationView.layerActivity && CuraApplication.platformActivity + // A slider which lets users trace a single layer (XY movements) PathSlider { id: pathSlider + + readonly property real preferredWidth: UM.Theme.getSize("slider_layerview_size").height // not a typo, should be as long as layerview slider + readonly property real margin: UM.Theme.getSize("default_margin").width + readonly property real pathSliderSafeWidth: pathSliderSafeXMax - pathSliderSafeXMin + height: UM.Theme.getSize("slider_handle").width - width: UM.Theme.getSize("slider_layerview_size").height + width: preferredWidth + margin * 2 < pathSliderSafeWidth ? preferredWidth : pathSliderSafeWidth - margin * 2 + anchors.bottom: parent.bottom - anchors.bottomMargin: UM.Theme.getSize("default_margin").height + anchors.bottomMargin: margin anchors.horizontalCenter: parent.horizontalCenter + anchors.horizontalCenterOffset: -(parent.width - pathSliderSafeXMax - pathSliderSafeXMin) / 2 // center between parent top and layerSliderSafeYMax + visible: !UM.SimulationView.compatibilityMode @@ -58,7 +78,7 @@ Item UM.SimpleButton { id: playButton - iconSource: !is_simulation_playing ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" + iconSource: !isSimulationPlaying ? "./resources/simulation_resume.svg": "./resources/simulation_pause.svg" width: UM.Theme.getSize("small_button").width height: UM.Theme.getSize("small_button").height hoverColor: UM.Theme.getColor("slider_handle_active") @@ -88,7 +108,7 @@ Item onClicked: { - if(is_simulation_playing) + if(isSimulationPlaying) { pauseSimulation() } @@ -102,7 +122,7 @@ Item { UM.SimulationView.setSimulationRunning(false) simulationTimer.stop() - is_simulation_playing = false + isSimulationPlaying = false layerSlider.manuallyChanged = true pathSlider.manuallyChanged = true } @@ -131,7 +151,7 @@ Item // When the user plays the simulation, if the path slider is at the end of this layer, we start // the simulation at the beginning of the current layer. - if (!is_simulation_playing) + if (!isSimulationPlaying) { if (currentPath >= numPaths) { @@ -166,22 +186,30 @@ Item } // The status must be set here instead of in the resumeSimulation function otherwise it won't work // correctly, because part of the logic is in this trigger function. - is_simulation_playing = true + isSimulationPlaying = true } } + // Scrolls trough Z layers LayerSlider { + property var preferredHeight: UM.Theme.getSize("slider_layerview_size").height + property double heightMargin: UM.Theme.getSize("default_margin").height * 3 // extra margin to accomodate layer number tooltips + property double layerSliderSafeHeight: layerSliderSafeYMax - layerSliderSafeYMin + id: layerSlider width: UM.Theme.getSize("slider_handle").width - height: UM.Theme.getSize("slider_layerview_size").height + height: preferredHeight + heightMargin * 2 < layerSliderSafeHeight ? preferredHeight : layerSliderSafeHeight - heightMargin * 2 anchors { right: parent.right verticalCenter: parent.verticalCenter + verticalCenterOffset: -(parent.height - layerSliderSafeYMax - layerSliderSafeYMin) / 2 // center between parent top and layerSliderSafeYMax rightMargin: UM.Theme.getSize("default_margin").width + bottomMargin: heightMargin + topMargin: heightMargin } // Custom properties diff --git a/plugins/SimulationView/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/plugin.json b/plugins/SimulationView/plugin.json index 3ccf91b9e6..e444f1fa2e 100644 --- a/plugins/SimulationView/plugin.json +++ b/plugins/SimulationView/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides the Simulation view.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SliceInfoPlugin/SliceInfo.py b/plugins/SliceInfoPlugin/SliceInfo.py index 7501429796..af8a8b9853 100755 --- a/plugins/SliceInfoPlugin/SliceInfo.py +++ b/plugins/SliceInfoPlugin/SliceInfo.py @@ -18,6 +18,8 @@ from UM.Logger import Logger from UM.PluginRegistry import PluginRegistry from UM.Qt.Duration import DurationFormat +from cura import ApplicationMetadata + from .SliceInfoJob import SliceInfoJob @@ -119,6 +121,7 @@ class SliceInfo(QObject, Extension): data["time_stamp"] = time.time() data["schema_version"] = 0 data["cura_version"] = application.getVersion() + data["cura_build_type"] = ApplicationMetadata.CuraBuildType active_mode = Application.getInstance().getPreferences().getValue("cura/active_mode") if active_mode == 0: @@ -126,6 +129,10 @@ class SliceInfo(QObject, Extension): else: data["active_mode"] = "custom" + data["camera_view"] = application.getPreferences().getValue("general/camera_perspective_mode") + if data["camera_view"] == "orthographic": + data["camera_view"] = "orthogonal" #The database still only recognises the old name "orthogonal". + definition_changes = global_stack.definitionChanges machine_settings_changed_by_user = False if definition_changes.getId() != "empty": @@ -170,6 +177,7 @@ class SliceInfo(QObject, Extension): extruder_dict["extruder_settings"] = extruder_settings data["extruders"].append(extruder_dict) + data["intent_category"] = global_stack.getIntentCategory() data["quality_profile"] = global_stack.quality.getMetaData().get("quality_type") data["user_modified_setting_keys"] = self._getUserModifiedSettingKeys() 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 index 4294b0af6d..103eb55a6a 100644 --- a/plugins/SliceInfoPlugin/example_data.html +++ b/plugins/SliceInfoPlugin/example_data.html @@ -4,6 +4,7 @@ Operating System: Windows 10
Language: en_US
Machine Type: Ultimaker S5
+ Intent Profile: Default
Quality Profile: Fast
Using Custom Settings: No diff --git a/plugins/SliceInfoPlugin/plugin.json b/plugins/SliceInfoPlugin/plugin.json index 8ff0e194fb..8975f52591 100644 --- a/plugins/SliceInfoPlugin/plugin.json +++ b/plugins/SliceInfoPlugin/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Submits anonymous slice info. Can be disabled through preferences.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SolidView/SolidView.py b/plugins/SolidView/SolidView.py index 4ce8ae7bc4..61954f5bca 100644 --- a/plugins/SolidView/SolidView.py +++ b/plugins/SolidView/SolidView.py @@ -57,9 +57,12 @@ class SolidView(View): # 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: + support_extruder_nr = int(global_container_stack.getExtruderPositionValueWithDefault("support_extruder_nr")) + try: + support_angle_stack = global_container_stack.extruderList[support_extruder_nr] + except IndexError: + pass + else: self._support_angle = support_angle_stack.getProperty("support_angle", "value") def beginRendering(self): @@ -139,6 +142,10 @@ class SolidView(View): shade_factor * int(material_color[5:7], 16) / 255, 1.0 ] + + # Color the currently selected face-id. (Disable for now.) + #face = Selection.getHoverFace() + uniforms["hover_face"] = -1 #if not face or node != face[0] else face[1] except ValueError: pass diff --git a/plugins/SolidView/plugin.json b/plugins/SolidView/plugin.json index b3f62221c5..716f2d8d89 100644 --- a/plugins/SolidView/plugin.json +++ b/plugins/SolidView/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides a normal solid mesh view.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/SupportEraser/plugin.json b/plugins/SupportEraser/plugin.json index fa6d6d230e..888c3df50d 100644 --- a/plugins/SupportEraser/plugin.json +++ b/plugins/SupportEraser/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Creates an eraser mesh to block the printing of support in certain places", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/SupportEraser/tool_icon.svg b/plugins/SupportEraser/tool_icon.svg index a0f8a3e3c3..fee69e0715 100644 --- a/plugins/SupportEraser/tool_icon.svg +++ b/plugins/SupportEraser/tool_icon.svg @@ -1,11 +1,14 @@ - - + + + + support_blocker Created with Sketch. - - - - - + + + + + + - + \ No newline at end of file diff --git a/plugins/Toolbox/plugin.json b/plugins/Toolbox/plugin.json index 61dc0429f5..0b967e1645 100644 --- a/plugins/Toolbox/plugin.json +++ b/plugins/Toolbox/plugin.json @@ -2,6 +2,6 @@ "name": "Toolbox", "author": "Ultimaker B.V.", "version": "1.0.1", - "api": "6.0", + "api": "7.0", "description": "Find, manage and install new Cura packages." } diff --git a/plugins/Toolbox/resources/qml/Toolbox.qml b/plugins/Toolbox/resources/qml/Toolbox.qml index d15d98eed7..d6d862b5f6 100644 --- a/plugins/Toolbox/resources/qml/Toolbox.qml +++ b/plugins/Toolbox/resources/qml/Toolbox.qml @@ -1,11 +1,17 @@ // Copyright (c) 2018 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. +// Main window for the Toolbox + import QtQuick 2.2 import QtQuick.Dialogs 1.1 import QtQuick.Window 2.2 import UM 1.1 as UM +import "./pages" +import "./dialogs" +import "./components" + Window { id: base @@ -14,8 +20,8 @@ Window modality: Qt.ApplicationModal flags: Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowCloseButtonHint - width: Math.floor(720 * screenScaleFactor) - height: Math.floor(640 * screenScaleFactor) + width: UM.Theme.getSize("large_popup_dialog").width + height: UM.Theme.getSize("large_popup_dialog").height minimumWidth: width maximumWidth: minimumWidth minimumHeight: height @@ -29,9 +35,16 @@ Window Item { anchors.fill: parent + + WelcomePage + { + visible: toolbox.viewPage === "welcome" + } + ToolboxHeader { id: header + visible: toolbox.viewPage !== "welcome" } Item @@ -48,32 +61,32 @@ Window ToolboxLoadingPage { id: viewLoading - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "loading" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "loading" } ToolboxErrorPage { id: viewErrored - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "errored" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "errored" } ToolboxDownloadsPage { id: viewDownloads - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "overview" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "overview" } ToolboxDetailPage { id: viewDetail - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "detail" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "detail" } ToolboxAuthorPage { id: viewAuthor - visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "author" + visible: toolbox.viewCategory !== "installed" && toolbox.viewPage === "author" } ToolboxInstalledPage { id: installedPluginList - visible: toolbox.viewCategory == "installed" + visible: toolbox.viewCategory === "installed" } } diff --git a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml b/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml deleted file mode 100644 index 4d4ae92e73..0000000000 --- a/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Toolbox is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import UM 1.1 as UM -import Cura 1.0 as Cura - - -Item -{ - id: base - - property var active: false - property var complete: false - - property var readyLabel: catalog.i18nc("@action:button", "Install") - property var activeLabel: catalog.i18nc("@action:button", "Cancel") - property var completeLabel: catalog.i18nc("@action:button", "Installed") - - signal readyAction() // Action when button is ready and clicked (likely install) - signal activeAction() // Action when button is active and clicked (likely cancel) - signal completeAction() // Action when button is complete and clicked (likely go to installed) - - width: UM.Theme.getSize("toolbox_action_button").width - height: UM.Theme.getSize("toolbox_action_button").height - - Cura.PrimaryButton - { - id: button - width: UM.Theme.getSize("toolbox_action_button").width - height: UM.Theme.getSize("toolbox_action_button").height - fixedWidthMode: true - text: - { - if (complete) - { - return completeLabel - } - else if (active) - { - return activeLabel - } - else - { - return readyLabel - } - } - onClicked: - { - if (complete) - { - completeAction() - } - else if (active) - { - activeAction() - } - else - { - readyAction() - } - } - busy: active - } -} diff --git a/plugins/Toolbox/resources/qml/RatingWidget.qml b/plugins/Toolbox/resources/qml/components/RatingWidget.qml similarity index 100% rename from plugins/Toolbox/resources/qml/RatingWidget.qml rename to plugins/Toolbox/resources/qml/components/RatingWidget.qml diff --git a/plugins/Toolbox/resources/qml/SmallRatingWidget.qml b/plugins/Toolbox/resources/qml/components/SmallRatingWidget.qml similarity index 100% rename from plugins/Toolbox/resources/qml/SmallRatingWidget.qml rename to plugins/Toolbox/resources/qml/components/SmallRatingWidget.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxActionButtonStyle.qml b/plugins/Toolbox/resources/qml/components/ToolboxActionButtonStyle.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxActionButtonStyle.qml rename to plugins/Toolbox/resources/qml/components/ToolboxActionButtonStyle.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml b/plugins/Toolbox/resources/qml/components/ToolboxBackColumn.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxBackColumn.qml rename to plugins/Toolbox/resources/qml/components/ToolboxBackColumn.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml b/plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml similarity index 73% rename from plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml rename to plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml index db4e8c628f..ae9241f0ab 100644 --- a/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxCompatibilityChart.qml @@ -1,9 +1,9 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 + import UM 1.1 as UM Item @@ -11,48 +11,17 @@ Item id: base property var packageData - property var technicalDataSheetUrl: - { - var link = undefined - if ("Technical Data Sheet" in packageData.links) - { - // HACK: This is the way the old API (used in 3.6-beta) used to do it. For safety it's still here, - // but it can be removed over time. - link = packageData.links["Technical Data Sheet"] - } - else if ("technicalDataSheet" in packageData.links) - { - link = packageData.links["technicalDataSheet"] - } - return link - } - property var safetyDataSheetUrl: - { - var sds_name = "safetyDataSheet" - return (sds_name in packageData.links) ? packageData.links[sds_name] : undefined - } - property var printingGuidelinesUrl: - { - var pg_name = "printingGuidelines" - return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined - } + property var technicalDataSheetUrl: packageData.links.technicalDataSheet + property var safetyDataSheetUrl: packageData.links.safetyDataSheet + property var printingGuidelinesUrl: packageData.links.printingGuidelines + property var materialWebsiteUrl: packageData.links.website - property var materialWebsiteUrl: - { - var pg_name = "website" - return (pg_name in packageData.links) ? packageData.links[pg_name] : undefined - } - anchors.topMargin: UM.Theme.getSize("default_margin").height - height: visible ? childrenRect.height : 0 + height: childrenRect.height + onVisibleChanged: packageData.type === "material" && (compatibilityItem.visible || dataSheetLinks.visible) - visible: packageData.type == "material" && - (packageData.has_configs || technicalDataSheetUrl !== undefined || - safetyDataSheetUrl !== undefined || printingGuidelinesUrl !== undefined || - materialWebsiteUrl !== undefined) - - Item + Column { - id: combatibilityItem + id: compatibilityItem visible: packageData.has_configs width: parent.width // This is a bit of a hack, but the whole QML is pretty messy right now. This needs a big overhaul. @@ -61,7 +30,6 @@ Item Label { id: heading - anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width text: catalog.i18nc("@label", "Compatibility") wrapMode: Text.WordWrap @@ -73,8 +41,6 @@ Item TableView { id: table - anchors.top: heading.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height width: parent.width frameVisible: false @@ -155,32 +121,32 @@ Item TableViewColumn { role: "machine" - title: "Machine" + title: catalog.i18nc("@label:table_header", "Machine") width: Math.floor(table.width * 0.25) delegate: columnTextDelegate } TableViewColumn { role: "print_core" - title: "Print Core" + title: "Print Core" //This term should not be translated. width: Math.floor(table.width * 0.2) } TableViewColumn { role: "build_plate" - title: "Build Plate" + title: catalog.i18nc("@label:table_header", "Build Plate") width: Math.floor(table.width * 0.225) } TableViewColumn { role: "support_material" - title: "Support" + title: catalog.i18nc("@label:table_header", "Support") width: Math.floor(table.width * 0.225) } TableViewColumn { role: "quality" - title: "Quality" + title: catalog.i18nc("@label:table_header", "Quality") width: Math.floor(table.width * 0.1) } } @@ -188,13 +154,14 @@ Item Label { - id: data_sheet_links - anchors.top: combatibilityItem.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height / 2 + id: dataSheetLinks + anchors.top: compatibilityItem.bottom + anchors.topMargin: UM.Theme.getSize("narrow_margin").height visible: base.technicalDataSheetUrl !== undefined || - base.safetyDataSheetUrl !== undefined || base.printingGuidelinesUrl !== undefined || - base.materialWebsiteUrl !== undefined - height: visible ? contentHeight : 0 + base.safetyDataSheetUrl !== undefined || + base.printingGuidelinesUrl !== undefined || + base.materialWebsiteUrl !== undefined + text: { var result = "" diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml b/plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml similarity index 82% rename from plugins/Toolbox/resources/qml/ToolboxDetailList.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml index 4e44ea7d0b..22c6b6045f 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDetailList.qml @@ -1,9 +1,8 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import UM 1.1 as UM Item @@ -11,10 +10,9 @@ Item id: detailList ScrollView { - frameVisible: false + clip: true anchors.fill: detailList - style: UM.Theme.styles.scrollview - flickableItem.flickableDirection: Flickable.VerticalFlick + Column { anchors diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml similarity index 72% rename from plugins/Toolbox/resources/qml/ToolboxDetailTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml index c7bb1f60ac..5badc6b66d 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDetailTile.qml @@ -1,30 +1,30 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 2.3 + import UM 1.1 as UM Item { id: tile width: detailList.width - UM.Theme.getSize("wide_margin").width - height: normalData.height + compatibilityChart.height + 4 * UM.Theme.getSize("default_margin").height - Item + height: normalData.height + 2 * UM.Theme.getSize("wide_margin").height + Column { id: normalData - height: childrenRect.height + anchors { + top: parent.top left: parent.left right: controls.left - rightMargin: UM.Theme.getSize("default_margin").width * 2 + UM.Theme.getSize("toolbox_loader").width - top: parent.top + rightMargin: UM.Theme.getSize("wide_margin").width } + Label { - id: packageName width: parent.width height: UM.Theme.getSize("toolbox_property_label").height text: model.name @@ -33,9 +33,9 @@ Item font: UM.Theme.getFont("medium_bold") renderType: Text.NativeRendering } + Label { - anchors.top: packageName.bottom width: parent.width text: model.description maximumLineCount: 25 @@ -45,6 +45,12 @@ Item font: UM.Theme.getFont("default") renderType: Text.NativeRendering } + + ToolboxCompatibilityChart + { + width: parent.width + packageData: model + } } ToolboxDetailTileActions @@ -57,20 +63,12 @@ Item packageData: model } - ToolboxCompatibilityChart - { - id: compatibilityChart - anchors.top: normalData.bottom - width: normalData.width - packageData: model - } - Rectangle { color: UM.Theme.getColor("lining") width: tile.width height: UM.Theme.getSize("default_lining").height - anchors.top: compatibilityChart.bottom + anchors.top: normalData.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height + UM.Theme.getSize("wide_margin").height //Normal margin for spacing after chart, wide margin between items. } } diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml b/plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml similarity index 97% rename from plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml index 2b86aacefc..dfe91edbf6 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDetailTileActions.qml @@ -35,7 +35,7 @@ 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 diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml similarity index 93% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml index a9fcb39b28..6682281a31 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGrid.qml @@ -2,9 +2,7 @@ // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.3 import UM 1.1 as UM Column diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml similarity index 97% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml index 73dd593336..78cdf1562a 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsGridTile.qml @@ -67,7 +67,7 @@ Item width: UM.Theme.getSize("toolbox_thumbnail_small").width - UM.Theme.getSize("wide_margin").width height: UM.Theme.getSize("toolbox_thumbnail_small").height - UM.Theme.getSize("wide_margin").width fillMode: Image.PreserveAspectFit - source: model.icon_url || "../images/logobot.svg" + source: model.icon_url || "../../images/logobot.svg" mipmap: true } UM.RecolorImage @@ -82,7 +82,7 @@ Item sourceSize.height: height visible: installedPackages != 0 color: (installedPackages >= packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") - source: "../images/installed_check.svg" + source: "../../images/installed_check.svg" } } Item diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml similarity index 97% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml index 89348b18de..f6e32b2d84 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcaseTile.qml @@ -23,7 +23,7 @@ Rectangle height: UM.Theme.getSize("toolbox_thumbnail_large").height - 4 * UM.Theme.getSize("default_margin").height width: UM.Theme.getSize("toolbox_thumbnail_large").height - 4 * UM.Theme.getSize("default_margin").height fillMode: Image.PreserveAspectFit - source: model.icon_url || "../images/logobot.svg" + source: model.icon_url || "../../images/logobot.svg" mipmap: true anchors { @@ -62,7 +62,7 @@ Rectangle } visible: installedPackages != 0 color: (installedPackages >= packageCount) ? UM.Theme.getColor("primary") : UM.Theme.getColor("border") - source: "../images/installed_check.svg" + source: "../../images/installed_check.svg" } SmallRatingWidget diff --git a/plugins/Toolbox/resources/qml/ToolboxFooter.qml b/plugins/Toolbox/resources/qml/components/ToolboxFooter.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxFooter.qml rename to plugins/Toolbox/resources/qml/components/ToolboxFooter.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxHeader.qml b/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxHeader.qml rename to plugins/Toolbox/resources/qml/components/ToolboxHeader.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml similarity index 98% rename from plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml rename to plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml index e47cde1bf4..f85a1056b7 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml +++ b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTile.qml @@ -41,7 +41,7 @@ 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 diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml b/plugins/Toolbox/resources/qml/components/ToolboxInstalledTileActions.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml rename to plugins/Toolbox/resources/qml/components/ToolboxInstalledTileActions.qml diff --git a/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml b/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml new file mode 100644 index 0000000000..40d6c1af47 --- /dev/null +++ b/plugins/Toolbox/resources/qml/components/ToolboxProgressButton.qml @@ -0,0 +1,60 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.1 as UM +import Cura 1.0 as Cura + + +Cura.PrimaryButton +{ + id: button + + property var active: false + property var complete: false + + property var readyLabel: catalog.i18nc("@action:button", "Install") + property var activeLabel: catalog.i18nc("@action:button", "Cancel") + property var completeLabel: catalog.i18nc("@action:button", "Installed") + + signal readyAction() // Action when button is ready and clicked (likely install) + signal activeAction() // Action when button is active and clicked (likely cancel) + signal completeAction() // Action when button is complete and clicked (likely go to installed) + + width: UM.Theme.getSize("toolbox_action_button").width + height: UM.Theme.getSize("toolbox_action_button").height + fixedWidthMode: true + text: + { + if (complete) + { + return completeLabel + } + else if (active) + { + return activeLabel + } + else + { + return readyLabel + } + } + onClicked: + { + if (complete) + { + completeAction() + } + else if (active) + { + activeAction() + } + else + { + readyAction() + } + } + busy: active +} diff --git a/plugins/Toolbox/resources/qml/ToolboxShadow.qml b/plugins/Toolbox/resources/qml/components/ToolboxShadow.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxShadow.qml rename to plugins/Toolbox/resources/qml/components/ToolboxShadow.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml b/plugins/Toolbox/resources/qml/components/ToolboxTabButton.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxTabButton.qml rename to plugins/Toolbox/resources/qml/components/ToolboxTabButton.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml b/plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml similarity index 96% rename from plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml rename to plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml index 81649fdfef..1b5e4d1d46 100644 --- a/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/ToolboxConfirmUninstallResetDialog.qml @@ -14,7 +14,7 @@ import Cura 1.0 as Cura UM.Dialog { - // This dialog asks the user whether he/she wants to open a project file as a project or import models. + // This dialog asks the user to confirm he/she wants to uninstall materials/pprofiles which are currently in use id: base title: catalog.i18nc("@title:window", "Confirm uninstall") + toolbox.pluginToUninstall diff --git a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml b/plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml similarity index 90% rename from plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml rename to plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml index 40b22c268d..f7edde1fff 100644 --- a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml +++ b/plugins/Toolbox/resources/qml/dialogs/ToolboxLicenseDialog.qml @@ -30,7 +30,7 @@ UM.Dialog anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right - text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") + text: licenseDialog.pluginName + ": " + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") wrapMode: Text.Wrap renderType: Text.NativeRendering } diff --git a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml similarity index 98% rename from plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml index 08ac1f83a5..d1abe48de1 100644 --- a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxAuthorPage.qml @@ -6,6 +6,8 @@ import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import UM 1.1 as UM +import "../components" + Item { id: page @@ -31,7 +33,7 @@ Item width: UM.Theme.getSize("toolbox_thumbnail_medium").width height: UM.Theme.getSize("toolbox_thumbnail_medium").height fillMode: Image.PreserveAspectFit - source: details.icon_url || "../images/logobot.svg" + source: details.icon_url || "../../images/logobot.svg" mipmap: true anchors { diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml similarity index 98% rename from plugins/Toolbox/resources/qml/ToolboxDetailPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml index fef2732af9..6d34e23f42 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxDetailPage.qml @@ -8,6 +8,8 @@ import UM 1.1 as UM import Cura 1.1 as Cura +import "../components" + Item { id: page @@ -44,7 +46,7 @@ Item { anchors.fill: parent fillMode: Image.PreserveAspectFit - source: details === null ? "" : (details.icon_url || "../images/logobot.svg") + source: details === null ? "" : (details.icon_url || "../../images/logobot.svg") mipmap: true } } @@ -89,6 +91,7 @@ Item Label { text: catalog.i18nc("@label", "Your rating") + ":" + visible: details.type == "plugin" font: UM.Theme.getFont("default") color: UM.Theme.getColor("text_medium") renderType: Text.NativeRendering diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml similarity index 53% rename from plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml index 3e0dda4f4a..9be8cbe2b9 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxDownloadsPage.qml @@ -1,25 +1,24 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import UM 1.1 as UM +import "../components" + ScrollView { - frameVisible: false + clip: true width: parent.width height: parent.height - style: UM.Theme.styles.scrollview - - flickableItem.flickableDirection: Flickable.VerticalFlick + contentHeight: mainColumn.height Column { + id: mainColumn width: base.width spacing: UM.Theme.getSize("default_margin").height - height: childrenRect.height ToolboxDownloadsShowcase { @@ -31,14 +30,14 @@ ScrollView { id: allPlugins width: parent.width - heading: toolbox.viewCategory == "material" ? catalog.i18nc("@label", "Community Contributions") : catalog.i18nc("@label", "Community Plugins") - model: toolbox.viewCategory == "material" ? toolbox.materialsAvailableModel : toolbox.pluginsAvailableModel + heading: toolbox.viewCategory === "material" ? catalog.i18nc("@label", "Community Contributions") : catalog.i18nc("@label", "Community Plugins") + model: toolbox.viewCategory === "material" ? toolbox.materialsAvailableModel : toolbox.pluginsAvailableModel } ToolboxDownloadsGrid { id: genericMaterials - visible: toolbox.viewCategory == "material" + visible: toolbox.viewCategory === "material" width: parent.width heading: catalog.i18nc("@label", "Generic Materials") model: toolbox.materialsGenericModel diff --git a/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxErrorPage.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxErrorPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxErrorPage.qml diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml similarity index 72% rename from plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml index 0c43c67679..99590c712c 100644 --- a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml +++ b/plugins/Toolbox/resources/qml/pages/ToolboxInstalledPage.qml @@ -1,50 +1,52 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Toolbox is released under the terms of the LGPLv3 or higher. import QtQuick 2.10 -import QtQuick.Dialogs 1.1 -import QtQuick.Window 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls 2.3 import UM 1.1 as UM +import "../components" + ScrollView { id: page - frameVisible: false + clip: true width: parent.width height: parent.height - style: UM.Theme.styles.scrollview - flickableItem.flickableDirection: Flickable.VerticalFlick Column { + width: page.width spacing: UM.Theme.getSize("default_margin").height + padding: UM.Theme.getSize("wide_margin").width visible: toolbox.pluginsInstalledModel.items.length > 0 - height: childrenRect.height + 4 * UM.Theme.getSize("default_margin").height - - anchors - { - right: parent.right - left: parent.left - margins: UM.Theme.getSize("default_margin").width - top: parent.top - } + height: childrenRect.height + 2 * UM.Theme.getSize("wide_margin").height Label { - width: page.width + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } text: catalog.i18nc("@title:tab", "Plugins") color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("large") renderType: Text.NativeRendering } + Rectangle { + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } id: installedPlugins color: "transparent" - width: parent.width height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width @@ -65,8 +67,15 @@ ScrollView } } } + Label { + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } text: catalog.i18nc("@title:tab", "Materials") color: UM.Theme.getColor("text_medium") font: UM.Theme.getFont("medium") @@ -75,9 +84,14 @@ ScrollView Rectangle { + anchors + { + left: parent.left + right: parent.right + margins: parent.padding + } id: installedMaterials color: "transparent" - width: parent.width height: childrenRect.height + UM.Theme.getSize("default_margin").width border.color: UM.Theme.getColor("lining") border.width: UM.Theme.getSize("default_lining").width diff --git a/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml b/plugins/Toolbox/resources/qml/pages/ToolboxLoadingPage.qml similarity index 100% rename from plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml rename to plugins/Toolbox/resources/qml/pages/ToolboxLoadingPage.qml diff --git a/plugins/Toolbox/resources/qml/pages/WelcomePage.qml b/plugins/Toolbox/resources/qml/pages/WelcomePage.qml new file mode 100644 index 0000000000..cbfdf8f402 --- /dev/null +++ b/plugins/Toolbox/resources/qml/pages/WelcomePage.qml @@ -0,0 +1,53 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Window 2.2 + +import UM 1.3 as UM +import Cura 1.1 as Cura + +Column +{ + id: welcomePage + spacing: UM.Theme.getSize("wide_margin").height + width: parent.width + height: childrenRect.height + anchors.centerIn: parent + + Image + { + id: profileImage + fillMode: Image.PreserveAspectFit + source: "../../images/logobot.svg" + anchors.horizontalCenter: parent.horizontalCenter + width: Math.round(parent.width / 4) + } + + Label + { + id: welcomeTextLabel + text: catalog.i18nc("@description", "Get plugins and materials verified by Ultimaker") + width: Math.round(parent.width / 2) + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + anchors.horizontalCenter: parent.horizontalCenter + wrapMode: Label.WordWrap + renderType: Text.NativeRendering + } + + Cura.PrimaryButton + { + id: loginButton + width: UM.Theme.getSize("account_button").width + height: UM.Theme.getSize("account_button").height + anchors.horizontalCenter: parent.horizontalCenter + text: catalog.i18nc("@button", "Sign in") + onClicked: Cura.API.account.login() + fixedWidthMode: true + } +} + diff --git a/plugins/Toolbox/src/ConfigsModel.py b/plugins/Toolbox/src/ConfigsModel.py index dd54d53d93..9ba65caaa4 100644 --- a/plugins/Toolbox/src/ConfigsModel.py +++ b/plugins/Toolbox/src/ConfigsModel.py @@ -1,11 +1,10 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import re -from typing import Dict from PyQt5.QtCore import Qt, pyqtProperty from UM.Qt.ListModel import ListModel + ## Model that holds supported configurations (for material/quality packages). class ConfigsModel(ListModel): def __init__(self, parent = None): diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py index 698fdbd795..27197275b8 100644 --- a/plugins/Toolbox/src/Toolbox.py +++ b/plugins/Toolbox/src/Toolbox.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Toolbox is released under the terms of the LGPLv3 or higher. import json @@ -19,6 +19,7 @@ from UM.Version import Version from cura import ApplicationMetadata from cura import UltimakerCloudAuthentication from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from .AuthorsModel import AuthorsModel from .PackagesModel import PackagesModel @@ -47,7 +48,7 @@ class Toolbox(QObject, Extension): self._download_progress = 0 # type: float self._is_downloading = False # type: bool self._network_manager = None # type: Optional[QNetworkAccessManager] - self._request_headers = [] # type: List[Tuple[bytes, bytes]] + self._request_headers = [] # type: List[Tuple[bytes, bytes]] self._updateRequestHeader() self._request_urls = {} # type: Dict[str, QUrl] @@ -58,13 +59,15 @@ class Toolbox(QObject, Extension): # The responses as given by the server parsed to a list. self._server_response_data = { "authors": [], - "packages": [] + "packages": [], + "updates": [], } # type: Dict[str, List[Any]] # Models: self._models = { "authors": AuthorsModel(self), "packages": PackagesModel(self), + "updates": PackagesModel(self), } # type: Dict[str, Union[AuthorsModel, PackagesModel]] self._plugins_showcase_model = PackagesModel(self) @@ -85,7 +88,7 @@ class Toolbox(QObject, Extension): # View page defines which type of page layout to use. For example, # possible values include "overview", "detail" or "author". - self._view_page = "loading" # type: str + self._view_page = "welcome" # type: str # Active package refers to which package is currently being downloaded, # installed, or otherwise modified. @@ -104,7 +107,6 @@ class Toolbox(QObject, Extension): self._restart_dialog_message = "" # type: str self._application.initializationFinished.connect(self._onAppInitialized) - self._application.getCuraAPI().account.loginStateChanged.connect(self._updateRequestHeader) self._application.getCuraAPI().account.accessTokenChanged.connect(self._updateRequestHeader) # Signals: @@ -125,6 +127,16 @@ class Toolbox(QObject, Extension): showLicenseDialog = pyqtSignal() uninstallVariablesChanged = pyqtSignal() + ## Go back to the start state (welcome screen or loading if no login required) + def _restart(self): + self._updateRequestHeader() + # For an Essentials build, login is mandatory + if not self._application.getCuraAPI().account.isLoggedIn and ApplicationMetadata.IsEnterpriseVersion: + self.setViewPage("welcome") + else: + self.setViewPage("loading") + self._fetchPackageData() + def _updateRequestHeader(self): self._request_headers = [ (b"User-Agent", @@ -185,18 +197,27 @@ class Toolbox(QObject, Extension): cloud_api_version = self._cloud_api_version, sdk_version = self._sdk_version ) + + # We need to construct a query like installed_packages=ID:VERSION&installed_packages=ID:VERSION, etc. + installed_package_ids_with_versions = [":".join(items) for items in + self._package_manager.getAllInstalledPackageIdsAndVersions()] + installed_packages_query = "&installed_packages=".join(installed_package_ids_with_versions) + self._request_urls = { "authors": QUrl("{base_url}/authors".format(base_url = self._api_url)), - "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)) + "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)), + "updates": QUrl("{base_url}/packages/package-updates?installed_packages={query}".format( + base_url = self._api_url, query = installed_packages_query)) } - # Request the latest and greatest! - self._fetchPackageData() + self._application.getCuraAPI().account.loginStateChanged.connect(self._restart) - 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. + # On boot we check which packages have updates. + if CuraApplication.getInstance().getPreferences().getValue("info/automatic_update_check") and len(installed_package_ids_with_versions) > 0: + # Request the latest and greatest! + self._fetchPackageUpdates() + + def _prepareNetworkManager(self): if self._network_manager is not None: self._network_manager.finished.disconnect(self._onRequestFinished) self._network_manager.networkAccessibleChanged.disconnect(self._onNetworkAccessibleChanged) @@ -204,16 +225,21 @@ class Toolbox(QObject, Extension): self._network_manager.finished.connect(self._onRequestFinished) self._network_manager.networkAccessibleChanged.connect(self._onNetworkAccessibleChanged) + def _fetchPackageUpdates(self): + self._prepareNetworkManager() + self._makeRequestByType("updates") + + def _fetchPackageData(self): + self._prepareNetworkManager() # Make remote requests: self._makeRequestByType("packages") self._makeRequestByType("authors") - # Gather installed packages: self._updateInstalledModels() + # Displays the toolbox @pyqtSlot() - def browsePackages(self) -> None: - self._fetchPackageData() + def launch(self) -> None: if not self._dialog: self._dialog = self._createDialog("Toolbox.qml") @@ -222,6 +248,8 @@ class Toolbox(QObject, Extension): Logger.log("e", "Unexpected error trying to create the 'Marketplace' dialog.") return + self._restart() + self._dialog.show() # Apply enabled/disabled state to installed plugins @@ -233,7 +261,7 @@ class Toolbox(QObject, Extension): if not plugin_path: return None path = os.path.join(plugin_path, "resources", "qml", qml_name) - + dialog = self._application.createQmlComponent(path, {"toolbox": self}) if not dialog: raise Exception("Failed to create Marketplace dialog") @@ -327,7 +355,7 @@ class Toolbox(QObject, Extension): self._package_used_qualities = package_used_qualities # Ask change to default material / profile if self._confirm_reset_dialog is None: - self._confirm_reset_dialog = self._createDialog("ToolboxConfirmUninstallResetDialog.qml") + self._confirm_reset_dialog = self._createDialog("dialogs/ToolboxConfirmUninstallResetDialog.qml") self.uninstallVariablesChanged.emit() if self._confirm_reset_dialog is None: Logger.log("e", "ToolboxConfirmUninstallResetDialog should have been initialized, but it is not. Not showing dialog and not uninstalling package.") @@ -359,15 +387,22 @@ class Toolbox(QObject, Extension): @pyqtSlot() def resetMaterialsQualitiesAndUninstall(self) -> None: application = CuraApplication.getInstance() - material_manager = application.getMaterialManager() - quality_manager = application.getQualityManager() machine_manager = application.getMachineManager() + container_tree = ContainerTree.getInstance() for global_stack, extruder_nr, container_id in self._package_used_materials: - default_material_node = material_manager.getDefaultMaterial(global_stack, extruder_nr, global_stack.extruders[extruder_nr].variant.getName()) + extruder = global_stack.extruderList[int(extruder_nr)] + approximate_diameter = extruder.getApproximateMaterialDiameter() + variant_node = container_tree.machines[global_stack.definition.getId()].variants[extruder.variant.getName()] + default_material_node = variant_node.preferredMaterial(approximate_diameter) machine_manager.setMaterial(extruder_nr, default_material_node, global_stack = global_stack) for global_stack, extruder_nr, container_id in self._package_used_qualities: - default_quality_group = quality_manager.getDefaultQualityType(global_stack) + variant_names = [extruder.variant.getName() for extruder in global_stack.extruderList] + material_bases = [extruder.material.getMetaDataEntry("base_file") for extruder in global_stack.extruderList] + extruder_enabled = [extruder.isEnabled for extruder in global_stack.extruderList] + definition_id = global_stack.definition.getId() + machine_node = container_tree.machines[definition_id] + default_quality_group = machine_node.getQualityGroups(variant_names, material_bases, extruder_enabled)[machine_node.preferred_quality_type] machine_manager.setQualityGroup(default_quality_group, global_stack = global_stack) if self._package_id_to_uninstall is not None: @@ -610,7 +645,7 @@ class Toolbox(QObject, Extension): if not self._models[response_type]: Logger.log("e", "Could not find the %s model.", response_type) break - + self._server_response_data[response_type] = json_data["data"] self._models[response_type].setMetadata(self._server_response_data[response_type]) @@ -622,6 +657,10 @@ class Toolbox(QObject, Extension): elif response_type == "authors": self._models[response_type].setFilter({"package_types": "material"}) self._models[response_type].setFilter({"tags": "generic"}) + elif response_type == "updates": + # Tell the package manager that there's a new set of updates available. + packages = set([pkg["package_id"] for pkg in self._server_response_data[response_type]]) + self._package_manager.setPackagesWithUpdate(packages) self.metadataChanged.emit() @@ -652,11 +691,15 @@ class Toolbox(QObject, Extension): self.setIsDownloading(False) self._download_reply = cast(QNetworkReply, self._download_reply) self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) - + # Check if the download was sucessfull if self._download_reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("w", "Failed to download package. The following error was returned: %s", json.loads(bytes(self._download_reply.readAll()).decode("utf-8"))) - return + try: + Logger.log("w", "Failed to download package. The following error was returned: %s", json.loads(bytes(self._download_reply.readAll()).decode("utf-8"))) + except json.decoder.JSONDecodeError: + Logger.logException("w", "Failed to download package and failed to parse a response from it") + finally: + return # Must not delete the temporary file on Windows self._temp_plugin_file = tempfile.NamedTemporaryFile(mode = "w+b", suffix = ".curapackage", delete = False) file_path = self._temp_plugin_file.name diff --git a/plugins/TrimeshReader/TrimeshReader.py b/plugins/TrimeshReader/TrimeshReader.py new file mode 100644 index 0000000000..91f8423579 --- /dev/null +++ b/plugins/TrimeshReader/TrimeshReader.py @@ -0,0 +1,161 @@ +# Copyright (c) 2019 Ultimaker B.V., fieldOfView +# Cura is released under the terms of the LGPLv3 or higher. + +# The _toMeshData function is taken from the AMFReader class which was built by fieldOfView. + +from typing import Any, List, Union, TYPE_CHECKING +import numpy # To create the mesh data. +import os.path # To create the mesh name for the resulting mesh. +import trimesh # To load the files into a Trimesh. + +from UM.Mesh.MeshData import MeshData, calculateNormalsFromIndexedVertices # To construct meshes from the Trimesh data. +from UM.Mesh.MeshReader import MeshReader # The plug-in type we're extending. +from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType # To add file types that we can open. +from UM.Scene.GroupDecorator import GroupDecorator # Added to the parent node if we load multiple nodes at once. + +from cura.CuraApplication import CuraApplication +from cura.Scene.BuildPlateDecorator import BuildPlateDecorator # Added to the resulting scene node. +from cura.Scene.ConvexHullDecorator import ConvexHullDecorator # Added to group nodes if we load multiple nodes at once. +from cura.Scene.CuraSceneNode import CuraSceneNode # To create a node in the scene after reading the file. +from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator # Added to the resulting scene node. + +if TYPE_CHECKING: + from UM.Scene.SceneNode import SceneNode + +## Class that leverages Trimesh to import files. +class TrimeshReader(MeshReader): + def __init__(self) -> None: + super().__init__() + + self._supported_extensions = [".ctm", ".dae", ".gltf", ".glb", ".ply", ".zae"] + MimeTypeDatabase.addMimeType( + MimeType( + name = "application/x-ctm", + comment = "Open Compressed Triangle Mesh", + suffixes = ["ctm"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/vnd.collada+xml", + comment = "COLLADA Digital Asset Exchange", + suffixes = ["dae"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/gltf-binary", + comment = "glTF Binary", + suffixes = ["glb"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/gltf+json", + comment = "glTF Embedded JSON", + suffixes = ["gltf"] + ) + ) + # Trimesh seems to have a bug when reading .off files. + #MimeTypeDatabase.addMimeType( + # MimeType( + # name = "application/x-off", + # comment = "Geomview Object File Format", + # suffixes = ["off"] + # ) + #) + MimeTypeDatabase.addMimeType( + MimeType( + name = "application/x-ply", # Wikipedia lists the MIME type as "text/plain" but that won't do as it's not unique to PLY files. + comment = "Stanford Triangle Format", + suffixes = ["ply"] + ) + ) + MimeTypeDatabase.addMimeType( + MimeType( + name = "model/vnd.collada+xml+zip", + comment = "Compressed COLLADA Digital Asset Exchange", + suffixes = ["zae"] + ) + ) + + ## Reads a file using Trimesh. + # \param file_name The file path. This is assumed to be one of the file + # types that Trimesh can read. It will not be checked again. + # \return A scene node that contains the file's contents. + def _read(self, file_name: str) -> Union["SceneNode", List["SceneNode"]]: + # CURA-6739 + # GLTF files are essentially JSON files. If you directly give a file name to trimesh.load(), it will + # try to figure out the format, but for GLTF, it loads it as a binary file with flags "rb", and the json.load() + # doesn't like it. For some reason, this seems to happen with 3.5.7, but not 3.7.1. Below is a workaround to + # pass a file object that has been opened with "r" instead "rb" to load a GLTF file. + if file_name.lower().endswith(".gltf"): + mesh_or_scene = trimesh.load(open(file_name, "r", encoding = "utf-8"), file_type = "gltf") + else: + mesh_or_scene = trimesh.load(file_name) + + meshes = [] # type: List[Union[trimesh.Trimesh, trimesh.Scene, Any]] + if isinstance(mesh_or_scene, trimesh.Trimesh): + meshes = [mesh_or_scene] + elif isinstance(mesh_or_scene, trimesh.Scene): + meshes = [mesh for mesh in mesh_or_scene.geometry.values()] + + active_build_plate = CuraApplication.getInstance().getMultiBuildPlateModel().activeBuildPlate + nodes = [] # type: List[SceneNode] + for mesh in meshes: + if not isinstance(mesh, trimesh.Trimesh): # Trimesh can also receive point clouds, 2D paths, 3D paths or metadata. Skip those. + continue + mesh.merge_vertices() + mesh.remove_unreferenced_vertices() + mesh.fix_normals() + mesh_data = self._toMeshData(mesh) + + file_base_name = os.path.basename(file_name) + new_node = CuraSceneNode() + new_node.setMeshData(mesh_data) + new_node.setSelectable(True) + new_node.setName(file_base_name if len(meshes) == 1 else "{file_base_name} {counter}".format(file_base_name = file_base_name, counter = str(len(nodes) + 1))) + new_node.addDecorator(BuildPlateDecorator(active_build_plate)) + new_node.addDecorator(SliceableObjectDecorator()) + nodes.append(new_node) + + if len(nodes) == 1: + return nodes[0] + # Add all nodes to a group so they stay together. + group_node = CuraSceneNode() + group_node.addDecorator(GroupDecorator()) + group_node.addDecorator(ConvexHullDecorator()) + group_node.addDecorator(BuildPlateDecorator(active_build_plate)) + for node in nodes: + node.setParent(group_node) + return group_node + + ## Converts a Trimesh to Uranium's MeshData. + # \param tri_node A Trimesh containing the contents of a file that was + # just read. + # \return Mesh data from the Trimesh in a way that Uranium can understand + # it. + def _toMeshData(self, tri_node: trimesh.base.Trimesh) -> MeshData: + tri_faces = tri_node.faces + tri_vertices = tri_node.vertices + + indices = [] + vertices = [] + + index_count = 0 + face_count = 0 + for tri_face in tri_faces: + face = [] + for tri_index in tri_face: + vertices.append(tri_vertices[tri_index]) + face.append(index_count) + index_count += 1 + indices.append(face) + face_count += 1 + + vertices = numpy.asarray(vertices, dtype = numpy.float32) + indices = numpy.asarray(indices, dtype = numpy.int32) + normals = calculateNormalsFromIndexedVertices(vertices, indices, face_count) + + mesh_data = MeshData(vertices = vertices, indices = indices, normals = normals) + return mesh_data \ No newline at end of file diff --git a/plugins/TrimeshReader/__init__.py b/plugins/TrimeshReader/__init__.py new file mode 100644 index 0000000000..8a267a7bc0 --- /dev/null +++ b/plugins/TrimeshReader/__init__.py @@ -0,0 +1,46 @@ +# Copyright (c) 2019 Ultimaker +# Cura is released under the terms of the LGPLv3 or higher. + +from . import TrimeshReader + +from UM.i18n import i18nCatalog +i18n_catalog = i18nCatalog("uranium") + + +def getMetaData(): + return { + "mesh_reader": [ + { + "extension": "ctm", + "description": i18n_catalog.i18nc("@item:inlistbox 'Open' is part of the name of this file format.", "Open Compressed Triangle Mesh") + }, + { + "extension": "dae", + "description": i18n_catalog.i18nc("@item:inlistbox", "COLLADA Digital Asset Exchange") + }, + { + "extension": "glb", + "description": i18n_catalog.i18nc("@item:inlistbox", "glTF Binary") + }, + { + "extension": "gltf", + "description": i18n_catalog.i18nc("@item:inlistbox", "glTF Embedded JSON") + }, + # Trimesh seems to have a bug when reading OFF files. + #{ + # "extension": "off", + # "description": i18n_catalog.i18nc("@item:inlistbox", "Geomview Object File Format") + #}, + { + "extension": "ply", + "description": i18n_catalog.i18nc("@item:inlistbox", "Stanford Triangle Format") + }, + { + "extension": "zae", + "description": i18n_catalog.i18nc("@item:inlistbox", "Compressed COLLADA Digital Asset Exchange") + } + ] + } + +def register(app): + return {"mesh_reader": TrimeshReader.TrimeshReader()} diff --git a/plugins/TrimeshReader/plugin.json b/plugins/TrimeshReader/plugin.json new file mode 100644 index 0000000000..dbe937b01d --- /dev/null +++ b/plugins/TrimeshReader/plugin.json @@ -0,0 +1,7 @@ +{ + "name": "Trimesh Reader", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Provides support for reading model files.", + "api": "7.0.0" +} diff --git a/plugins/UFPReader/UFPReader.py b/plugins/UFPReader/UFPReader.py index 18527e6450..71061f938b 100644 --- a/plugins/UFPReader/UFPReader.py +++ b/plugins/UFPReader/UFPReader.py @@ -39,4 +39,4 @@ class UFPReader(MeshReader): # Open the GCodeReader to parse the data gcode_reader = PluginRegistry.getInstance().getPluginObject("GCodeReader") # type: ignore gcode_reader.preReadFromStream(gcode_stream) # type: ignore - return gcode_reader.readFromStream(gcode_stream) # type: ignore + return gcode_reader.readFromStream(gcode_stream, file_name) # type: ignore diff --git a/plugins/UFPReader/plugin.json b/plugins/UFPReader/plugin.json index b56b555b36..a88a9c3ab0 100644 --- a/plugins/UFPReader/plugin.json +++ b/plugins/UFPReader/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.0", "description": "Provides support for reading Ultimaker Format Packages.", - "supported_sdk_versions": ["6.0.0"], + "supported_sdk_versions": ["7.0.0"], "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/UFPWriter/UFPWriter.py b/plugins/UFPWriter/UFPWriter.py index 2aece1092a..e085adfd47 100644 --- a/plugins/UFPWriter/UFPWriter.py +++ b/plugins/UFPWriter/UFPWriter.py @@ -1,4 +1,4 @@ -#Copyright (c) 2018 Ultimaker B.V. +#Copyright (c) 2019 Ultimaker B.V. #Cura is released under the terms of the LGPLv3 or higher. from typing import cast @@ -7,13 +7,13 @@ from Charon.VirtualFile import VirtualFile #To open UFP files. from Charon.OpenMode import OpenMode #To indicate that we want to write to UFP files. from io import StringIO #For converting g-code to bytes. -from UM.Application import Application from UM.Logger import Logger from UM.Mesh.MeshWriter import MeshWriter #The writer we need to implement. from UM.MimeTypeDatabase import MimeTypeDatabase, MimeType from UM.PluginRegistry import PluginRegistry #To get the g-code writer. from PyQt5.QtCore import QBuffer +from cura.CuraApplication import CuraApplication from cura.Snapshot import Snapshot from cura.Utils.Threading import call_on_qt_thread @@ -38,7 +38,11 @@ class UFPWriter(MeshWriter): def _createSnapshot(self, *args): # must be called from the main thread because of OpenGL Logger.log("d", "Creating thumbnail image...") - self._snapshot = Snapshot.snapshot(width = 300, height = 300) + try: + self._snapshot = Snapshot.snapshot(width = 300, height = 300) + except Exception: + Logger.logException("w", "Failed to create snapshot image") + self._snapshot = None # Failing to create thumbnail should not fail creation of UFP # This needs to be called on the main thread (Qt thread) because the serialization of material containers can # trigger loading other containers. Because those loaded containers are QtObjects, they must be created on the @@ -79,9 +83,9 @@ class UFPWriter(MeshWriter): Logger.log("d", "Thumbnail not created, cannot save it") # Store the material. - application = Application.getInstance() + application = CuraApplication.getInstance() machine_manager = application.getMachineManager() - material_manager = application.getMaterialManager() + container_registry = application.getContainerRegistry() global_stack = machine_manager.activeMachine material_extension = "xml.fdm_material" @@ -107,12 +111,12 @@ class UFPWriter(MeshWriter): continue material_root_id = material.getMetaDataEntry("base_file") - material_group = material_manager.getMaterialGroup(material_root_id) - if material_group is None: - Logger.log("e", "Cannot find material container with root id [%s]", material_root_id) + material_root_query = container_registry.findContainers(id = material_root_id) + if not material_root_query: + Logger.log("e", "Cannot find material container with root id {root_id}".format(root_id = material_root_id)) return False + material_container = material_root_query[0] - material_container = material_group.root_material_node.getContainer() try: serialized_material = material_container.serialize() except NotImplementedError: diff --git a/plugins/UFPWriter/plugin.json b/plugins/UFPWriter/plugin.json index 288d6acf77..35fd18f05e 100644 --- a/plugins/UFPWriter/plugin.json +++ b/plugins/UFPWriter/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides support for writing Ultimaker Format Packages.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/__init__.py b/plugins/UM3NetworkPrinting/__init__.py index 3da7795589..ea0f69639d 100644 --- a/plugins/UM3NetworkPrinting/__init__.py +++ b/plugins/UM3NetworkPrinting/__init__.py @@ -1,7 +1,7 @@ -# Copyright (c) 2017 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from .src import DiscoverUM3Action from .src import UM3OutputDevicePlugin +from .src import UltimakerNetworkedPrinterAction def getMetaData(): @@ -11,5 +11,5 @@ def getMetaData(): def register(app): return { "output_device": UM3OutputDevicePlugin.UM3OutputDevicePlugin(), - "machine_action": DiscoverUM3Action.DiscoverUM3Action() + "machine_action": UltimakerNetworkedPrinterAction.UltimakerNetworkedPrinterAction() } diff --git a/plugins/UM3NetworkPrinting/plugin.json b/plugins/UM3NetworkPrinting/plugin.json index 088b4dae6a..193ba63d83 100644 --- a/plugins/UM3NetworkPrinting/plugin.json +++ b/plugins/UM3NetworkPrinting/plugin.json @@ -1,8 +1,8 @@ { - "name": "UM3 Network Connection", + "name": "Ultimaker Network Connection", "author": "Ultimaker B.V.", - "description": "Manages network connections to Ultimaker 3 printers.", - "version": "1.0.1", - "api": "6.0", + "description": "Manages network connections to Ultimaker networked printers.", + "version": "2.0.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png b/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png new file mode 100644 index 0000000000..b6ce6e1273 Binary files /dev/null and b/plugins/UM3NetworkPrinting/resources/png/Ultimaker S3.png differ diff --git a/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml b/plugins/UM3NetworkPrinting/resources/qml/CameraButton.qml index 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 733f3fd13a..59a0148550 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml @@ -23,37 +23,13 @@ Cura.MachineAction 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; @@ -151,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: @@ -250,29 +211,10 @@ Cura.MachineAction renderType: Text.NativeRendering text: { - if(base.selectedDevice) - { - if (base.selectedDevice.printerType == "ultimaker3") - { - return "Ultimaker 3"; - } - else if (base.selectedDevice.printerType == "ultimaker3_extended") - { - return "Ultimaker 3 Extended"; - } - else if (base.selectedDevice.printerType == "ultimaker_s5") - { - return "Ultimaker S5"; - } - else - { - return catalog.i18nc("@label", "Unknown") // We have no idea what type it is. Should not happen 'in the field' - } - } - else - { - return "" + if (base.selectedDevice) { + return base.selectedDevice.printerTypeName } + return "" } } Label @@ -349,8 +291,8 @@ Cura.MachineAction MessageDialog { id: invalidIPAddressMessageDialog - x: (parent.x + (parent.width) / 2) | 0 - y: (parent.y + (parent.height) / 2) | 0 + x: parent ? (parent.x + (parent.width) / 2) : 0 + y: parent ? (parent.y + (parent.height) / 2) : 0 title: catalog.i18nc("@title:window", "Invalid IP address") text: catalog.i18nc("@text", "Please enter a valid IP address.") icon: StandardIcon.Warning @@ -386,7 +328,7 @@ Cura.MachineAction Label { - text: catalog.i18nc("@label", "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 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 619658a7eb..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 @@ -72,4 +72,4 @@ Item 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 d380915633..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 @@ -160,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 e91e8b04d2..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 @@ -29,4 +29,4 @@ Button 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 deed3ac5e6..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 @@ -86,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 @@ -99,4 +99,4 @@ Item 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 f6b84d69b2..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 @@ -50,4 +50,4 @@ Item 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 0d2c7f8beb..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 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 470eb84ac3..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 @@ -69,6 +64,7 @@ Item visible: printJob // FIXED-LINE-HEIGHT: + width: parent.width height: parent.height verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering @@ -80,6 +76,7 @@ Item anchors.verticalCenter: parent.verticalCenter height: 18 * screenScaleFactor // TODO: Theme! width: UM.Theme.getSize("monitor_column").width + Rectangle { color: UM.Theme.getColor("monitor_skeleton_loading") @@ -88,6 +85,7 @@ Item visible: !printJob radius: 2 * screenScaleFactor // TODO: Theme! } + Label { text: printJob ? OutputDevice.formatDuration(printJob.timeTotal) : "" @@ -183,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") @@ -217,7 +212,7 @@ Item } width: 32 * screenScaleFactor // TODO: Theme! height: 32 * screenScaleFactor // TODO: Theme! - enabled: !cloudConnection + enabled: OutputDevice.supportsPrintJobActions onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { @@ -247,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 e6d09b68f6..0a478c8543 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.3 @@ -20,7 +20,7 @@ Item property var printJob: null width: childrenRect.width - height: 18 * screenScaleFactor // TODO: Theme! + height: UM.Theme.getSize("monitor_text_line").height UM.ProgressBar { @@ -31,7 +31,7 @@ Item left: parent.left } value: printJob ? printJob.progress : 0 - width: UM.Theme.getSize("monitor_column").width + width: UM.Theme.getSize("monitor_progress_bar").width } Label @@ -40,16 +40,16 @@ Item anchors { left: progressBar.right - leftMargin: 18 * screenScaleFactor // TODO: Theme! + leftMargin: UM.Theme.getSize("monitor_margin").width verticalCenter: parent.verticalCenter } text: printJob ? Math.round(printJob.progress * 100) + "%" : "0%" color: printJob && printJob.isActive ? UM.Theme.getColor("monitor_text_primary") : UM.Theme.getColor("monitor_text_disabled") width: contentWidth - font: UM.Theme.getFont("medium") // 14pt, regular + font: UM.Theme.getFont("default") // 12pt, regular // FIXED-LINE-HEIGHT: - height: 18 * screenScaleFactor // TODO: Theme! + height: UM.Theme.getSize("monitor_text_line").height verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering } @@ -59,52 +59,52 @@ Item anchors { left: percentLabel.right - leftMargin: 18 * screenScaleFactor // TODO: Theme! + leftMargin: UM.Theme.getSize("monitor_margin").width verticalCenter: parent.verticalCenter } color: UM.Theme.getColor("monitor_text_primary") - font: UM.Theme.getFont("medium") // 14pt, regular + font: UM.Theme.getFont("default") text: { if (!printJob) { - return "" + return ""; } switch (printJob.state) { case "wait_cleanup": if (printJob.timeTotal > printJob.timeElapsed) { - return catalog.i18nc("@label:status", "Aborted") + return catalog.i18nc("@label:status", "Aborted"); } - return catalog.i18nc("@label:status", "Finished") + return catalog.i18nc("@label:status", "Finished"); case "finished": - return catalog.i18nc("@label:status", "Finished") + return catalog.i18nc("@label:status", "Finished"); case "sent_to_printer": - return catalog.i18nc("@label:status", "Preparing...") + return catalog.i18nc("@label:status", "Preparing..."); case "pre_print": - return catalog.i18nc("@label:status", "Preparing...") + return catalog.i18nc("@label:status", "Preparing..."); case "aborting": // NOTE: Doesn't exist but maybe should someday - return catalog.i18nc("@label:status", "Aborting...") + return catalog.i18nc("@label:status", "Aborting..."); case "aborted": // NOTE: Unused, see above - return catalog.i18nc("@label:status", "Aborted") + return catalog.i18nc("@label:status", "Aborted"); case "pausing": - return catalog.i18nc("@label:status", "Pausing...") + return catalog.i18nc("@label:status", "Pausing..."); case "paused": - return catalog.i18nc("@label:status", "Paused") + return catalog.i18nc("@label:status", "Paused"); case "resuming": - return catalog.i18nc("@label:status", "Resuming...") + return catalog.i18nc("@label:status", "Resuming..."); case "queued": - return catalog.i18nc("@label:status", "Action required") + return catalog.i18nc("@label:status", "Action required"); default: - return catalog.i18nc("@label:status", "Finishes %1 at %2".arg(OutputDevice.getDateCompleted( printJob.timeRemaining )).arg(OutputDevice.getTimeCompleted( printJob.timeRemaining ))) + return catalog.i18nc("@label:status", "Finishes %1 at %2".arg(OutputDevice.getDateCompleted(printJob.timeRemaining)).arg(OutputDevice.getTimeCompleted(printJob.timeRemaining))); } } width: contentWidth // FIXED-LINE-HEIGHT: - height: 18 * screenScaleFactor // TODO: Theme! + height: UM.Theme.getSize("monitor_text_line").height verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml index f4295ee18d..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 : "" @@ -135,6 +135,54 @@ 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 @@ -172,8 +220,7 @@ Item } width: 36 * screenScaleFactor // TODO: Theme! height: 36 * screenScaleFactor // TODO: Theme! - enabled: !cloudConnection - + enabled: OutputDevice.supportsPrintJobActions onClicked: enabled ? contextMenu.switchPopupState() : {} visible: { @@ -206,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 } @@ -244,7 +291,6 @@ Item } } - // Divider Rectangle { @@ -448,6 +494,25 @@ Item 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 } } @@ -456,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 584e336a80..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,9 +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 8460425190..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 @@ -42,7 +42,6 @@ Item } height: 18 * screenScaleFactor // TODO: Theme! width: childrenRect.width - visible: !cloudConnection UM.RecolorImage { @@ -65,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 } } @@ -73,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 @@ -98,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") @@ -111,6 +123,7 @@ Item height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering + visible: printJobList.count > 0 } Label @@ -126,6 +139,7 @@ Item height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering + visible: printJobList.count > 0 } Label @@ -141,6 +155,7 @@ Item height: 18 * screenScaleFactor // TODO: Theme! verticalAlignment: Text.AlignVCenter renderType: Text.NativeRendering + visible: printJobList.count > 0 } } @@ -172,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 } @@ -184,89 +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 - renderType: Text.NativeRendering - } - - 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 ff5635e45d..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 @@ -21,4 +21,4 @@ Button { 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 548e5ce1ea..6d9f375788 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml @@ -1,52 +1,57 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. - import QtQuick 2.2 import QtQuick.Window 2.2 import QtQuick.Controls 1.2 import UM 1.1 as UM UM.Dialog { + id: base; + title: catalog.i18nc("@title:window", "Print over network"); + width: minimumWidth; height: minimumHeight; - leftButtons: [ - Button { - enabled: true; - onClicked: { - base.visible = false; - printerSelectionCombobox.currentIndex = 0; - OutputDevice.cancelPrintSelection(); - } - text: catalog.i18nc("@action:button","Cancel"); - } - ] maximumHeight: minimumHeight; maximumWidth: minimumWidth; minimumHeight: 140 * screenScaleFactor; minimumWidth: 500 * screenScaleFactor; modality: Qt.ApplicationModal; - onVisibleChanged: { - if (visible) { - resetPrintersModel(); - } else { - OutputDevice.cancelPrintSelection(); + + Component.onCompleted: { + populateComboBox() + } + + // populates the combo box with the correct printer values + function populateComboBox() { + comboBoxPrintersModel.clear(); + comboBoxPrintersModel.append({ name: "Automatic", key: "" }); // Connect will just do it's thing + for (var i in OutputDevice.printers) { + comboBoxPrintersModel.append({ + name: OutputDevice.printers[i].name, + key: OutputDevice.printers[i].uniqueName + }); } } + + leftButtons: [ + Button { + enabled: true; + onClicked: { + base.close(); + } + text: catalog.i18nc("@action:button","Cancel"); + } + ] rightButtons: [ Button { enabled: true; onClicked: { - base.visible = false; - OutputDevice.selectPrinter(printerSelectionCombobox.model.get(printerSelectionCombobox.currentIndex).key); - // reset to defaults - printerSelectionCombobox.currentIndex = 0; + OutputDevice.selectTargetPrinter(printerComboBox.model.get(printerComboBox.currentIndex).key); + base.close(); } text: catalog.i18nc("@action:button","Print"); } ] - title: catalog.i18nc("@title:window", "Print over network"); - visible: true; - width: minimumWidth; Column { id: printerSelection; @@ -59,10 +64,6 @@ UM.Dialog { } height: 50 * screenScaleFactor; - SystemPalette { - id: palette; - } - UM.I18nCatalog { id: catalog; name: "cura"; @@ -82,23 +83,14 @@ UM.Dialog { } ComboBox { - id: printerSelectionCombobox; + id: printerComboBox; Behavior on height { NumberAnimation { duration: 100 } } height: 40 * screenScaleFactor; model: ListModel { - id: printersModel; + id: comboBoxPrintersModel; } textRole: "name"; width: parent.width; } } - - // Utils - function resetPrintersModel() { - printersModel.clear(); - printersModel.append({ name: "Automatic", key: ""}); - for (var index in OutputDevice.printers) { - printersModel.append({name: OutputDevice.printers[index].name, key: OutputDevice.printers[index].key}); - } - } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml index 77b481f6d8..cfbb30fdfb 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrinterVideoStream.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.2 diff --git a/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml b/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml deleted file mode 100644 index c99ed1688e..0000000000 --- a/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item { - id: base; - property string activeQualityDefinitionId: Cura.MachineManager.activeQualityDefinitionId; - property bool isUM3: activeQualityDefinitionId == "ultimaker3" || activeQualityDefinitionId.match("ultimaker_") != null; - property bool printerConnected: Cura.MachineManager.printerConnected; - property bool printerAcceptsCommands: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - return Cura.MachineManager.printerOutputDevices[0].acceptsCommands - } - return false - } - property bool authenticationRequested: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - var device = Cura.MachineManager.printerOutputDevices[0] - // AuthState.AuthenticationRequested or AuthState.AuthenticationReceived - return device.authenticationState == 2 || device.authenticationState == 5 - } - return false - } - property var materialNames: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - return Cura.MachineManager.printerOutputDevices[0].materialNames - } - return null - } - property var hotendIds: - { - if (printerConnected && Cura.MachineManager.printerOutputDevices[0]) - { - return Cura.MachineManager.printerOutputDevices[0].hotendIds - } - return null - } - - UM.I18nCatalog { - id: catalog; - name: "cura"; - } - - Row { - objectName: "networkPrinterConnectButton"; - spacing: UM.Theme.getSize("default_margin").width; - visible: isUM3; - - Button { - height: UM.Theme.getSize("save_button_save_to_button").height; - onClicked: Cura.MachineManager.printerOutputDevices[0].requestAuthentication(); - style: UM.Theme.styles.print_setup_action_button; - text: catalog.i18nc("@action:button", "Request Access"); - tooltip: catalog.i18nc("@info:tooltip", "Send access request to the printer"); - visible: printerConnected && !printerAcceptsCommands && !authenticationRequested; - } - - Button { - height: UM.Theme.getSize("save_button_save_to_button").height; - onClicked: connectActionDialog.show(); - style: UM.Theme.styles.print_setup_action_button; - text: catalog.i18nc("@action:button", "Connect"); - tooltip: catalog.i18nc("@info:tooltip", "Connect to a printer"); - visible: !printerConnected; - } - } - - UM.Dialog { - id: connectActionDialog; - rightButtons: Button { - iconName: "dialog-close"; - onClicked: connectActionDialog.reject(); - text: catalog.i18nc("@action:button", "Close"); - } - - Loader { - anchors.fill: parent; - source: "DiscoverUM3Action.qml"; - } - } -} diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py index adff94bbbc..ed8d22a478 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudApiClient.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import json from json import JSONDecodeError @@ -11,18 +11,19 @@ from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply, QNetworkAccessManage from UM.Logger import Logger from cura import UltimakerCloudAuthentication from cura.API import Account + from .ToolPathUploader import ToolPathUploader -from ..Models import BaseModel -from .Models.CloudClusterResponse import CloudClusterResponse -from .Models.CloudError import CloudError -from .Models.CloudClusterStatus import CloudClusterStatus -from .Models.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest -from .Models.CloudPrintResponse import CloudPrintResponse -from .Models.CloudPrintJobResponse import CloudPrintJobResponse +from ..Models.BaseModel import BaseModel +from ..Models.Http.CloudClusterResponse import CloudClusterResponse +from ..Models.Http.CloudError import CloudError +from ..Models.Http.CloudClusterStatus import CloudClusterStatus +from ..Models.Http.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest +from ..Models.Http.CloudPrintResponse import CloudPrintResponse +from ..Models.Http.CloudPrintJobResponse import CloudPrintJobResponse ## The generic type variable used to document the methods below. -CloudApiClientModel = TypeVar("CloudApiClientModel", bound = BaseModel) +CloudApiClientModel = TypeVar("CloudApiClientModel", bound=BaseModel) ## The cloud API client is responsible for handling the requests and responses from the cloud. @@ -34,6 +35,9 @@ class CloudApiClient: CLUSTER_API_ROOT = "{}/connect/v1".format(ROOT_PATH) CURA_API_ROOT = "{}/cura/v1".format(ROOT_PATH) + # In order to avoid garbage collection we keep the callbacks in this list. + _anti_gc_callbacks = [] # type: List[Callable[[], None]] + ## Initializes a new cloud API client. # \param account: The user's account object # \param on_error: The callback to be called whenever we receive errors from the server. @@ -43,8 +47,6 @@ class CloudApiClient: self._account = account self._on_error = on_error self._upload = None # type: Optional[ToolPathUploader] - # In order to avoid garbage collection we keep the callbacks in this list. - self._anti_gc_callbacks = [] # type: List[Callable[[], None]] ## Gets the account used for the API. @property @@ -54,7 +56,7 @@ class CloudApiClient: ## Retrieves all the clusters for the user that is currently logged in. # \param on_finished: The function to be called after the result is parsed. def getClusters(self, on_finished: Callable[[List[CloudClusterResponse]], Any]) -> None: - url = "{}/clusters".format(self.CLUSTER_API_ROOT) + url = "{}/clusters?status=active".format(self.CLUSTER_API_ROOT) reply = self._manager.get(self._createEmptyRequest(url)) self._addCallback(reply, on_finished, CloudClusterResponse) @@ -69,8 +71,8 @@ class CloudApiClient: ## Requests the cloud to register the upload of a print job mesh. # \param request: The request object. # \param on_finished: The function to be called after the result is parsed. - def requestUpload(self, request: CloudPrintJobUploadRequest, on_finished: Callable[[CloudPrintJobResponse], Any] - ) -> None: + def requestUpload(self, request: CloudPrintJobUploadRequest, + on_finished: Callable[[CloudPrintJobResponse], Any]) -> None: url = "{}/jobs/upload".format(self.CURA_API_ROOT) body = json.dumps({"data": request.toDict()}) reply = self._manager.put(self._createEmptyRequest(url), body.encode()) @@ -96,6 +98,16 @@ class CloudApiClient: reply = self._manager.post(self._createEmptyRequest(url), b"") self._addCallback(reply, on_finished, CloudPrintResponse) + ## Send a print job action to the cluster for the given print job. + # \param cluster_id: The ID of the cluster. + # \param cluster_job_id: The ID of the print job within the cluster. + # \param action: The name of the action to execute. + def doPrintJobAction(self, cluster_id: str, cluster_job_id: str, action: str, + data: Optional[Dict[str, Any]] = None) -> None: + body = json.dumps({"data": data}).encode() if data else b"" + url = "{}/clusters/{}/print_jobs/{}/action/{}".format(self.CLUSTER_API_ROOT, cluster_id, cluster_job_id, action) + self._manager.post(self._createEmptyRequest(url), body) + ## We override _createEmptyRequest in order to add the user credentials. # \param url: The URL to request # \param content_type: The type of the body contents. @@ -156,12 +168,16 @@ class CloudApiClient: reply: QNetworkReply, on_finished: Union[Callable[[CloudApiClientModel], Any], Callable[[List[CloudApiClientModel]], Any]], - model: Type[CloudApiClientModel], - ) -> None: + model: Type[CloudApiClientModel]) -> None: def parse() -> None: - status_code, response = self._parseReply(reply) self._anti_gc_callbacks.remove(parse) - return self._parseModels(response, on_finished, model) + + # Don't try to parse the reply if we didn't get one + if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) is None: + return + + status_code, response = self._parseReply(reply) + self._parseModels(response, on_finished, model) self._anti_gc_callbacks.append(parse) reply.finished.connect(parse) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputController.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputController.py deleted file mode 100644 index bd56ef3185..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputController.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from cura.PrinterOutput.PrinterOutputController import PrinterOutputController - -from typing import TYPE_CHECKING -if TYPE_CHECKING: - from .CloudOutputDevice import CloudOutputDevice - - -class CloudOutputController(PrinterOutputController): - def __init__(self, output_device: "CloudOutputDevice") -> None: - super().__init__(output_device) - - # The cloud connection only supports fetching the printer and queue status and adding a job to the queue. - # To let the UI know this we mark all features below as False. - self.can_pause = False - self.can_abort = False - self.can_pre_heat_bed = False - self.can_pre_heat_hotends = False - self.can_send_raw_gcode = False - self.can_control_manually = False - self.can_update_firmware = False diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py index df513f4174..b544490cfb 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.Models.PrinterOutputModel import PrinterOutputModel +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 @@ -75,44 +72,29 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice): 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: - plugin_path = PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting") - if plugin_path is None: - Logger.log("e", "Cloud not find plugin path for plugin UM3NetworkPrnting") - raise RuntimeError("Cloud not find plugin path for plugin UM3NetworkPrnting") - self._monitor_view_qml_path = os.path.join(plugin_path, "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] @@ -123,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) @@ -135,6 +120,149 @@ class CloudOutputDevice(NetworkedPrinterOutputDevice): self._tool_path = None self._uploaded_print_job = None + ## Checks whether the given network key is found in the cloud's host name + def matchesNetworkKey(self, network_key: str) -> bool: + # Typically, a network key looks like "ultimakersystem-aabbccdd0011._ultimaker._tcp.local." + # the host name should then be "ultimakersystem-aabbccdd0011" + if network_key.startswith(str(self.clusterData.host_name or "")): + return True + # However, for manually added printers, the local IP address is used in lieu of a proper + # network key, so check for that as well. It is in the format "manual:10.1.10.1". + if network_key.endswith(str(self.clusterData.host_internal_ip or "")): + return True + return False + + ## Set all the interface elements and texts for this output device. + def _setInterfaceElements(self) -> None: + self.setPriority(2) # Make sure we end up below the local networking and above 'save to file'. + self.setShortDescription(I18N_CATALOG.i18nc("@action:button", "Print via Cloud")) + self.setDescription(I18N_CATALOG.i18nc("@properties:tooltip", "Print via Cloud")) + self.setConnectionText(I18N_CATALOG.i18nc("@info:status", "Connected via Cloud")) + + ## Called when the network data should be updated. + def _update(self) -> None: + super()._update() + if time() - self._time_of_last_request < self.CHECK_CLUSTER_INTERVAL: + return # avoid calling the cloud too often + self._time_of_last_request = time() + if self._account.isLoggedIn: + self.setAuthenticationState(AuthState.Authenticated) + self._last_request_time = time() + self._api.getClusterStatus(self.key, self._onStatusCallFinished) + else: + self.setAuthenticationState(AuthState.NotAuthenticated) + + ## Method called when HTTP request to status endpoint is finished. + # Contains both printers and print jobs statuses in a single response. + def _onStatusCallFinished(self, status: CloudClusterStatus) -> None: + self._responseReceived() + if status.printers != self._received_printers: + self._received_printers = status.printers + self._updatePrinters(status.printers) + if status.print_jobs != self._received_print_jobs: + self._received_print_jobs = status.print_jobs + self._updatePrintJobs(status.print_jobs) + + ## Called when Cura requests an output device to receive a (G-code) file. + def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional[FileHandler] = None, filter_by_machine: bool = False, **kwargs) -> None: + + # Show an error message if we're already sending a job. + if self._progress.visible: + PrintJobUploadBlockedMessage().show() + return + + # Indicate we have started sending a job. + self.writeStarted.emit(self) + + # The mesh didn't change, let's not upload it to the cloud again. + # Note that self.writeFinished is called in _onPrintUploadCompleted as well. + if self._uploaded_print_job: + self._api.requestPrint(self.key, self._uploaded_print_job.job_id, self._onPrintUploadCompleted) + return + + # Export the scene to the correct file type. + job = ExportFileJob(file_handler=file_handler, nodes=nodes, firmware_version=self.firmwareVersion) + job.finished.connect(self._onPrintJobCreated) + job.start() + + ## Handler for when the print job was created locally. + # It can now be sent over the cloud. + def _onPrintJobCreated(self, job: ExportFileJob) -> None: + output = job.getOutput() + self._tool_path = output # store the tool path to prevent re-uploading when printing the same file again + request = CloudPrintJobUploadRequest( + job_name=job.getFileName(), + file_size=len(output), + content_type=job.getMimeType(), + ) + self._api.requestUpload(request, self._uploadPrintJob) + + ## Uploads the mesh when the print job was registered with the cloud API. + # \param job_response: The response received from the cloud API. + def _uploadPrintJob(self, job_response: CloudPrintJobResponse) -> None: + if not self._tool_path: + return self._onUploadError() + self._progress.show() + self._uploaded_print_job = job_response # store the last uploaded job to prevent re-upload of the same file + self._api.uploadToolPath(job_response, self._tool_path, self._onPrintJobUploaded, self._progress.update, + self._onUploadError) + + ## Requests the print to be sent to the printer when we finished uploading the mesh. + def _onPrintJobUploaded(self) -> None: + self._progress.update(100) + print_job = cast(CloudPrintJobResponse, self._uploaded_print_job) + self._api.requestPrint(self.key, print_job.job_id, self._onPrintUploadCompleted) + + ## Shows a message when the upload has succeeded + # \param response: The response from the cloud API. + def _onPrintUploadCompleted(self, response: CloudPrintResponse) -> None: + self._progress.hide() + PrintJobUploadSuccessMessage().show() + self.writeFinished.emit() + + ## Displays the given message if uploading the mesh has failed + # \param message: The message to display. + def _onUploadError(self, message: str = None) -> None: + self._progress.hide() + self._uploaded_print_job = None + PrintJobUploadErrorMessage(message).show() + self.writeError.emit() + + ## Whether the printer that this output device represents supports print job actions via the cloud. + @pyqtProperty(bool, notify=_cloudClusterPrintersChanged) + def supportsPrintJobActions(self) -> bool: + if not self._printers: + return False + version_number = self.printers[0].firmwareVersion.split(".") + firmware_version = Version([version_number[0], version_number[1], version_number[2]]) + return firmware_version >= self.PRINT_JOB_ACTIONS_MIN_VERSION + + ## Set the remote print job state. + def setJobState(self, print_job_uuid: str, state: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, state) + + @pyqtSlot(str, name="sendJobToTop") + def sendJobToTop(self, print_job_uuid: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "move", + {"list": "queued", "to_position": 0}) + + @pyqtSlot(str, name="deleteJobFromQueue") + def deleteJobFromQueue(self, print_job_uuid: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "remove") + + @pyqtSlot(str, name="forceSendJob") + def forceSendJob(self, print_job_uuid: str) -> None: + self._api.doPrintJobAction(self._cluster.cluster_id, print_job_uuid, "force") + + @pyqtSlot(name="openPrintJobControlPanel") + def openPrintJobControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl(self.clusterCloudUrl)) + + @pyqtSlot(name="openPrinterControlPanel") + def openPrinterControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl(self.clusterCloudUrl)) + ## Gets the cluster response from which this device was created. @property def clusterData(self) -> CloudClusterResponse: @@ -145,307 +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: - # 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.find(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.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 number of printers in the cluster. - # We use a minimum of 1 because cloud devices are always a cluster and printer discovery needs it. - @pyqtProperty(int, notify = _clusterPrintersChanged) - def clusterSize(self) -> int: - return max(1, len(self._printers)) - - ## 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() - - ## 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 ced53e347b..ccc64f8073 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py +++ b/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py @@ -1,30 +1,29 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from typing import Dict, List +from typing import Dict, List, Optional from PyQt5.QtCore import QTimer from UM import i18nCatalog -from UM.Logger import Logger -from UM.Message import Message +from UM.Logger import Logger # To log errors talking to the API. from UM.Signal import Signal from cura.API import Account from cura.CuraApplication import CuraApplication +from cura.Settings.CuraStackBuilder import CuraStackBuilder from cura.Settings.GlobalStack import GlobalStack + from .CloudApiClient import CloudApiClient from .CloudOutputDevice import CloudOutputDevice -from .Models.CloudClusterResponse import CloudClusterResponse -from .Models.CloudError import CloudError -from .Utils import findChanges +from ..Models.Http.CloudClusterResponse import CloudClusterResponse -## The cloud output device manager is responsible for using the Ultimaker Cloud APIs to manage remote clusters. -# Keeping all cloud related logic in this class instead of the UM3OutputDevicePlugin results in more readable code. -# -# API spec is available on https://api.ultimaker.com/docs/connect/spec/. -# +## The cloud output device manager is responsible for using the Ultimaker Cloud APIs to manage remote clusters. +# Keeping all cloud related logic in this class instead of the UM3OutputDevicePlugin results in more readable code. +# API spec is available on https://api.ultimaker.com/docs/connect/spec/. class CloudOutputDeviceManager: + META_CLUSTER_ID = "um_cloud_cluster_id" + META_NETWORK_KEY = "um_network_key" # The interval with which the remote clusters are checked CHECK_CLUSTER_INTERVAL = 30.0 # seconds @@ -32,110 +31,123 @@ class CloudOutputDeviceManager: # The translation catalog for this device. I18N_CATALOG = i18nCatalog("cura") - addedCloudCluster = Signal() - removedCloudCluster = Signal() + # Signal emitted when the list of discovered devices changed. + discoveredDevicesChanged = Signal() def __init__(self) -> None: # Persistent dict containing the remote clusters for the authenticated user. self._remote_clusters = {} # type: Dict[str, CloudOutputDevice] - - self._application = CuraApplication.getInstance() - self._output_device_manager = self._application.getOutputDeviceManager() - - self._account = self._application.getCuraAPI().account # type: Account - self._api = CloudApiClient(self._account, self._onApiError) + self._account = CuraApplication.getInstance().getCuraAPI().account # type: Account + self._api = CloudApiClient(self._account, on_error = lambda error: Logger.log("e", str(error))) + self._account.loginStateChanged.connect(self._onLoginStateChanged) # Create a timer to update the remote cluster list self._update_timer = QTimer() self._update_timer.setInterval(int(self.CHECK_CLUSTER_INTERVAL * 1000)) self._update_timer.setSingleShot(False) + self._update_timer.timeout.connect(self._getRemoteClusters) + # Ensure we don't start twice. self._running = False - # Called when the uses logs in or out + ## Starts running the cloud output device manager, thus periodically requesting cloud data. + def start(self): + if self._running: + return + if not self._account.isLoggedIn: + return + self._running = True + if not self._update_timer.isActive(): + self._update_timer.start() + self._getRemoteClusters() + + ## Stops running the cloud output device manager. + def stop(self): + if not self._running: + return + self._running = False + if self._update_timer.isActive(): + self._update_timer.stop() + self._onGetRemoteClustersFinished([]) # Make sure we remove all cloud output devices. + + ## Force refreshing connections. + def refreshConnections(self) -> None: + self._connectToActiveMachine() + + ## Called when the uses logs in or out def _onLoginStateChanged(self, is_logged_in: bool) -> None: - Logger.log("d", "Log in state changed to %s", is_logged_in) if is_logged_in: - if not self._update_timer.isActive(): - self._update_timer.start() - self._getRemoteClusters() + self.start() else: - if self._update_timer.isActive(): - self._update_timer.stop() + self.stop() - # Notify that all clusters have disappeared - self._onGetRemoteClustersFinished([]) - - ## Gets all remote clusters from the API. + ## Gets all remote clusters from the API. def _getRemoteClusters(self) -> None: - Logger.log("d", "Retrieving remote clusters") self._api.getClusters(self._onGetRemoteClustersFinished) - ## Callback for when the request for getting the clusters. is finished. + ## Callback for when the request for getting the clusters is finished. def _onGetRemoteClustersFinished(self, clusters: List[CloudClusterResponse]) -> None: online_clusters = {c.cluster_id: c for c in clusters if c.is_online} # type: Dict[str, CloudClusterResponse] + for device_id, cluster_data in online_clusters.items(): + if device_id not in self._remote_clusters: + self._onDeviceDiscovered(cluster_data) + else: + self._onDiscoveredDeviceUpdated(cluster_data) - removed_devices, added_clusters, updates = findChanges(self._remote_clusters, online_clusters) - - Logger.log("d", "Parsed remote clusters to %s", [cluster.toDict() for cluster in online_clusters.values()]) - Logger.log("d", "Removed: %s, added: %s, updates: %s", len(removed_devices), len(added_clusters), len(updates)) - - # Remove output devices that are gone - for device in removed_devices: - if device.isConnected(): - device.disconnect() - device.close() - self._output_device_manager.removeOutputDevice(device.key) - self._application.getDiscoveredPrintersModel().removeDiscoveredPrinter(device.key) - self.removedCloudCluster.emit(device) - del self._remote_clusters[device.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 cluster in added_clusters: - device = CloudOutputDevice(self._api, cluster) - self._remote_clusters[cluster.cluster_id] = device - self._application.getDiscoveredPrintersModel().addDiscoveredPrinter( - device.key, - device.key, - cluster.friendly_name, - self._createMachineFromDiscoveredPrinter, - device.printerType, - device - ) - self.addedCloudCluster.emit(cluster) - - # Update the output devices - for device, cluster in updates: - device.clusterData = cluster - self._application.getDiscoveredPrintersModel().updateDiscoveredPrinter( - device.key, - cluster.friendly_name, - device.printerType, - ) + 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 _createMachineFromDiscoveredPrinter(self, key: str) -> None: - device = self._remote_clusters[key] # type: CloudOutputDevice + + def _onDiscoveredDeviceUpdated(self, cluster_data: CloudClusterResponse) -> None: + device = self._remote_clusters.get(cluster_data.cluster_id) if not device: - Logger.log("e", "Could not find discovered device with key [%s]", key) return - - group_name = device.clusterData.friendly_name - machine_type_id = device.printerType - - Logger.log("i", "Creating machine from cloud device with key = [%s], group name = [%s], printer type = [%s]", - key, group_name, machine_type_id) - - # The newly added machine is automatically activated. - self._application.getMachineManager().addMachine(machine_type_id, group_name) - active_machine = CuraApplication.getInstance().getGlobalContainerStack() - if not active_machine: + 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 - active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) - self._connectToOutputDevice(device, active_machine) + # Create a new machine and activate it. + # We do not use use MachineManager.addMachine here because we need to set the cluster ID before activating it. + new_machine = CuraStackBuilder.createMachine(device.name, device.printerType) + if not new_machine: + Logger.log("e", "Failed creating a new machine") + return + new_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) + CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId()) + self._connectToOutputDevice(device, new_machine) ## Callback for when the active machine was changed by the user or a new remote cluster was found. def _connectToActiveMachine(self) -> None: @@ -143,69 +155,30 @@ class CloudOutputDeviceManager: if not active_machine: return - # Remove all output devices that we have registered. - # This is needed because when we switch machines we can only leave - # output devices that are meant for that machine. - for stored_cluster_id in self._remote_clusters: - self._output_device_manager.removeOutputDevice(stored_cluster_id) - - # Check if the stored cluster_id for the active machine is in our list of remote clusters. + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() stored_cluster_id = active_machine.getMetaDataEntry(self.META_CLUSTER_ID) - if stored_cluster_id in self._remote_clusters: - device = self._remote_clusters[stored_cluster_id] - self._connectToOutputDevice(device, active_machine) - Logger.log("d", "Device connected by metadata cluster ID %s", stored_cluster_id) - else: - self._connectByNetworkKey(active_machine) - - ## Tries to match the local network key to the cloud cluster host name. - def _connectByNetworkKey(self, active_machine: GlobalStack) -> None: - # Check if the active printer has a local network connection and match this key to the remote cluster. - local_network_key = active_machine.getMetaDataEntry("um_network_key") - if not local_network_key: - return - - device = next((c for c in self._remote_clusters.values() if c.matchesNetworkKey(local_network_key)), None) - if not device: - return - - Logger.log("i", "Found cluster %s with network key %s", device, local_network_key) - active_machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) - self._connectToOutputDevice(device, active_machine) + local_network_key = active_machine.getMetaDataEntry(self.META_NETWORK_KEY) + for device in self._remote_clusters.values(): + if device.key == stored_cluster_id: + # Connect to it if the stored ID matches. + self._connectToOutputDevice(device, active_machine) + elif local_network_key and device.matchesNetworkKey(local_network_key): + # Connect to it if we can match the local network key that was already present. + self._connectToOutputDevice(device, active_machine) + elif device.key in output_device_manager.getOutputDeviceIds(): + # Remove device if it is not meant for the active machine. + output_device_manager.removeOutputDevice(device.key) ## Connects to an output device and makes sure it is registered in the output device manager. - def _connectToOutputDevice(self, device: CloudOutputDevice, active_machine: GlobalStack) -> None: - device.connect() - self._output_device_manager.addOutputDevice(device) - active_machine.addConfiguredConnectionType(device.connectionType.value) + def _connectToOutputDevice(self, device: CloudOutputDevice, machine: GlobalStack) -> None: + machine.setName(device.name) + machine.setMetaDataEntry(self.META_CLUSTER_ID, device.key) + machine.setMetaDataEntry("group_name", device.name) + machine.addConfiguredConnectionType(device.connectionType.value) - ## Handles an API error received from the cloud. - # \param errors: The errors received - def _onApiError(self, errors: List[CloudError] = None) -> None: - Logger.log("w", str(errors)) - message = Message( - text = self.I18N_CATALOG.i18nc("@info:description", "There was an error connecting to the cloud."), - title = self.I18N_CATALOG.i18nc("@info:title", "Error"), - lifetime = 10 - ) - message.show() + if not device.isConnected(): + device.connect() - ## Starts running the cloud output device manager, thus periodically requesting cloud data. - def start(self): - if self._running: - return - self._account.loginStateChanged.connect(self._onLoginStateChanged) - # When switching machines we check if we have to activate a remote cluster. - self._application.globalContainerStackChanged.connect(self._connectToActiveMachine) - self._update_timer.timeout.connect(self._getRemoteClusters) - self._onLoginStateChanged(is_logged_in = self._account.isLoggedIn) - - ## Stops running the cloud output device manager. - def stop(self): - if not self._running: - return - self._account.loginStateChanged.disconnect(self._onLoginStateChanged) - # When switching machines we check if we have to activate a remote cluster. - self._application.globalContainerStackChanged.disconnect(self._connectToActiveMachine) - self._update_timer.timeout.disconnect(self._getRemoteClusters) - self._onLoginStateChanged(is_logged_in = False) + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + if device.key not in output_device_manager.getOutputDeviceIds(): + output_device_manager.addOutputDevice(device) \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterBuildPlate.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterBuildPlate.py deleted file mode 100644 index 4386bbb435..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterBuildPlate.py +++ /dev/null @@ -1,13 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from .BaseCloudModel import BaseCloudModel - - -## Class representing a cluster printer -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterBuildPlate(BaseCloudModel): - ## Create a new build plate - # \param type: The type of buildplate glass or aluminium - def __init__(self, type: str = "glass", **kwargs) -> None: - self.type = type - super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py deleted file mode 100644 index db09133a14..0000000000 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterConfigurationMaterial.py +++ /dev/null @@ -1,55 +0,0 @@ -from typing import Optional - -from UM.Logger import Logger -from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel -from .BaseCloudModel import BaseCloudModel - - -## Class representing a cloud cluster printer configuration -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrinterConfigurationMaterial(BaseCloudModel): - ## Creates a new material configuration model. - # \param brand: The brand of material in this print core, e.g. 'Ultimaker'. - # \param color: The color of material in this print core, e.g. 'Blue'. - # \param guid: he GUID of the material in this print core, e.g. '506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9'. - # \param material: The type of material in this print core, e.g. 'PLA'. - def __init__(self, brand: Optional[str] = None, color: Optional[str] = None, guid: Optional[str] = None, - material: Optional[str] = None, **kwargs) -> None: - self.guid = guid - self.brand = brand - self.color = color - self.material = material - super().__init__(**kwargs) - - ## Creates a material output model based on this cloud printer material. - def createOutputModel(self) -> MaterialOutputModel: - material_manager = CuraApplication.getInstance().getMaterialManager() - material_group_list = material_manager.getMaterialGroupListByGUID(self.guid) or [] - - # Sort the material groups by "is_read_only = True" first, and then the name alphabetically. - read_only_material_group_list = list(filter(lambda x: x.is_read_only, material_group_list)) - non_read_only_material_group_list = list(filter(lambda x: not x.is_read_only, material_group_list)) - material_group = None - if read_only_material_group_list: - read_only_material_group_list = sorted(read_only_material_group_list, key = lambda x: x.name) - material_group = read_only_material_group_list[0] - elif non_read_only_material_group_list: - non_read_only_material_group_list = sorted(non_read_only_material_group_list, key = lambda x: x.name) - material_group = non_read_only_material_group_list[0] - - if material_group: - container = material_group.root_material_node.getContainer() - color = container.getMetaDataEntry("color_code") - brand = container.getMetaDataEntry("brand") - material_type = container.getMetaDataEntry("material") - name = container.getName() - else: - Logger.log("w", "Unable to find material with guid {guid}. Using data as provided by cluster" - .format(guid = self.guid)) - color = self.color - brand = self.brand - material_type = self.material - name = "Empty" if self.material == "empty" else "Unknown" - - return MaterialOutputModel(guid = self.guid, type = material_type, brand = brand, color = color, name = name) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterStatus.py b/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrinterStatus.py deleted file mode 100644 index 0b76ba1bce..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.Models.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 3f3cd4cdd6..0000000000 --- a/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py +++ /dev/null @@ -1,712 +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.Models.PrinterConfigurationModel import PrinterConfigurationModel -from cura.PrinterOutput.Models.ExtruderConfigurationModel import ExtruderConfigurationModel -from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState, NetworkedPrinterOutputDevice -from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel -from cura.PrinterOutput.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: - plugin_path = PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting") - if plugin_path is None: - Logger.log("e", "Cloud not find plugin path for plugin UM3NetworkPrnting") - raise RuntimeError("Cloud not find plugin path for plugin UM3NetworkPrnting") - self._monitor_view_qml_path = os.path.join(plugin_path, "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 = PrinterConfigurationModel() - 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) - configuration.setPrinterType(data.get("machine_variant", "")) - 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"]) - - if data["status"] != "unreachable": - self._application.getDiscoveredPrintersModel().updateDiscoveredPrinter(data["ip_address"], - name = data["friendly_name"], - machine_type = 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 370cfc9008..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.Models.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 b67f4d7185..0000000000 --- a/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py +++ /dev/null @@ -1,179 +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.PrinterOutput.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 - - # Overrides the one in MachineAction. - # This requires not attention from the user (any more), so we don't need to show any 'upgrade screens'. - def needsUserInteraction(self) -> bool: - return False - - @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: - # Update a GlobalStacks in the same group with the new group name. - group_id = global_container_stack.getMetaDataEntry("group_id") - machine_manager = CuraApplication.getInstance().getMachineManager() - for machine in machine_manager.getMachinesInGroup(group_id): - machine.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.refreshConnections() - - # 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 self._network_plugin: - self._network_plugin.associateActiveMachineWithPrinterDevice(printer_device) - - @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: - metadata_filter = {"um_network_key": key} - containers = CuraContainerRegistry.getInstance().findContainerStacks(type="machine", **metadata_filter) - return bool(containers) - - @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 5c1948b977..0000000000 --- a/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py +++ /dev/null @@ -1,646 +0,0 @@ -from typing import List, Optional - -from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState -from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel -from cura.PrinterOutput.Models.PrintJobOutputModel import PrintJobOutputModel -from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel -from cura.PrinterOutput.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") - - self._output_controller = LegacyUM3PrinterOutputController(self) - - def _createMonitorViewFromQML(self) -> None: - if self._monitor_view_qml_path is None and PluginRegistry.getInstance() is not None: - self._monitor_view_qml_path = os.path.join( - PluginRegistry.getInstance().getPluginPath("UM3NetworkPrinting"), - "resources", "qml", "MonitorStage.qml" - ) - super()._createMonitorViewFromQML() - - 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 9e372d4113..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.Models.PrintJobOutputModel import PrintJobOutputModel - from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel - - -class LegacyUM3PrinterOutputController(PrinterOutputController): - def __init__(self, output_device): - super().__init__(output_device) - self._preheat_bed_timer = QTimer() - self._preheat_bed_timer.setSingleShot(True) - self._preheat_bed_timer.timeout.connect(self._onPreheatBedTimerFinished) - self._preheat_printer = None - - self.can_control_manually = False - self.can_send_raw_gcode = False - - # Are we still waiting for a response about preheat? - # We need this so we can already update buttons, so it feels more snappy. - self._preheat_request_in_progress = False - - def isPreheatRequestInProgress(self): - return self._preheat_request_in_progress - - def setJobState(self, job: "PrintJobOutputModel", state: str): - data = "{\"target\": \"%s\"}" % state - self._output_device.put("print_job/state", data, on_finished=None) - - def setTargetBedTemperature(self, printer: "PrinterOutputModel", temperature: float): - data = str(temperature) - self._output_device.put("printer/bed/temperature/target", data, on_finished = self._onPutBedTemperatureCompleted) - - def _onPutBedTemperatureCompleted(self, reply): - if Version(self._preheat_printer.firmwareVersion) < Version("3.5.92"): - # If it was handling a preheat, it isn't anymore. - self._preheat_request_in_progress = False - - def _onPutPreheatBedCompleted(self, reply): - self._preheat_request_in_progress = False - - def moveHead(self, printer: "PrinterOutputModel", x, y, z, speed): - head_pos = printer._head_position - new_x = head_pos.x + x - new_y = head_pos.y + y - new_z = head_pos.z + z - data = "{\n\"x\":%s,\n\"y\":%s,\n\"z\":%s\n}" %(new_x, new_y, new_z) - self._output_device.put("printer/heads/0/position", data, on_finished=None) - - def homeBed(self, printer): - self._output_device.put("printer/heads/0/position/z", "0", on_finished=None) - - def _onPreheatBedTimerFinished(self): - self.setTargetBedTemperature(self._preheat_printer, 0) - self._preheat_printer.updateIsPreheating(False) - self._preheat_request_in_progress = True - - def cancelPreheatBed(self, printer: "PrinterOutputModel"): - self.preheatBed(printer, temperature=0, duration=0) - self._preheat_bed_timer.stop() - printer.updateIsPreheating(False) - - def preheatBed(self, printer: "PrinterOutputModel", temperature, duration): - try: - temperature = round(temperature) # The API doesn't allow floating point. - duration = round(duration) - except ValueError: - return # Got invalid values, can't pre-heat. - - if duration > 0: - data = """{"temperature": "%i", "timeout": "%i"}""" % (temperature, duration) - else: - data = """{"temperature": "%i"}""" % temperature - - # Real bed pre-heating support is implemented from 3.5.92 and up. - - if Version(printer.firmwareVersion) < Version("3.5.92"): - # No firmware-side duration support then, so just set target bed temp and set a timer. - self.setTargetBedTemperature(printer, temperature=temperature) - self._preheat_bed_timer.setInterval(duration * 1000) - self._preheat_bed_timer.start() - self._preheat_printer = printer - printer.updateIsPreheating(True) - return - - self._output_device.put("printer/bed/pre_heat", data, on_finished = self._onPutPreheatBedCompleted) - printer.updateIsPreheating(True) - self._preheat_request_in_progress = True - - diff --git a/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py b/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py index c3cd82a86d..9927bf744e 100644 --- a/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py +++ b/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. import io from typing import Optional, Dict, Union, List, cast @@ -32,7 +32,7 @@ class MeshFormatHandler: # \return A dict with the file format details, with the following keys: # {id: str, extension: str, description: str, mime_type: str, mode: int, hide_in_file_dialog: bool} @property - def preferred_format(self) -> Optional[Dict[str, Union[str, int, bool]]]: + def preferred_format(self) -> Dict[str, Union[str, int, bool]]: return self._preferred_format ## Gets the file writer for the given file handler and mime type. @@ -90,6 +90,7 @@ class MeshFormatHandler: machine_file_formats = global_stack.getMetaDataEntry("file_formats").split(";") machine_file_formats = [file_type.strip() for file_type in machine_file_formats] + # Exception for UM3 firmware version >=4.4: UFP is now supported and should be the preferred file format. if "application/x-ufp" not in machine_file_formats and Version(firmware_version) >= Version("4.4"): machine_file_formats = ["application/x-ufp"] + machine_file_formats diff --git a/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py b/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py new file mode 100644 index 0000000000..311356de8e --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py @@ -0,0 +1,41 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os + +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices + +from UM import i18nCatalog +from UM.Message import Message +from cura.CuraApplication import CuraApplication + + +I18N_CATALOG = i18nCatalog("cura") + + +class CloudFlowMessage(Message): + + def __init__(self, address: str) -> None: + + image_path = os.path.join( + CuraApplication.getInstance().getPluginRegistry().getPluginPath("UM3NetworkPrinting") or "", + "resources", "svg", "cloud-flow-start.svg" + ) + + super().__init__( + text=I18N_CATALOG.i18nc("@info:status", + "Send and monitor print jobs from anywhere using your Ultimaker account."), + lifetime=0, + dismissable=True, + option_state=False, + image_source=QUrl.fromLocalFile(image_path), + image_caption=I18N_CATALOG.i18nc("@info:status Ultimaker Cloud should not be translated.", + "Connect to Ultimaker Cloud"), + ) + self._address = address + self.addAction("", I18N_CATALOG.i18nc("@action", "Get started"), "", "") + self.actionTriggered.connect(self._onCloudFlowStarted) + + def _onCloudFlowStarted(self, messageId: str, actionId: str) -> None: + QDesktopServices.openUrl(QUrl("http://{}/cloud_connect".format(self._address))) + self.hide() diff --git a/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py b/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py new file mode 100644 index 0000000000..f4132dbcbc --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py @@ -0,0 +1,33 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when trying to connect to a legacy printer device. +class LegacyDeviceNoLongerSupportedMessage(Message): + + # Singleton used to prevent duplicate messages of this type at the same time. + __is_visible = False + + def __init__(self) -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "You are attempting to connect to a printer that is not " + "running Ultimaker Connect. Please update the printer to the " + "latest firmware."), + title = I18N_CATALOG.i18nc("@info:title", "Update your printer"), + lifetime = 10 + ) + + def show(self) -> None: + if LegacyDeviceNoLongerSupportedMessage.__is_visible: + return + super().show() + LegacyDeviceNoLongerSupportedMessage.__is_visible = True + + def hide(self, send_signal = True) -> None: + super().hide(send_signal) + LegacyDeviceNoLongerSupportedMessage.__is_visible = False diff --git a/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py b/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py new file mode 100644 index 0000000000..e021b2ae99 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py @@ -0,0 +1,39 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING + +from UM import i18nCatalog +from UM.Message import Message + + +if TYPE_CHECKING: + from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when sending material files to cluster host. +class MaterialSyncMessage(Message): + + # Singleton used to prevent duplicate messages of this type at the same time. + __is_visible = False + + def __init__(self, device: "UltimakerNetworkedPrinterOutputDevice") -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "Cura has detected material profiles that were not yet installed " + "on the host printer of group {0}.", device.name), + title = I18N_CATALOG.i18nc("@info:title", "Sending materials to printer"), + lifetime = 10, + dismissable = True + ) + + def show(self) -> None: + if MaterialSyncMessage.__is_visible: + return + super().show() + MaterialSyncMessage.__is_visible = True + + def hide(self, send_signal = True) -> None: + super().hide(send_signal) + MaterialSyncMessage.__is_visible = False diff --git a/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py b/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py new file mode 100644 index 0000000000..77d7995fc7 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py @@ -0,0 +1,50 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import TYPE_CHECKING + +from PyQt5.QtCore import QUrl +from PyQt5.QtGui import QDesktopServices + +from UM import i18nCatalog +from UM.Message import Message + + +if TYPE_CHECKING: + from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when trying to connect to a printer that is not a host. +class NotClusterHostMessage(Message): + + # Singleton used to prevent duplicate messages of this type at the same time. + __is_visible = False + + def __init__(self, device: "UltimakerNetworkedPrinterOutputDevice") -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "You are attempting to connect to {0} but it is not " + "the host of a group. You can visit the web page to configure " + "it as a group host.", device.name), + title = I18N_CATALOG.i18nc("@info:title", "Not a group host"), + lifetime = 0, + dismissable = True + ) + self._address = device.address + self.addAction("", I18N_CATALOG.i18nc("@action", "Configure group"), "", "") + self.actionTriggered.connect(self._onConfigureClicked) + + def show(self) -> None: + if NotClusterHostMessage.__is_visible: + return + super().show() + NotClusterHostMessage.__is_visible = True + + def hide(self, send_signal = True) -> None: + super().hide(send_signal) + NotClusterHostMessage.__is_visible = False + + def _onConfigureClicked(self, messageId: str, actionId: str) -> None: + QDesktopServices.openUrl(QUrl("http://{}/print_jobs".format(self._address))) + self.hide() diff --git a/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py new file mode 100644 index 0000000000..be00292559 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py @@ -0,0 +1,18 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when uploading a print job to a cluster is blocked because another upload is already in progress. +class PrintJobUploadBlockedMessage(Message): + + def __init__(self) -> None: + super().__init__( + text = I18N_CATALOG.i18nc("@info:status", "Please wait until the current job has been sent."), + title = I18N_CATALOG.i18nc("@info:title", "Print error"), + lifetime = 10 + ) diff --git a/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py new file mode 100644 index 0000000000..bb26a84953 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py @@ -0,0 +1,18 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from UM import i18nCatalog +from UM.Message import Message + + +I18N_CATALOG = i18nCatalog("cura") + + +## Message shown when uploading a print job to a cluster failed. +class PrintJobUploadErrorMessage(Message): + + def __init__(self, message: str = None) -> None: + super().__init__( + text = message or I18N_CATALOG.i18nc("@info:text", "Could not upload the data to the printer."), + title = I18N_CATALOG.i18nc("@info:title", "Network error"), + lifetime = 10 + ) diff --git a/plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py b/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py similarity index 89% rename from plugins/UM3NetworkPrinting/src/Cloud/CloudProgressMessage.py rename to plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py index 943bef2bc1..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__( title = I18N_CATALOG.i18nc("@info:status", "Sending Print Job"), - text = I18N_CATALOG.i18nc("@info:status", "Uploading via Ultimaker Cloud"), + 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 78% rename from plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py rename to plugins/UM3NetworkPrinting/src/Models/ConfigurationChangeModel.py index 7136d8b93f..58fae03679 100644 --- a/plugins/UM3NetworkPrinting/src/ConfigurationChangeModel.py +++ b/plugins/UM3NetworkPrinting/src/Models/ConfigurationChangeModel.py @@ -1,17 +1,17 @@ -# 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 -from PyQt5.QtCore import pyqtSignal, pyqtProperty, QObject, pyqtSlot BLOCKING_CHANGE_TYPES = [ "material_insert", "buildplate_change" ] + 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 @@ -35,4 +35,4 @@ class ConfigurationChangeModel(QObject): @pyqtProperty(bool, constant = True) def canOverride(self) -> bool: - return self._can_override \ No newline at end of file + return self._can_override diff --git a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterResponse.py b/plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterResponse.py similarity index 91% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterResponse.py rename to plugins/UM3NetworkPrinting/src/Models/Http/CloudClusterResponse.py index a872a6ba68..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'. 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 78% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintCoreConfiguration.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintCoreConfiguration.py index aba1cdb755..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.Models.ExtruderConfigurationModel import ExtruderConfigurationModel from cura.PrinterOutput.Models.ExtruderOutputModel import ExtruderOutputModel -from .CloudClusterPrinterConfigurationMaterial import CloudClusterPrinterConfigurationMaterial -from .BaseCloudModel import BaseCloudModel + +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 78% rename from plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobStatus.py rename to plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobStatus.py index 79050521af..9794da1bbb 100644 --- a/plugins/UM3NetworkPrinting/src/Cloud/Models/CloudClusterPrintJobStatus.py +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrintJobStatus.py @@ -1,22 +1,23 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from typing import List, Optional, Union, Dict, Any from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel -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 .ClusterBuildPlate import ClusterBuildPlate +from .ClusterPrintJobConfigurationChange import ClusterPrintJobConfigurationChange +from .ClusterPrintJobImpediment import ClusterPrintJobImpediment +from .ClusterPrintCoreConfiguration import ClusterPrintCoreConfiguration +from .ClusterPrintJobConstraint import ClusterPrintJobConstraints +from ..UM3PrintJobOutputModel import UM3PrintJobOutputModel +from ..ConfigurationChangeModel import ConfigurationChangeModel +from ..BaseModel import BaseModel +from ...ClusterOutputController import ClusterOutputController ## Model for the status of a single print job in a cluster. -# Spec: https://api-staging.ultimaker.com/connect/v1/spec -class CloudClusterPrintJobStatus(BaseCloudModel): +class ClusterPrintJobStatus(BaseModel): + ## Creates a new cloud print job status model. # \param assigned_to: The name of the printer this job is assigned to while being queued. # \param configuration: The required print core configurations of this print job. @@ -45,21 +46,21 @@ class CloudClusterPrintJobStatus(BaseCloudModel): # printer def __init__(self, created_at: str, force: bool, machine_variant: str, name: str, started: bool, status: str, time_total: int, uuid: str, - configuration: List[Union[Dict[str, Any], CloudClusterPrintCoreConfiguration]], - constraints: List[Union[Dict[str, Any], CloudClusterPrintJobConstraints]], + configuration: List[Union[Dict[str, Any], ClusterPrintCoreConfiguration]], + constraints: List[Union[Dict[str, Any], ClusterPrintJobConstraints]], last_seen: Optional[float] = None, network_error_count: Optional[int] = None, owner: Optional[str] = None, printer_uuid: Optional[str] = None, time_elapsed: Optional[int] = None, assigned_to: Optional[str] = None, deleted_at: Optional[str] = None, printed_on_uuid: Optional[str] = None, configuration_changes_required: List[ - Union[Dict[str, Any], CloudClusterPrintJobConfigurationChange]] = None, - build_plate: Union[Dict[str, Any], CloudClusterBuildPlate] = None, + Union[Dict[str, Any], ClusterPrintJobConfigurationChange]] = None, + build_plate: Union[Dict[str, Any], ClusterBuildPlate] = None, compatible_machine_families: List[str] = None, - impediments_to_printing: List[Union[Dict[str, Any], CloudClusterPrintJobImpediment]] = None, + impediments_to_printing: List[Union[Dict[str, Any], ClusterPrintJobImpediment]] = None, **kwargs) -> None: self.assigned_to = assigned_to - self.configuration = self.parseModels(CloudClusterPrintCoreConfiguration, configuration) - self.constraints = self.parseModels(CloudClusterPrintJobConstraints, constraints) + self.configuration = self.parseModels(ClusterPrintCoreConfiguration, configuration) + self.constraints = self.parseModels(ClusterPrintJobConstraints, constraints) self.created_at = created_at self.force = force self.last_seen = last_seen @@ -76,22 +77,21 @@ 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 @@ -99,6 +99,7 @@ class CloudClusterPrintJobStatus(BaseCloudModel): extruders = [extruder.createConfigurationModel() for extruder in self.configuration or ()] configuration = PrinterConfigurationModel() configuration.setExtruderConfigurations(extruders) + configuration.setPrinterType(self.machine_variant) return configuration ## Updates an UM3 print job output model based on this cloud cluster print job. diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py new file mode 100644 index 0000000000..8edb9fb808 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterConfigurationMaterial.py @@ -0,0 +1,51 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional + +from UM.Settings.ContainerRegistry import ContainerRegistry +from cura.PrinterOutput.Models.MaterialOutputModel import MaterialOutputModel + +from ..BaseModel import BaseModel + + +## Class representing a cloud cluster printer configuration +class ClusterPrinterConfigurationMaterial(BaseModel): + + ## Creates a new material configuration model. + # \param brand: The brand of material in this print core, e.g. 'Ultimaker'. + # \param color: The color of material in this print core, e.g. 'Blue'. + # \param guid: he GUID of the material in this print core, e.g. '506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9'. + # \param material: The type of material in this print core, e.g. 'PLA'. + def __init__(self, brand: Optional[str] = None, color: Optional[str] = None, guid: Optional[str] = None, + material: Optional[str] = None, **kwargs) -> None: + self.guid = guid + self.brand = brand + self.color = color + self.material = material + super().__init__(**kwargs) + + ## Creates a material output model based on this cloud printer material. + # + # A material is chosen that matches the current GUID. If multiple such + # materials are available, read-only materials are preferred and the + # material with the earliest alphabetical name will be selected. + # \return A material output model that matches the current GUID. + def createOutputModel(self) -> MaterialOutputModel: + container_registry = ContainerRegistry.getInstance() + same_guid = container_registry.findInstanceContainersMetadata(GUID = self.guid) + if same_guid: + read_only = sorted(filter(lambda metadata: container_registry.isReadOnly(metadata["id"]), same_guid), key = lambda metadata: metadata["name"]) + if read_only: + material_metadata = read_only[0] + else: + material_metadata = min(same_guid, key = lambda metadata: metadata["name"]) + else: + material_metadata = { + "color_code": self.color, + "brand": self.brand, + "material": self.material, + "name": "Empty" if self.material == "empty" else "Unknown" + } + + return MaterialOutputModel(guid = self.guid, type = material_metadata["material"], brand = material_metadata["brand"], color = material_metadata["color_code"], name = material_metadata["name"]) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py new file mode 100644 index 0000000000..c51e07bcfc --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStation.py @@ -0,0 +1,23 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Union, Dict, Any, List + +from ..BaseModel import BaseModel +from .ClusterPrinterMaterialStationSlot import ClusterPrinterMaterialStationSlot + + +## Class representing the data of a Material Station in the cluster. +class ClusterPrinterMaterialStation(BaseModel): + + ## Creates a new Material Station status. + # \param status: The status of the material station. + # \param: supported: Whether the material station is supported on this machine or not. + # \param material_slots: The active slots configurations of this material station. + def __init__(self, status: str, supported: bool = False, + material_slots: List[Union[ClusterPrinterMaterialStationSlot, Dict[str, Any]]] = None, + **kwargs) -> None: + self.status = status + self.supported = supported + self.material_slots = self.parseModels(ClusterPrinterMaterialStationSlot, material_slots)\ + if material_slots else [] # type: List[ClusterPrinterMaterialStationSlot] + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStationSlot.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStationSlot.py new file mode 100644 index 0000000000..80deb1c9a8 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterMaterialStationSlot.py @@ -0,0 +1,22 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Optional + +from .ClusterPrintCoreConfiguration import ClusterPrintCoreConfiguration + + +## Class representing the data of a single slot in the material station. +class ClusterPrinterMaterialStationSlot(ClusterPrintCoreConfiguration): + + ## Create a new material station slot object. + # \param slot_index: The index of the slot in the material station (ranging 0 to 5). + # \param compatible: Whether the configuration is compatible with the print core. + # \param material_remaining: How much material is remaining on the spool (between 0 and 1, or -1 for missing data). + # \param material_empty: Whether the material spool is too empty to be used. + def __init__(self, slot_index: int, compatible: bool, material_remaining: float, + material_empty: Optional[bool] = False, **kwargs): + self.slot_index = slot_index + self.compatible = compatible + self.material_remaining = material_remaining + self.material_empty = material_empty + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py new file mode 100644 index 0000000000..2e0912f057 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/ClusterPrinterStatus.py @@ -0,0 +1,147 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from itertools import product +from typing import List, Union, Dict, Optional, Any + +from PyQt5.QtCore import QUrl + +from cura.PrinterOutput.Models.PrinterConfigurationModel import PrinterConfigurationModel +from cura.PrinterOutput.PrinterOutputController import PrinterOutputController +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel + +from .ClusterBuildPlate import ClusterBuildPlate +from .ClusterPrintCoreConfiguration import ClusterPrintCoreConfiguration +from .ClusterPrinterMaterialStation import ClusterPrinterMaterialStation +from .ClusterPrinterMaterialStationSlot import ClusterPrinterMaterialStationSlot +from .ClusterPrinterConfigurationMaterial import ClusterPrinterConfigurationMaterial +from ..BaseModel import BaseModel + + +## Class representing a cluster printer +class ClusterPrinterStatus(BaseModel): + + ## Creates a new cluster printer status + # \param enabled: A printer can be disabled if it should not receive new jobs. By default every printer is enabled. + # \param firmware_version: Firmware version installed on the printer. Can differ for each printer in a cluster. + # \param friendly_name: Human readable name of the printer. Can be used for identification purposes. + # \param ip_address: The IP address of the printer in the local network. + # \param machine_variant: The type of printer. Can be 'Ultimaker 3' or 'Ultimaker 3ext'. + # \param status: The status of the printer. + # \param unique_name: The unique name of the printer in the network. + # \param uuid: The unique ID of the printer, also known as GUID. + # \param configuration: The active print core configurations of this printer. + # \param reserved_by: A printer can be claimed by a specific print job. + # \param maintenance_required: Indicates if maintenance is necessary. + # \param firmware_update_status: Whether the printer's firmware is up-to-date, value is one of: "up_to_date", + # "pending_update", "update_available", "update_in_progress", "update_failed", "update_impossible". + # \param latest_available_firmware: The version of the latest firmware that is available. + # \param build_plate: The build plate that is on the printer. + # \param material_station: The material station that is on the printer. + def __init__(self, enabled: bool, firmware_version: str, friendly_name: str, ip_address: str, machine_variant: str, + status: str, unique_name: str, uuid: str, + configuration: List[Union[Dict[str, Any], ClusterPrintCoreConfiguration]], + reserved_by: Optional[str] = None, maintenance_required: Optional[bool] = None, + firmware_update_status: Optional[str] = None, latest_available_firmware: Optional[str] = None, + build_plate: Union[Dict[str, Any], ClusterBuildPlate] = None, + material_station: Union[Dict[str, Any], ClusterPrinterMaterialStation] = None, **kwargs) -> None: + + self.configuration = self.parseModels(ClusterPrintCoreConfiguration, configuration) + self.enabled = enabled + self.firmware_version = firmware_version + self.friendly_name = friendly_name + self.ip_address = ip_address + self.machine_variant = machine_variant + self.status = status + self.unique_name = unique_name + self.uuid = uuid + self.reserved_by = reserved_by + self.maintenance_required = maintenance_required + self.firmware_update_status = firmware_update_status + self.latest_available_firmware = latest_available_firmware + self.build_plate = self.parseModel(ClusterBuildPlate, build_plate) if build_plate else None + self.material_station = self.parseModel(ClusterPrinterMaterialStation, + material_station) if material_station else None + super().__init__(**kwargs) + + ## Creates a new output model. + # \param controller - The controller of the model. + def createOutputModel(self, controller: PrinterOutputController) -> PrinterOutputModel: + # FIXME + # Note that we're using '2' here as extruder count. We have hardcoded this for now to prevent issues where the + # amount of extruders coming back from the API is actually lower (which it can be if a printer was just added + # to a cluster). This should be fixed in the future, probably also on the cluster API side. + model = PrinterOutputModel(controller, 2, firmware_version = self.firmware_version) + self.updateOutputModel(model) + return model + + ## Updates the given output model. + # \param model - The output model to update. + def updateOutputModel(self, model: PrinterOutputModel) -> None: + model.updateKey(self.uuid) + model.updateName(self.friendly_name) + model.updateUniqueName(self.unique_name) + model.updateType(self.machine_variant) + model.updateState(self.status if self.enabled else "disabled") + model.updateBuildplate(self.build_plate.type if self.build_plate else "glass") + model.setCameraUrl(QUrl("http://{}:8080/?action=stream".format(self.ip_address))) + + if not model.printerConfiguration: + # Prevent accessing printer configuration when not available. + # This sometimes happens when a printer was just added to a group and Cura is connected to that group. + return + + # Set the possible configurations based on whether a Material Station is present or not. + if self.material_station and self.material_station.material_slots: + self._updateAvailableConfigurations(model) + if self.configuration: + self._updateActiveConfiguration(model) + + def _updateActiveConfiguration(self, model: PrinterOutputModel) -> None: + configurations = zip(self.configuration, model.extruders, model.printerConfiguration.extruderConfigurations) + for configuration, extruder_output, extruder_config in configurations: + configuration.updateOutputModel(extruder_output) + configuration.updateConfigurationModel(extruder_config) + + def _updateAvailableConfigurations(self, model: PrinterOutputModel) -> None: + available_configurations = [self._createAvailableConfigurationFromPrinterConfiguration( + left_slot = left_slot, + right_slot = right_slot, + printer_configuration = model.printerConfiguration + ) for left_slot, right_slot in product(self._getSlotsForExtruder(0), self._getSlotsForExtruder(1))] + model.setAvailableConfigurations(available_configurations) + + ## Create a list of Material Station slots for the given extruder index. + # Returns a list with a single empty material slot if none are found to ensure we don't miss configurations. + def _getSlotsForExtruder(self, extruder_index: int) -> List[ClusterPrinterMaterialStationSlot]: + if not self.material_station: # typing guard + return [] + slots = [slot for slot in self.material_station.material_slots if self._isSupportedConfiguration( + slot = slot, + extruder_index = extruder_index + )] + return slots or [self._createEmptyMaterialSlot(extruder_index)] + + ## Check if a configuration is supported in order to make it selectable by the user. + # We filter out any slot that is not supported by the extruder index, print core type or if the material is empty. + @staticmethod + def _isSupportedConfiguration(slot: ClusterPrinterMaterialStationSlot, extruder_index: int) -> bool: + return slot.extruder_index == extruder_index and slot.compatible and not slot.material_empty + + ## Create an empty material slot with a fake empty material. + @staticmethod + def _createEmptyMaterialSlot(extruder_index: int) -> ClusterPrinterMaterialStationSlot: + empty_material = ClusterPrinterConfigurationMaterial(guid = "", material = "empty", brand = "", color = "") + return ClusterPrinterMaterialStationSlot(slot_index = 0, extruder_index = extruder_index, + compatible = True, material_remaining = 0, material = empty_material) + + @staticmethod + def _createAvailableConfigurationFromPrinterConfiguration(left_slot: ClusterPrinterMaterialStationSlot, + right_slot: ClusterPrinterMaterialStationSlot, + printer_configuration: PrinterConfigurationModel + ) -> PrinterConfigurationModel: + available_configuration = PrinterConfigurationModel() + available_configuration.setExtruderConfigurations([left_slot.createConfigurationModel(), + right_slot.createConfigurationModel()]) + available_configuration.setPrinterType(printer_configuration.printerType) + available_configuration.setBuildplateConfiguration(printer_configuration.buildplateConfiguration) + return available_configuration diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/PrinterSystemStatus.py b/plugins/UM3NetworkPrinting/src/Models/Http/PrinterSystemStatus.py new file mode 100644 index 0000000000..ad7b9c8698 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/Http/PrinterSystemStatus.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from typing import Dict, Any + +from ..BaseModel import BaseModel + + +## Class representing the system status of a printer. +class PrinterSystemStatus(BaseModel): + + def __init__(self, guid: str, firmware: str, hostname: str, name: str, platform: str, variant: str, + hardware: Dict[str, Any], **kwargs + ) -> None: + self.guid = guid + self.firmware = firmware + self.hostname = hostname + self.name = name + self.platform = platform + self.variant = variant + self.hardware = hardware + super().__init__(**kwargs) diff --git a/plugins/UM3NetworkPrinting/src/Models/Http/__init__.py b/plugins/UM3NetworkPrinting/src/Models/Http/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UM3NetworkPrinting/src/Models/LocalMaterial.py b/plugins/UM3NetworkPrinting/src/Models/LocalMaterial.py new file mode 100644 index 0000000000..b45289e1c4 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Models/LocalMaterial.py @@ -0,0 +1,21 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from .BaseModel import BaseModel + + +class LocalMaterial(BaseModel): + + def __init__(self, GUID: str, id: str, version: int, **kwargs) -> None: + self.GUID = GUID # type: str + self.id = id # type: str + self.version = version # type: int + super().__init__(**kwargs) + + def validate(self) -> None: + super().validate() + if not self.GUID: + raise ValueError("guid is required on LocalMaterial") + if not self.version: + raise ValueError("version is required on LocalMaterial") + if not self.id: + raise ValueError("id is required on LocalMaterial") diff --git a/plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py b/plugins/UM3NetworkPrinting/src/Models/UM3PrintJobOutputModel.py similarity index 69% rename from plugins/UM3NetworkPrinting/src/UM3PrintJobOutputModel.py rename to plugins/UM3NetworkPrinting/src/Models/UM3PrintJobOutputModel.py index b627b6e9c8..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.Models.PrintJobOutputModel import PrintJobOutputModel from cura.PrinterOutput.PrinterOutputController import PrinterOutputController + from .ConfigurationChangeModel import ConfigurationChangeModel class UM3PrintJobOutputModel(PrintJobOutputModel): configurationChangesChanged = pyqtSignal() - def __init__(self, output_controller: "PrinterOutputController", key: str = "", name: str = "", parent=None) -> None: + def __init__(self, output_controller: PrinterOutputController, key: str = "", name: str = "", parent=None) -> None: super().__init__(output_controller, key, name, parent) - self._configuration_changes = [] # type: List[ConfigurationChangeModel] + self._configuration_changes = [] # type: List[ConfigurationChangeModel] @pyqtProperty("QVariantList", notify=configurationChangesChanged) def configurationChanges(self) -> List[ConfigurationChangeModel]: @@ -26,3 +27,8 @@ class UM3PrintJobOutputModel(PrintJobOutputModel): return self._configuration_changes = changes self.configurationChangesChanged.emit() + + def updatePreviewImageData(self, data: bytes) -> None: + image = QImage() + image.loadFromData(data) + self.updatePreviewImage(image) diff --git a/plugins/UM3NetworkPrinting/src/Models/__init__.py b/plugins/UM3NetworkPrinting/src/Models/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py new file mode 100644 index 0000000000..6a8b9f625c --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/ClusterApiClient.py @@ -0,0 +1,173 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import json +from json import JSONDecodeError +from typing import Callable, List, Optional, Dict, Union, Any, Type, cast, TypeVar, Tuple + +from PyQt5.QtCore import QUrl +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply + +from UM.Logger import Logger + +from ..Models.BaseModel import BaseModel +from ..Models.Http.ClusterPrintJobStatus import ClusterPrintJobStatus +from ..Models.Http.ClusterPrinterStatus import ClusterPrinterStatus +from ..Models.Http.PrinterSystemStatus import PrinterSystemStatus +from ..Models.Http.ClusterMaterial import ClusterMaterial + + +## The generic type variable used to document the methods below. +ClusterApiClientModel = TypeVar("ClusterApiClientModel", bound=BaseModel) + + +## The ClusterApiClient is responsible for all network calls to local network clusters. +class ClusterApiClient: + + PRINTER_API_PREFIX = "/api/v1" + CLUSTER_API_PREFIX = "/cluster-api/v1" + + # In order to avoid garbage collection we keep the callbacks in this list. + _anti_gc_callbacks = [] # type: List[Callable[[], None]] + + ## Initializes a new cluster API client. + # \param address: The network address of the cluster to call. + # \param on_error: The callback to be called whenever we receive errors from the server. + def __init__(self, address: str, on_error: Callable) -> None: + super().__init__() + self._manager = QNetworkAccessManager() + self._address = address + self._on_error = on_error + + ## Get printer system information. + # \param on_finished: The callback in case the response is successful. + def getSystem(self, on_finished: Callable) -> None: + url = "{}/system".format(self.PRINTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, PrinterSystemStatus) + + ## Get the installed materials on the printer. + # \param on_finished: The callback in case the response is successful. + def getMaterials(self, on_finished: Callable[[List[ClusterMaterial]], Any]) -> None: + url = "{}/materials".format(self.CLUSTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, ClusterMaterial) + + ## Get the printers in the cluster. + # \param on_finished: The callback in case the response is successful. + def getPrinters(self, on_finished: Callable[[List[ClusterPrinterStatus]], Any]) -> None: + url = "{}/printers".format(self.CLUSTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, ClusterPrinterStatus) + + ## Get the print jobs in the cluster. + # \param on_finished: The callback in case the response is successful. + def getPrintJobs(self, on_finished: Callable[[List[ClusterPrintJobStatus]], Any]) -> None: + url = "{}/print_jobs".format(self.CLUSTER_API_PREFIX) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished, ClusterPrintJobStatus) + + ## Move a print job to the top of the queue. + def movePrintJobToTop(self, print_job_uuid: str) -> None: + url = "{}/print_jobs/{}/action/move".format(self.CLUSTER_API_PREFIX, print_job_uuid) + self._manager.post(self._createEmptyRequest(url), json.dumps({"to_position": 0, "list": "queued"}).encode()) + + ## Override print job configuration and force it to be printed. + def forcePrintJob(self, print_job_uuid: str) -> None: + url = "{}/print_jobs/{}".format(self.CLUSTER_API_PREFIX, print_job_uuid) + self._manager.put(self._createEmptyRequest(url), json.dumps({"force": True}).encode()) + + ## Delete a print job from the queue. + def deletePrintJob(self, print_job_uuid: str) -> None: + url = "{}/print_jobs/{}".format(self.CLUSTER_API_PREFIX, print_job_uuid) + self._manager.deleteResource(self._createEmptyRequest(url)) + + ## Set the state of a print job. + def setPrintJobState(self, print_job_uuid: str, state: str) -> None: + url = "{}/print_jobs/{}/action".format(self.CLUSTER_API_PREFIX, print_job_uuid) + # We rewrite 'resume' to 'print' here because we are using the old print job action endpoints. + action = "print" if state == "resume" else state + self._manager.put(self._createEmptyRequest(url), json.dumps({"action": action}).encode()) + + ## Get the preview image data of a print job. + def getPrintJobPreviewImage(self, print_job_uuid: str, on_finished: Callable) -> None: + url = "{}/print_jobs/{}/preview_image".format(self.CLUSTER_API_PREFIX, print_job_uuid) + reply = self._manager.get(self._createEmptyRequest(url)) + self._addCallback(reply, on_finished) + + ## We override _createEmptyRequest in order to add the user credentials. + # \param url: The URL to request + # \param content_type: The type of the body contents. + def _createEmptyRequest(self, path: str, content_type: Optional[str] = "application/json") -> QNetworkRequest: + url = QUrl("http://" + self._address + path) + request = QNetworkRequest(url) + request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True) + if content_type: + request.setHeader(QNetworkRequest.ContentTypeHeader, content_type) + return request + + ## Parses the given JSON network reply into a status code and a dictionary, handling unexpected errors as well. + # \param reply: The reply from the server. + # \return A tuple with a status code and a dictionary. + @staticmethod + def _parseReply(reply: QNetworkReply) -> Tuple[int, Dict[str, Any]]: + status_code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) + try: + response = bytes(reply.readAll()).decode() + return status_code, json.loads(response) + except (UnicodeDecodeError, JSONDecodeError, ValueError) as err: + Logger.logException("e", "Could not parse the cluster response: %s", err) + return status_code, {"errors": [err]} + + ## Parses the given models and calls the correct callback depending on the result. + # \param response: The response from the server, after being converted to a dict. + # \param on_finished: The callback in case the response is successful. + # \param model_class: The type of the model to convert the response to. It may either be a single record or a list. + def _parseModels(self, response: Dict[str, Any], + on_finished: Union[Callable[[ClusterApiClientModel], Any], + Callable[[List[ClusterApiClientModel]], Any]], + model_class: Type[ClusterApiClientModel]) -> None: + try: + if isinstance(response, list): + results = [model_class(**c) for c in response] # type: List[ClusterApiClientModel] + on_finished_list = cast(Callable[[List[ClusterApiClientModel]], Any], on_finished) + on_finished_list(results) + else: + result = model_class(**response) # type: ClusterApiClientModel + on_finished_item = cast(Callable[[ClusterApiClientModel], Any], on_finished) + on_finished_item(result) + except (JSONDecodeError, TypeError, ValueError): + Logger.log("e", "Could not parse response from network: %s", str(response)) + + ## Creates a callback function so that it includes the parsing of the response into the correct model. + # The callback is added to the 'finished' signal of the reply. + # \param reply: The reply that should be listened to. + # \param on_finished: The callback in case the response is successful. + def _addCallback(self, + reply: QNetworkReply, + on_finished: Union[Callable[[ClusterApiClientModel], Any], + Callable[[List[ClusterApiClientModel]], Any]], + model: Type[ClusterApiClientModel] = None, + ) -> None: + + def parse() -> None: + self._anti_gc_callbacks.remove(parse) + + # Don't try to parse the reply if we didn't get one + if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) is None: + return + + if reply.error() > 0: + self._on_error(reply.errorString()) + return + + # If no parse model is given, simply return the raw data in the callback. + if not model: + on_finished(reply.readAll()) + return + + # Otherwise parse the result and return the formatted data in the callback. + status_code, response = self._parseReply(reply) + self._parseModels(response, on_finished, model) + + self._anti_gc_callbacks.append(parse) + reply.finished.connect(parse) diff --git a/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py new file mode 100644 index 0000000000..1266afcca8 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py @@ -0,0 +1,209 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os +from typing import Optional, Dict, List, Callable, Any + +from PyQt5.QtGui import QDesktopServices +from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QObject +from PyQt5.QtNetwork import QNetworkReply + +from UM.FileHandler.FileHandler import FileHandler +from UM.i18n import i18nCatalog +from UM.Logger import Logger +from UM.Scene.SceneNode import SceneNode +from cura.CuraApplication import CuraApplication +from cura.PrinterOutput.NetworkedPrinterOutputDevice import AuthState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType + +from .ClusterApiClient import ClusterApiClient +from .SendMaterialJob import SendMaterialJob +from ..ExportFileJob import ExportFileJob +from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice +from ..Messages.PrintJobUploadBlockedMessage import PrintJobUploadBlockedMessage +from ..Messages.PrintJobUploadErrorMessage import PrintJobUploadErrorMessage +from ..Messages.PrintJobUploadSuccessMessage import PrintJobUploadSuccessMessage +from ..Models.Http.ClusterMaterial import ClusterMaterial + + +I18N_CATALOG = i18nCatalog("cura") + + +class LocalClusterOutputDevice(UltimakerNetworkedPrinterOutputDevice): + + activeCameraUrlChanged = pyqtSignal() + + def __init__(self, device_id: str, address: str, properties: Dict[bytes, bytes], parent=None) -> None: + + super().__init__( + device_id=device_id, + address=address, + properties=properties, + connection_type=ConnectionType.NetworkConnection, + parent=parent + ) + + self._cluster_api = None # type: Optional[ClusterApiClient] + self._active_exported_job = None # type: Optional[ExportFileJob] + self._printer_select_dialog = None # type: Optional[QObject] + + # We don't have authentication over local networking, so we're always authenticated. + self.setAuthenticationState(AuthState.Authenticated) + self._setInterfaceElements() + self._active_camera_url = QUrl() # type: QUrl + + ## Set all the interface elements and texts for this output device. + def _setInterfaceElements(self) -> None: + self.setPriority(3) # Make sure the output device gets selected above local file output + self.setShortDescription(I18N_CATALOG.i18nc("@action:button Preceded by 'Ready to'.", "Print over network")) + self.setDescription(I18N_CATALOG.i18nc("@properties:tooltip", "Print over network")) + self.setConnectionText(I18N_CATALOG.i18nc("@info:status", "Connected over the network")) + + ## Called when the connection to the cluster changes. + def connect(self) -> None: + super().connect() + self._update() + self.sendMaterialProfiles() + + @pyqtProperty(QUrl, notify=activeCameraUrlChanged) + def activeCameraUrl(self) -> QUrl: + return self._active_camera_url + + @pyqtSlot(QUrl, name="setActiveCameraUrl") + def setActiveCameraUrl(self, camera_url: QUrl) -> None: + if self._active_camera_url != camera_url: + self._active_camera_url = camera_url + self.activeCameraUrlChanged.emit() + + @pyqtSlot(name="openPrintJobControlPanel") + def openPrintJobControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl("http://" + self._address + "/print_jobs")) + + @pyqtSlot(name="openPrinterControlPanel") + def openPrinterControlPanel(self) -> None: + QDesktopServices.openUrl(QUrl("http://" + self._address + "/printers")) + + @pyqtSlot(str, name="sendJobToTop") + def sendJobToTop(self, print_job_uuid: str) -> None: + self._getApiClient().movePrintJobToTop(print_job_uuid) + + @pyqtSlot(str, name="deleteJobFromQueue") + def deleteJobFromQueue(self, print_job_uuid: str) -> None: + self._getApiClient().deletePrintJob(print_job_uuid) + + @pyqtSlot(str, name="forceSendJob") + def forceSendJob(self, print_job_uuid: str) -> None: + self._getApiClient().forcePrintJob(print_job_uuid) + + ## Set the remote print job state. + # \param print_job_uuid: The UUID of the print job to set the state for. + # \param action: The action to undertake ('pause', 'resume', 'abort'). + def setJobState(self, print_job_uuid: str, action: str) -> None: + self._getApiClient().setPrintJobState(print_job_uuid, action) + + def _update(self) -> None: + super()._update() + self._getApiClient().getPrinters(self._updatePrinters) + self._getApiClient().getPrintJobs(self._updatePrintJobs) + self._updatePrintJobPreviewImages() + + ## Get a list of materials that are installed on the cluster host. + def getMaterials(self, on_finished: Callable[[List[ClusterMaterial]], Any]) -> None: + self._getApiClient().getMaterials(on_finished = on_finished) + + ## Sync the material profiles in Cura with the printer. + # This gets called when connecting to a printer as well as when sending a print. + def sendMaterialProfiles(self) -> None: + job = SendMaterialJob(device = self) + job.run() + + ## Send a print job to the cluster. + def requestWrite(self, nodes: List[SceneNode], file_name: Optional[str] = None, limit_mimetypes: bool = False, + file_handler: Optional[FileHandler] = None, filter_by_machine: bool = False, **kwargs) -> None: + + # Show an error message if we're already sending a job. + if self._progress.visible: + PrintJobUploadBlockedMessage().show() + return + + self.writeStarted.emit(self) + + # Export the scene to the correct file type. + job = ExportFileJob(file_handler=file_handler, nodes=nodes, firmware_version=self.firmwareVersion) + job.finished.connect(self._onPrintJobCreated) + job.start() + + ## Allows the user to choose a printer to print with from the printer selection dialogue. + # \param unique_name: The unique name of the printer to target. + @pyqtSlot(str, name="selectTargetPrinter") + def selectTargetPrinter(self, unique_name: str = "") -> None: + self._startPrintJobUpload(unique_name if unique_name != "" else None) + + ## Handler for when the print job was created locally. + # It can now be sent over the network. + def _onPrintJobCreated(self, job: ExportFileJob) -> None: + self._active_exported_job = job + # TODO: add preference to enable/disable this feature? + if self.clusterSize > 1: + self._showPrinterSelectionDialog() # self._startPrintJobUpload will be triggered from this dialog + return + self._startPrintJobUpload() + + ## Shows a dialog allowing the user to select which printer in a group to send a job to. + def _showPrinterSelectionDialog(self) -> None: + if not self._printer_select_dialog: + plugin_path = CuraApplication.getInstance().getPluginRegistry().getPluginPath("UM3NetworkPrinting") or "" + path = os.path.join(plugin_path, "resources", "qml", "PrintWindow.qml") + self._printer_select_dialog = CuraApplication.getInstance().createQmlComponent(path, {"OutputDevice": self}) + if self._printer_select_dialog is not None: + self._printer_select_dialog.show() + + ## Upload the print job to the group. + def _startPrintJobUpload(self, unique_name: str = None) -> None: + if not self._active_exported_job: + Logger.log("e", "No active exported job to upload!") + return + self._progress.show() + parts = [ + self._createFormPart("name=owner", bytes(self._getUserName(), "utf-8"), "text/plain"), + self._createFormPart("name=\"file\"; filename=\"%s\"" % self._active_exported_job.getFileName(), + self._active_exported_job.getOutput()) + ] + # If a specific printer was selected we include the name in the request. + # FIXME: Connect should allow the printer UUID here instead of the 'unique_name'. + if unique_name is not None: + parts.append(self._createFormPart("name=require_printer_name", bytes(unique_name, "utf-8"), "text/plain")) + # FIXME: move form posting to API client + self.postFormWithParts("/cluster-api/v1/print_jobs/", parts, on_finished=self._onPrintUploadCompleted, + on_progress=self._onPrintJobUploadProgress) + self._active_exported_job = None + + ## Handler for print job upload progress. + def _onPrintJobUploadProgress(self, bytes_sent: int, bytes_total: int) -> None: + percentage = (bytes_sent / bytes_total) if bytes_total else 0 + self._progress.setProgress(percentage * 100) + self.writeProgress.emit() + + ## Handler for when the print job was fully uploaded to the cluster. + def _onPrintUploadCompleted(self, _: QNetworkReply) -> None: + self._progress.hide() + PrintJobUploadSuccessMessage().show() + self.writeFinished.emit() + + ## Displays the given message if uploading the mesh has failed + # \param message: The message to display. + def _onUploadError(self, message: str = None) -> None: + self._progress.hide() + PrintJobUploadErrorMessage(message).show() + self.writeError.emit() + + ## Download all the images from the cluster and load their data in the print job models. + def _updatePrintJobPreviewImages(self): + for print_job in self._print_jobs: + if print_job.getPreviewImage() is None: + self._getApiClient().getPrintJobPreviewImage(print_job.key, print_job.updatePreviewImageData) + + ## Get the API client instance. + def _getApiClient(self) -> ClusterApiClient: + if not self._cluster_api: + self._cluster_api = ClusterApiClient(self.address, on_error = lambda error: Logger.log("e", str(error))) + return self._cluster_api diff --git a/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py new file mode 100644 index 0000000000..273c64ef4d --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDeviceManager.py @@ -0,0 +1,274 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Dict, Optional, Callable, List + +from UM import i18nCatalog +from UM.Logger import Logger +from UM.Signal import Signal +from UM.Version import Version + +from cura.CuraApplication import CuraApplication +from cura.Settings.CuraStackBuilder import CuraStackBuilder +from cura.Settings.GlobalStack import GlobalStack + +from .ZeroConfClient import ZeroConfClient +from .ClusterApiClient import ClusterApiClient +from .LocalClusterOutputDevice import LocalClusterOutputDevice +from ..UltimakerNetworkedPrinterOutputDevice import UltimakerNetworkedPrinterOutputDevice +from ..Messages.CloudFlowMessage import CloudFlowMessage +from ..Messages.LegacyDeviceNoLongerSupportedMessage import LegacyDeviceNoLongerSupportedMessage +from ..Models.Http.PrinterSystemStatus import PrinterSystemStatus + + +I18N_CATALOG = i18nCatalog("cura") + + +## The LocalClusterOutputDeviceManager is responsible for discovering and managing local networked clusters. +class LocalClusterOutputDeviceManager: + + META_NETWORK_KEY = "um_network_key" + + MANUAL_DEVICES_PREFERENCE_KEY = "um3networkprinting/manual_instances" + MIN_SUPPORTED_CLUSTER_VERSION = Version("4.0.0") + + # The translation catalog for this device. + I18N_CATALOG = i18nCatalog("cura") + + # Signal emitted when the list of discovered devices changed. + discoveredDevicesChanged = Signal() + + def __init__(self) -> None: + + # Persistent dict containing the networked clusters. + self._discovered_devices = {} # type: Dict[str, LocalClusterOutputDevice] + self._output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + + # Hook up ZeroConf client. + self._zero_conf_client = ZeroConfClient() + self._zero_conf_client.addedNetworkCluster.connect(self._onDeviceDiscovered) + self._zero_conf_client.removedNetworkCluster.connect(self._onDiscoveredDeviceRemoved) + + ## Start the network discovery. + def start(self) -> None: + self._zero_conf_client.start() + for address in self._getStoredManualAddresses(): + self.addManualDevice(address) + + ## Stop network discovery and clean up discovered devices. + def stop(self) -> None: + self._zero_conf_client.stop() + for instance_name in list(self._discovered_devices): + self._onDiscoveredDeviceRemoved(instance_name) + + ## Restart discovery on the local network. + def startDiscovery(self): + self.stop() + self.start() + + ## Add a networked printer manually by address. + def addManualDevice(self, address: str, callback: Optional[Callable[[bool, str], None]] = None) -> None: + api_client = ClusterApiClient(address, lambda error: Logger.log("e", str(error))) + api_client.getSystem(lambda status: self._onCheckManualDeviceResponse(address, status, callback)) + + ## Remove a manually added networked printer. + def removeManualDevice(self, device_id: str, address: Optional[str] = None) -> None: + if device_id not in self._discovered_devices and address is not None: + device_id = "manual:{}".format(address) + + if device_id in self._discovered_devices: + address = address or self._discovered_devices[device_id].ipAddress + self._onDiscoveredDeviceRemoved(device_id) + + if address in self._getStoredManualAddresses(): + self._removeStoredManualAddress(address) + + ## Force reset all network device connections. + def refreshConnections(self) -> None: + self._connectToActiveMachine() + + ## Get the discovered devices. + def getDiscoveredDevices(self) -> Dict[str, LocalClusterOutputDevice]: + return self._discovered_devices + + ## Connect the active machine to a given device. + def associateActiveMachineWithPrinterDevice(self, device: LocalClusterOutputDevice) -> None: + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + self._connectToOutputDevice(device, active_machine) + self._connectToActiveMachine() + + # Pre-select the correct machine type of the group host. + # We first need to find the correct definition because the machine manager only takes name as input, not ID. + definitions = CuraApplication.getInstance().getContainerRegistry().findContainers(id = device.printerType) + if not definitions: + return + CuraApplication.getInstance().getMachineManager().switchPrinterType(definitions[0].getName()) + + ## Callback for when the active machine was changed by the user or a new remote cluster was found. + def _connectToActiveMachine(self) -> None: + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + stored_device_id = active_machine.getMetaDataEntry(self.META_NETWORK_KEY) + for device in self._discovered_devices.values(): + if device.key == stored_device_id: + # Connect to it if the stored key matches. + self._connectToOutputDevice(device, active_machine) + elif device.key in output_device_manager.getOutputDeviceIds(): + # Remove device if it is not meant for the active machine. + output_device_manager.removeOutputDevice(device.key) + + ## Callback for when a manual device check request was responded to. + def _onCheckManualDeviceResponse(self, address: str, status: PrinterSystemStatus, + callback: Optional[Callable[[bool, str], None]] = None) -> None: + self._onDeviceDiscovered("manual:{}".format(address), address, { + b"name": status.name.encode("utf-8"), + b"address": address.encode("utf-8"), + b"machine": str(status.hardware.get("typeid", "")).encode("utf-8"), + b"manual": b"true", + b"firmware_version": status.firmware.encode("utf-8"), + b"cluster_size": b"1" + }) + self._storeManualAddress(address) + if callback is not None: + CuraApplication.getInstance().callLater(callback, True, address) + + ## Returns a dict of printer BOM numbers to machine types. + # These numbers are available in the machine definition already so we just search for them here. + @staticmethod + def _getPrinterTypeIdentifiers() -> Dict[str, str]: + container_registry = CuraApplication.getInstance().getContainerRegistry() + ultimaker_machines = container_registry.findContainersMetadata(type="machine", manufacturer="Ultimaker B.V.") + found_machine_type_identifiers = {} # type: Dict[str, str] + for machine in ultimaker_machines: + machine_type = machine.get("id", None) + machine_bom_numbers = machine.get("bom_numbers", []) + if machine_type and machine_bom_numbers: + for bom_number in machine_bom_numbers: + # This produces a n:1 mapping of bom numbers to machine types + # allowing the S5R1 and S5R2 hardware to use a single S5 definition. + found_machine_type_identifiers[str(bom_number)] = machine_type + return found_machine_type_identifiers + + ## Add a new device. + def _onDeviceDiscovered(self, key: str, address: str, properties: Dict[bytes, bytes]) -> None: + machine_identifier = properties.get(b"machine", b"").decode("utf-8") + printer_type_identifiers = self._getPrinterTypeIdentifiers() + + # Detect the machine type based on the BOM number that is sent over the network. + properties[b"printer_type"] = b"Unknown" + for bom, p_type in printer_type_identifiers.items(): + if machine_identifier.startswith(bom): + properties[b"printer_type"] = bytes(p_type, encoding="utf8") + break + + device = LocalClusterOutputDevice(key, address, properties) + discovered_printers_model = CuraApplication.getInstance().getDiscoveredPrintersModel() + if address in list(discovered_printers_model.discoveredPrintersByAddress.keys()): + # The printer was already added, we just update the available data. + discovered_printers_model.updateDiscoveredPrinter( + ip_address=address, + name=device.getName(), + machine_type=device.printerType + ) + else: + # The printer was not added yet so let's do that. + discovered_printers_model.addDiscoveredPrinter( + ip_address=address, + key=device.getId(), + name=device.getName(), + create_callback=self._createMachineFromDiscoveredDevice, + machine_type=device.printerType, + device=device + ) + self._discovered_devices[device.getId()] = device + self.discoveredDevicesChanged.emit() + self._connectToActiveMachine() + + ## Remove a device. + def _onDiscoveredDeviceRemoved(self, device_id: str) -> None: + device = self._discovered_devices.pop(device_id, None) # type: Optional[LocalClusterOutputDevice] + if not device: + return + device.close() + CuraApplication.getInstance().getDiscoveredPrintersModel().removeDiscoveredPrinter(device.address) + self.discoveredDevicesChanged.emit() + + ## Create a machine instance based on the discovered network printer. + def _createMachineFromDiscoveredDevice(self, device_id: str) -> None: + device = self._discovered_devices.get(device_id) + if device is None: + return + + # Create a new machine and activate it. + # We do not use use MachineManager.addMachine here because we need to set the network key before activating it. + # If we do not do this the auto-pairing with the cloud-equivalent device will not work. + new_machine = CuraStackBuilder.createMachine(device.name, device.printerType) + if not new_machine: + Logger.log("e", "Failed creating a new machine") + return + new_machine.setMetaDataEntry(self.META_NETWORK_KEY, device.key) + CuraApplication.getInstance().getMachineManager().setActiveMachine(new_machine.getId()) + self._connectToOutputDevice(device, new_machine) + self._showCloudFlowMessage(device) + + ## Add an address to the stored preferences. + def _storeManualAddress(self, address: str) -> None: + stored_addresses = self._getStoredManualAddresses() + if address in stored_addresses: + return # Prevent duplicates. + stored_addresses.append(address) + new_value = ",".join(stored_addresses) + CuraApplication.getInstance().getPreferences().setValue(self.MANUAL_DEVICES_PREFERENCE_KEY, new_value) + + ## Remove an address from the stored preferences. + def _removeStoredManualAddress(self, address: str) -> None: + stored_addresses = self._getStoredManualAddresses() + try: + stored_addresses.remove(address) # Can throw a ValueError + new_value = ",".join(stored_addresses) + CuraApplication.getInstance().getPreferences().setValue(self.MANUAL_DEVICES_PREFERENCE_KEY, new_value) + except ValueError: + Logger.log("w", "Could not remove address from stored_addresses, it was not there") + + ## Load the user-configured manual devices from Cura preferences. + def _getStoredManualAddresses(self) -> List[str]: + preferences = CuraApplication.getInstance().getPreferences() + preferences.addPreference(self.MANUAL_DEVICES_PREFERENCE_KEY, "") + manual_instances = preferences.getValue(self.MANUAL_DEVICES_PREFERENCE_KEY).split(",") + return manual_instances + + ## Add a device to the current active machine. + def _connectToOutputDevice(self, device: UltimakerNetworkedPrinterOutputDevice, machine: GlobalStack) -> None: + + # Make sure users know that we no longer support legacy devices. + if Version(device.firmwareVersion) < self.MIN_SUPPORTED_CLUSTER_VERSION: + LegacyDeviceNoLongerSupportedMessage().show() + return + + machine.setName(device.name) + machine.setMetaDataEntry(self.META_NETWORK_KEY, device.key) + machine.setMetaDataEntry("group_name", device.name) + machine.addConfiguredConnectionType(device.connectionType.value) + + if not device.isConnected(): + device.connect() + + output_device_manager = CuraApplication.getInstance().getOutputDeviceManager() + if device.key not in output_device_manager.getOutputDeviceIds(): + output_device_manager.addOutputDevice(device) + + ## Nudge the user to start using Ultimaker Cloud. + @staticmethod + def _showCloudFlowMessage(device: LocalClusterOutputDevice) -> None: + if CuraApplication.getInstance().getMachineManager().activeMachineIsUsingCloudConnection: + # This printer is already cloud connected, so we do not bother the user anymore. + return + if not CuraApplication.getInstance().getCuraAPI().account.isLoggedIn: + # Do not show the message if the user is not signed in. + return + CloudFlowMessage(device.ipAddress).show() diff --git a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py b/plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py similarity index 59% rename from plugins/UM3NetworkPrinting/src/SendMaterialJob.py rename to plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py index f0fde818c4..09949ed37e 100644 --- a/plugins/UM3NetworkPrinting/src/SendMaterialJob.py +++ b/plugins/UM3NetworkPrinting/src/Network/SendMaterialJob.py @@ -1,20 +1,20 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - -import json import os -from typing import Dict, TYPE_CHECKING, Set, Optional +from typing import Dict, TYPE_CHECKING, Set, List from PyQt5.QtNetwork import QNetworkReply, QNetworkRequest from UM.Job import Job from UM.Logger import Logger +from UM.Settings import ContainerRegistry from cura.CuraApplication import CuraApplication -# Absolute imports don't work in plugins -from .Models import ClusterMaterial, LocalMaterial +from ..Models.Http.ClusterMaterial import ClusterMaterial +from ..Models.LocalMaterial import LocalMaterial +from ..Messages.MaterialSyncMessage import MaterialSyncMessage if TYPE_CHECKING: - from .ClusterUM3OutputDevice import ClusterUM3OutputDevice + from .LocalClusterOutputDevice import LocalClusterOutputDevice ## Asynchronous job to send material profiles to the printer. @@ -22,75 +22,56 @@ if TYPE_CHECKING: # This way it won't freeze up the interface while sending those materials. class SendMaterialJob(Job): - def __init__(self, device: "ClusterUM3OutputDevice") -> None: + def __init__(self, device: "LocalClusterOutputDevice") -> None: super().__init__() - self.device = device # type: ClusterUM3OutputDevice + self.device = device # type: LocalClusterOutputDevice ## Send the request to the printer and register a callback def run(self) -> None: - self.device.get("materials/", on_finished = self._onGetRemoteMaterials) + self.device.getMaterials(on_finished = self._onGetMaterials) - ## Process the materials reply from the printer. - # - # \param reply The reply from the printer, a json file. - def _onGetRemoteMaterials(self, reply: QNetworkReply) -> None: - # Got an error from the HTTP request. If we did not receive a 200 something happened. - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("e", "Error fetching materials from printer: %s", reply.errorString()) - return - - # Collect materials from the printer's reply and send the missing ones if needed. - remote_materials_by_guid = self._parseReply(reply) - if remote_materials_by_guid: - self._sendMissingMaterials(remote_materials_by_guid) + ## Callback for when the remote materials were returned. + def _onGetMaterials(self, materials: List[ClusterMaterial]) -> None: + remote_materials_by_guid = {material.guid: material for material in materials} + self._sendMissingMaterials(remote_materials_by_guid) ## Determine which materials should be updated and send them to the printer. - # # \param remote_materials_by_guid The remote materials by GUID. def _sendMissingMaterials(self, remote_materials_by_guid: Dict[str, ClusterMaterial]) -> None: - # Collect local materials local_materials_by_guid = self._getLocalMaterials() if len(local_materials_by_guid) == 0: Logger.log("d", "There are no local materials to synchronize with the printer.") return - - # Find out what materials are new or updated and must be sent to the printer material_ids_to_send = self._determineMaterialsToSend(local_materials_by_guid, remote_materials_by_guid) if len(material_ids_to_send) == 0: Logger.log("d", "There are no remote materials to update.") return - - # Send materials to the printer self._sendMaterials(material_ids_to_send) ## From the local and remote materials, determine which ones should be synchronized. - # # Makes a Set of id's containing only the id's of the materials that are not on the printer yet or the ones that # are newer in Cura. - # # \param local_materials The local materials by GUID. # \param remote_materials The remote materials by GUID. @staticmethod def _determineMaterialsToSend(local_materials: Dict[str, LocalMaterial], remote_materials: Dict[str, ClusterMaterial]) -> Set[str]: return { - material.id - for guid, material in local_materials.items() - if guid not in remote_materials or material.version > remote_materials[guid].version + local_material.id + for guid, local_material in local_materials.items() + if guid not in remote_materials.keys() or local_material.version > remote_materials[guid].version } ## Send the materials to the printer. - # # The given materials will be loaded from disk en sent to to printer. # The given id's will be matched with filenames of the locally stored materials. - # # \param materials_to_send A set with id's of materials that must be sent. def _sendMaterials(self, materials_to_send: Set[str]) -> None: container_registry = CuraApplication.getInstance().getContainerRegistry() - material_manager = CuraApplication.getInstance().getMaterialManager() - material_group_dict = material_manager.getAllMaterialGroups() + all_materials = container_registry.findInstanceContainersMetadata(type = "material") + all_base_files = {material["base_file"] for material in all_materials if "base_file" in material} # Filters out uniques by making it a set. Don't include files without base file (i.e. empty material). - for root_material_id in material_group_dict: + for root_material_id in all_base_files: if root_material_id not in materials_to_send: # If the material does not have to be sent we skip it. continue @@ -104,9 +85,7 @@ class SendMaterialJob(Job): self._sendMaterialFile(file_path, file_name, root_material_id) ## Send a single material file to the printer. - # # Also add the material signature file if that is available. - # # \param file_path The path of the material file. # \param file_name The name of the material file. # \param material_id The ID of the material in the file. @@ -126,61 +105,41 @@ class SendMaterialJob(Job): parts.append(self.device.createFormPart("name=\"signature_file\"; filename=\"{file_name}\"" .format(file_name = signature_file_name), f.read())) - Logger.log("d", "Syncing material {material_id} with cluster.".format(material_id = material_id)) - self.device.postFormWithParts(target = "materials/", parts = parts, on_finished = self.sendingFinished) + # FIXME: move form posting to API client + self.device.postFormWithParts(target = "/cluster-api/v1/materials/", parts = parts, + on_finished = self._sendingFinished) ## Check a reply from an upload to the printer and log an error when the call failed - @staticmethod - def sendingFinished(reply: QNetworkReply) -> None: + def _sendingFinished(self, reply: QNetworkReply) -> None: if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - Logger.log("e", "Received error code from printer when syncing material: {code}, {text}".format( - code = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute), - text = reply.errorString() - )) - - ## Parse the reply from the printer - # - # Parses the reply to a "/materials" request to the printer - # - # \return a dictionary of ClusterMaterial objects by GUID - # \throw KeyError Raised when on of the materials does not include a valid guid - @classmethod - def _parseReply(cls, reply: QNetworkReply) -> Optional[Dict[str, ClusterMaterial]]: - try: - remote_materials = json.loads(reply.readAll().data().decode("utf-8")) - return {material["guid"]: ClusterMaterial(**material) for material in remote_materials} - except UnicodeDecodeError: - Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") - except json.JSONDecodeError: - Logger.log("e", "Request material storage on printer: I didn't understand the printer's answer.") - except ValueError: - Logger.log("e", "Request material storage on printer: Printer's answer had an incorrect value.") - except TypeError: - Logger.log("e", "Request material storage on printer: Printer's answer was missing a required value.") - return None + Logger.log("w", "Error while syncing material: %s", reply.errorString()) + return + body = reply.readAll().data().decode('utf8') + if "not added" in body: + # For some reason the cluster returns a 200 sometimes even when syncing failed. + return + # Inform the user that materials have been synced. This message only shows itself when not already visible. + # Because of the guards above it is not shown when syncing failed (which is not always an actual problem). + MaterialSyncMessage(self.device).show() ## Retrieves a list of local materials - # # Only the new newest version of the local materials is returned - # # \return a dictionary of LocalMaterial objects by GUID - def _getLocalMaterials(self) -> Dict[str, LocalMaterial]: + @staticmethod + def _getLocalMaterials() -> Dict[str, LocalMaterial]: result = {} # type: Dict[str, LocalMaterial] - material_manager = CuraApplication.getInstance().getMaterialManager() - - material_group_dict = material_manager.getAllMaterialGroups() + all_materials = CuraApplication.getInstance().getContainerRegistry().findInstanceContainersMetadata(type = "material") + all_base_files = [material for material in all_materials if material["id"] == material.get("base_file")] # Don't send materials without base_file: The empty material doesn't need to be sent. # Find the latest version of all material containers in the registry. - for root_material_id, material_group in material_group_dict.items(): - material_metadata = material_group.root_material_node.getMetadata() - + for material_metadata in all_base_files: try: # material version must be an int material_metadata["version"] = int(material_metadata["version"]) # Create a new local material local_material = LocalMaterial(**material_metadata) - local_material.id = root_material_id + local_material.id = material_metadata["id"] if local_material.GUID not in result or \ local_material.GUID not in result or \ diff --git a/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py new file mode 100644 index 0000000000..466638d99e --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Network/ZeroConfClient.py @@ -0,0 +1,148 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from queue import Queue +from threading import Thread, Event +from time import time +from typing import Optional + +from zeroconf import Zeroconf, ServiceBrowser, ServiceStateChange, ServiceInfo + +from UM.Logger import Logger +from UM.Signal import Signal +from cura.CuraApplication import CuraApplication + + +## The ZeroConfClient handles all network discovery logic. +# It emits signals when new network services were found or disappeared. +class ZeroConfClient: + + # The discovery protocol name for Ultimaker printers. + ZERO_CONF_NAME = u"_ultimaker._tcp.local." + + # Signals emitted when new services were discovered or removed on the network. + addedNetworkCluster = Signal() + removedNetworkCluster = Signal() + + def __init__(self) -> None: + self._zero_conf = None # type: Optional[Zeroconf] + self._zero_conf_browser = None # type: Optional[ServiceBrowser] + self._service_changed_request_queue = None # type: Optional[Queue] + self._service_changed_request_event = None # type: Optional[Event] + self._service_changed_request_thread = None # type: Optional[Thread] + + ## The ZeroConf service changed requests are handled in a separate thread so we don't block the UI. + # We can also re-schedule the requests when they fail to get detailed service info. + # Any new or re-reschedule requests will be appended to the request queue and the thread will process them. + def start(self) -> None: + self._service_changed_request_queue = Queue() + self._service_changed_request_event = Event() + try: + self._zero_conf = Zeroconf() + # CURA-6855 catch WinErrors + except OSError: + Logger.logException("e", "Failed to create zeroconf instance.") + return + + self._service_changed_request_thread = Thread(target = self._handleOnServiceChangedRequests, daemon = True, name = "ZeroConfServiceChangedThread") + self._service_changed_request_thread.start() + self._zero_conf_browser = ServiceBrowser(self._zero_conf, self.ZERO_CONF_NAME, [self._queueService]) + + # Cleanup ZeroConf resources. + def stop(self) -> None: + if self._zero_conf is not None: + self._zero_conf.close() + self._zero_conf = None + if self._zero_conf_browser is not None: + self._zero_conf_browser.cancel() + self._zero_conf_browser = None + + ## Handles a change is discovered network services. + def _queueService(self, zeroconf: Zeroconf, service_type, name: str, state_change: ServiceStateChange) -> None: + item = (zeroconf, service_type, name, state_change) + if not self._service_changed_request_queue or not self._service_changed_request_event: + return + self._service_changed_request_queue.put(item) + self._service_changed_request_event.set() + + ## Callback for when a ZeroConf service has changes. + def _handleOnServiceChangedRequests(self) -> None: + if not self._service_changed_request_queue or not self._service_changed_request_event: + return + + while True: + # Wait for the event to be set + self._service_changed_request_event.wait(timeout=5.0) + + # Stop if the application is shutting down + if CuraApplication.getInstance().isShuttingDown(): + return + + self._service_changed_request_event.clear() + + # Handle all pending requests + reschedule_requests = [] # A list of requests that have failed so later they will get re-scheduled + while not self._service_changed_request_queue.empty(): + request = self._service_changed_request_queue.get() + zeroconf, service_type, name, state_change = request + try: + result = self._onServiceChanged(zeroconf, service_type, name, state_change) + if not result: + reschedule_requests.append(request) + except Exception: + Logger.logException("e", "Failed to get service info for [%s] [%s], the request will be rescheduled", + service_type, name) + reschedule_requests.append(request) + + # Re-schedule the failed requests if any + if reschedule_requests: + for request in reschedule_requests: + self._service_changed_request_queue.put(request) + + ## Handler for zeroConf detection. + # Return True or False indicating if the process succeeded. + # Note that this function can take over 3 seconds to complete. Be careful calling it from the main thread. + def _onServiceChanged(self, zero_conf: Zeroconf, service_type: str, name: str, state_change: ServiceStateChange + ) -> bool: + if state_change == ServiceStateChange.Added: + return self._onServiceAdded(zero_conf, service_type, name) + elif state_change == ServiceStateChange.Removed: + return self._onServiceRemoved(name) + return True + + ## Handler for when a ZeroConf service was added. + def _onServiceAdded(self, zero_conf: Zeroconf, service_type: str, name: str) -> bool: + # First try getting info from zero-conf cache + info = ServiceInfo(service_type, name, properties={}) + for record in zero_conf.cache.entries_with_name(name.lower()): + info.update_record(zero_conf, time(), record) + + for record in zero_conf.cache.entries_with_name(info.server): + info.update_record(zero_conf, time(), record) + if info.address: + break + + # Request more data if info is not complete + if not info.address: + new_info = zero_conf.get_service_info(service_type, name) + if new_info is not None: + info = new_info + + if info and info.address: + type_of_device = info.properties.get(b"type", None) + if type_of_device: + if type_of_device == b"printer": + address = '.'.join(map(str, 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 be7bb1006a..3ab37297b5 100644 --- a/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py +++ b/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py @@ -1,646 +1,73 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -import json -import os -from queue import Queue -from threading import Event, Thread -from time import time -from typing import Optional, TYPE_CHECKING, Dict, Callable - -from zeroconf import Zeroconf, ServiceBrowser, ServiceStateChange, ServiceInfo - -from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply, QNetworkAccessManager -from PyQt5.QtCore import QUrl -from PyQt5.QtGui import QDesktopServices +from typing import Optional, Callable, Dict +from UM.Signal import Signal from cura.CuraApplication import CuraApplication -from cura.PrinterOutput.PrinterOutputDevice import ConnectionType -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 .Cloud.CloudOutputDevice import CloudOutputDevice # typing - -if TYPE_CHECKING: - from PyQt5.QtNetwork import QNetworkReply - from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin - from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice - from cura.Settings.GlobalStack import GlobalStack -i18n_catalog = i18nCatalog("cura") - - -# -# Represents a request for adding a manual printer. It has the following fields: -# - address: The string of the (IP) address of the manual printer -# - callback: (Optional) Once the HTTP request to the printer to get printer information is done, whether successful -# or not, this callback will be invoked to notify about the result. The callback must have a signature of -# func(success: bool, address: str) -> None -# - network_reply: This is the QNetworkReply instance for this request if the request has been issued and still in -# progress. It is kept here so we can cancel a request when needed. -# -class ManualPrinterRequest: - def __init__(self, address: str, callback: Optional[Callable[[bool, str], None]] = None) -> None: - self.address = address - self.callback = callback - self.network_reply = None # type: Optional["QNetworkReply"] - - -## 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() # Called '...Signal' to avoid confusion with function-names. - removeDeviceSignal = Signal() # Ditto ^^^. + + # 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.refreshConnections) - - 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 - - manual_instances = self._preferences.getValue("um3networkprinting/manual_instances").split(",") - self._manual_instances = {address: ManualPrinterRequest(address) - for address in manual_instances} # type: Dict[str, ManualPrinterRequest] - - # 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() - - # TODO: CHANGE TO HOSTNAME - def refreshConnections(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(None) - 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() + ## Restart network discovery. + def startDiscovery(self) -> None: + self._network_output_device_manager.startDiscovery() + + ## Force refreshing the network connections. + def refreshConnections(self) -> None: + self._network_output_device_manager.refreshConnections() + self._cloud_output_device_manager.refreshConnections() + + ## Indicate that this plugin supports adding networked printers manually. def canAddManualDevice(self, address: str = "") -> ManualDeviceAdditionAttempt: - # This plugin should always be the fallback option (at least try it): - return ManualDeviceAdditionAttempt.POSSIBLE - - def removeManualDevice(self, key: str, address: Optional[str] = None) -> None: - if key not in self._discovered_devices and address is not None: - key = "manual:%s" % address - - if key in self._discovered_devices: - if not address: - address = self._discovered_devices[key].ipAddress - self._onRemoveDevice(key) - self.resetLastManualDevice() - - if address in self._manual_instances: - manual_printer_request = self._manual_instances.pop(address) - self._preferences.setValue("um3networkprinting/manual_instances", ",".join(self._manual_instances.keys())) - - if manual_printer_request.network_reply is not None: - manual_printer_request.network_reply.abort() - - if manual_printer_request.callback is not None: - self._application.callLater(manual_printer_request.callback, False, address) + return ManualDeviceAdditionAttempt.PRIORITY + ## Add a networked printer manually based on its network address. def addManualDevice(self, address: str, callback: Optional[Callable[[bool, str], None]] = None) -> None: - self._manual_instances[address] = ManualPrinterRequest(address, callback = callback) - self._preferences.setValue("um3networkprinting/manual_instances", ",".join(self._manual_instances.keys())) + self._network_output_device_manager.addManualDevice(address, callback) - 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 - } - - 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 - - reply = self._checkManualDevice(address) - self._manual_instances[address].network_reply = reply - - def _createMachineFromDiscoveredPrinter(self, key: str) -> None: - discovered_device = self._discovered_devices.get(key) - if discovered_device is None: - Logger.log("e", "Could not find discovered device with key [%s]", key) - return - - group_name = discovered_device.getProperty("name") - machine_type_id = discovered_device.getProperty("printer_type") - - Logger.log("i", "Creating machine from network device with key = [%s], group name = [%s], printer type = [%s]", - key, group_name, machine_type_id) - - self._application.getMachineManager().addMachine(machine_type_id, group_name) - # connect the new machine to that network printer - self.associateActiveMachineWithPrinterDevice(discovered_device) - # ensure that the connection states are refreshed. - self.refreshConnections() - - 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) - - machine_manager = CuraApplication.getInstance().getMachineManager() - global_container_stack = machine_manager.activeMachine - if not global_container_stack: - return - - for machine in machine_manager.getMachinesInGroup(global_container_stack.getMetaDataEntry("group_id")): - machine.setMetaDataEntry("um_network_key", printer_device.key) - machine.setMetaDataEntry("group_name", printer_device.name) - - # 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) - - machine.removeMetaDataEntry("network_authentication_id") - machine.removeMetaDataEntry("network_authentication_key") - - # Ensure that these containers do know that they are configured for network connection - machine.addConfiguredConnectionType(printer_device.connectionType.value) - - self.refreshConnections() - - def _checkManualDevice(self, address: str) -> "QNetworkReply": - # 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) - return self._network_manager.get(name_request) - - def _onNetworkRequestFinished(self, reply: "QNetworkReply") -> None: - reply_url = reply.url().toString() - - address = reply.url().host() - device = None - properties = {} # type: Dict[bytes, bytes] - - if reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) != 200: - # Either: - # - Something went wrong with checking the firmware version! - # - Something went wrong with checking the amount of printers the cluster has! - # - Couldn't find printer at the address when trying to add it manually. - if address in self._manual_instances: - key = "manual:" + address - self.removeManualDevice(key, address) - return - - if "system" in reply_url: - try: - system_info = json.loads(bytes(reply.readAll()).decode("utf-8")) - except: - Logger.log("e", "Something went wrong converting the JSON.") - return - - if address in self._manual_instances: - manual_printer_request = self._manual_instances[address] - manual_printer_request.network_reply = None - if manual_printer_request.callback is not None: - self._application.callLater(manual_printer_request.callback, True, address) - - 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: - # 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 - 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"] = str(len(cluster_printers_list)).encode("utf-8") - self._onRemoveDevice(instance_name) - self._onAddDevice(instance_name, address, properties) - - def _onRemoveDevice(self, device_id: str) -> None: - 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._application.getDiscoveredPrintersModel().removeDiscoveredPrinter(device.address) - 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._application.getDiscoveredPrintersModel().addDiscoveredPrinter( - address, device.getId(), properties[b"name"].decode("utf-8"), self._createMachineFromDiscoveredPrinter, - properties[b"printer_type"].decode("utf-8"), device) - 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, cluster: Optional[CloudOutputDevice]) -> 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, device) -> 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: - - # The active machine _might_ not be the machine that was in the added cloud cluster and - # then this will hide the cloud message for the wrong machine. So we only set it if the - # host names match between the active machine and the newly added cluster - saved_host_name = active_machine.getMetaDataEntry("um_network_key", "").split('.')[0] - added_host_name = device.toDict()["host_name"] - - if added_host_name == saved_host_name: - 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(None) - - 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..73b5b456f9 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterOutputDevice.py @@ -0,0 +1,353 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +import os +from time import time +from typing import List, Optional, Dict + +from PyQt5.QtCore import pyqtProperty, pyqtSignal, QObject, pyqtSlot, QUrl + +from UM.Logger import Logger +from UM.Qt.Duration import Duration, DurationFormat +from cura.CuraApplication import CuraApplication +from cura.PrinterOutput.Models.PrinterOutputModel import PrinterOutputModel +from cura.PrinterOutput.NetworkedPrinterOutputDevice import NetworkedPrinterOutputDevice, AuthState +from cura.PrinterOutput.PrinterOutputDevice import ConnectionType, ConnectionState + +from .Utils import formatTimeCompleted, formatDateCompleted +from .ClusterOutputController import ClusterOutputController +from .Messages.PrintJobUploadProgressMessage import PrintJobUploadProgressMessage +from .Messages.NotClusterHostMessage import NotClusterHostMessage +from .Models.UM3PrintJobOutputModel import UM3PrintJobOutputModel +from .Models.Http.ClusterPrinterStatus import ClusterPrinterStatus +from .Models.Http.ClusterPrintJobStatus import ClusterPrintJobStatus + + +## Output device class that forms the basis of Ultimaker networked printer output devices. +# Currently used for local networking and cloud printing using Ultimaker Connect. +# This base class primarily contains all the Qt properties and slots needed for the monitor page to work. +class UltimakerNetworkedPrinterOutputDevice(NetworkedPrinterOutputDevice): + + META_NETWORK_KEY = "um_network_key" + META_CLUSTER_ID = "um_cloud_cluster_id" + + # Signal emitted when the status of the print jobs for this cluster were changed over the network. + printJobsChanged = pyqtSignal() + + # Signal emitted when the currently visible printer card in the UI was changed by the user. + activePrinterChanged = pyqtSignal() + + # Notify can only use signals that are defined by the class that they are in, not inherited ones. + # Therefore we create a private signal used to trigger the printersChanged signal. + _clusterPrintersChanged = pyqtSignal() + + # States indicating if a print job is queued. + QUEUED_PRINT_JOBS_STATES = {"queued", "error"} + + # Time in seconds since last network response after which we consider this device offline. + # We set this a bit higher than some of the other intervals to make sure they don't overlap. + NETWORK_RESPONSE_CONSIDER_OFFLINE = 10.0 # seconds + + def __init__(self, device_id: str, address: str, properties: Dict[bytes, bytes], connection_type: ConnectionType, + parent=None) -> None: + + super().__init__(device_id=device_id, address=address, properties=properties, connection_type=connection_type, + parent=parent) + + # Trigger the printersChanged signal when the private signal is triggered. + self.printersChanged.connect(self._clusterPrintersChanged) + + # Keeps track the last network response to determine if we are still connected. + self._time_of_last_response = time() + self._time_of_last_request = time() + + # Set the display name from the properties. + self.setName(self.getProperty("name")) + + # Set the display name of the printer type. + definitions = CuraApplication.getInstance().getContainerRegistry().findContainers(id = self.printerType) + self._printer_type_name = definitions[0].getName() if definitions else "" + + # Keeps track of all printers in the cluster. + self._printers = [] # type: List[PrinterOutputModel] + self._has_received_printers = False + + # Keeps track of all print jobs in the cluster. + self._print_jobs = [] # type: List[UM3PrintJobOutputModel] + + # Keep track of the printer currently selected in the UI. + self._active_printer = None # type: Optional[PrinterOutputModel] + + # By default we are not authenticated. This state will be changed later. + self._authentication_state = AuthState.NotAuthenticated + + # Load the Monitor UI elements. + self._loadMonitorTab() + + # The job upload progress message modal. + self._progress = PrintJobUploadProgressMessage() + + ## The IP address of the printer. + @pyqtProperty(str, constant=True) + def address(self) -> str: + return self._address + + ## The display name of the printer. + @pyqtProperty(str, constant=True) + def printerTypeName(self) -> str: + return self._printer_type_name + + # Get all print jobs for this cluster. + @pyqtProperty("QVariantList", notify=printJobsChanged) + def printJobs(self) -> List[UM3PrintJobOutputModel]: + return self._print_jobs + + # Get all print jobs for this cluster that are queued. + @pyqtProperty("QVariantList", notify=printJobsChanged) + def queuedPrintJobs(self) -> List[UM3PrintJobOutputModel]: + return [print_job for print_job in self._print_jobs if print_job.state in self.QUEUED_PRINT_JOBS_STATES] + + # Get all print jobs for this cluster that are currently printing. + @pyqtProperty("QVariantList", notify=printJobsChanged) + def activePrintJobs(self) -> List[UM3PrintJobOutputModel]: + return [print_job for print_job in self._print_jobs if + print_job.assignedPrinter is not None and print_job.state not in self.QUEUED_PRINT_JOBS_STATES] + + @pyqtProperty(bool, notify=_clusterPrintersChanged) + def receivedData(self) -> bool: + return self._has_received_printers + + # Get the amount of printers in the cluster. + @pyqtProperty(int, notify=_clusterPrintersChanged) + def clusterSize(self) -> int: + if not self._has_received_printers: + discovered_size = self.getProperty("cluster_size") + if discovered_size == "": + return 1 # prevent false positives for new devices + return int(discovered_size) + return len(self._printers) + + # Get the amount of printer in the cluster per type. + @pyqtProperty("QVariantList", notify=_clusterPrintersChanged) + def connectedPrintersTypeCount(self) -> List[Dict[str, str]]: + printer_count = {} # type: Dict[str, int] + for printer in self._printers: + if printer.type in printer_count: + printer_count[printer.type] += 1 + else: + printer_count[printer.type] = 1 + result = [] + for machine_type in printer_count: + result.append({"machine_type": machine_type, "count": str(printer_count[machine_type])}) + return result + + # Get a list of all printers. + @pyqtProperty("QVariantList", notify=_clusterPrintersChanged) + def printers(self) -> List[PrinterOutputModel]: + return self._printers + + # Get the currently active printer in the UI. + @pyqtProperty(QObject, notify=activePrinterChanged) + def activePrinter(self) -> Optional[PrinterOutputModel]: + return self._active_printer + + # Set the currently active printer from the UI. + @pyqtSlot(QObject, name="setActivePrinter") + def setActivePrinter(self, printer: Optional[PrinterOutputModel]) -> None: + if self.activePrinter == printer: + return + self._active_printer = printer + self.activePrinterChanged.emit() + + ## Whether the printer that this output device represents supports print job actions via the local network. + @pyqtProperty(bool, constant=True) + def supportsPrintJobActions(self) -> bool: + return True + + ## Set the remote print job state. + def setJobState(self, print_job_uuid: str, state: str) -> None: + raise NotImplementedError("setJobState must be implemented") + + @pyqtSlot(str, name="sendJobToTop") + def sendJobToTop(self, print_job_uuid: str) -> None: + raise NotImplementedError("sendJobToTop must be implemented") + + @pyqtSlot(str, name="deleteJobFromQueue") + def deleteJobFromQueue(self, print_job_uuid: str) -> None: + raise NotImplementedError("deleteJobFromQueue must be implemented") + + @pyqtSlot(str, name="forceSendJob") + def forceSendJob(self, print_job_uuid: str) -> None: + raise NotImplementedError("forceSendJob must be implemented") + + @pyqtSlot(name="openPrintJobControlPanel") + def openPrintJobControlPanel(self) -> None: + raise NotImplementedError("openPrintJobControlPanel must be implemented") + + @pyqtSlot(name="openPrinterControlPanel") + def openPrinterControlPanel(self) -> None: + raise NotImplementedError("openPrinterControlPanel must be implemented") + + @pyqtProperty(QUrl, notify=_clusterPrintersChanged) + def activeCameraUrl(self) -> QUrl: + return QUrl() + + @pyqtSlot(QUrl, name="setActiveCameraUrl") + def setActiveCameraUrl(self, camera_url: QUrl) -> None: + pass + + @pyqtSlot(int, result=str, name="getTimeCompleted") + def getTimeCompleted(self, time_remaining: int) -> str: + return formatTimeCompleted(time_remaining) + + @pyqtSlot(int, result=str, name="getDateCompleted") + def getDateCompleted(self, time_remaining: int) -> str: + return formatDateCompleted(time_remaining) + + @pyqtSlot(int, result=str, name="formatDuration") + def formatDuration(self, seconds: int) -> str: + return Duration(seconds).getDisplayString(DurationFormat.Format.Short) + + def _update(self) -> None: + self._checkStillConnected() + super()._update() + + ## Check if we're still connected by comparing the last timestamps for network response and the current time. + # This implementation is similar to the base NetworkedPrinterOutputDevice, but is tweaked slightly. + # Re-connecting is handled automatically by the output device managers in this plugin. + # TODO: it would be nice to have this logic in the managers, but connecting those with signals causes crashes. + def _checkStillConnected(self) -> None: + time_since_last_response = time() - self._time_of_last_response + if time_since_last_response > self.NETWORK_RESPONSE_CONSIDER_OFFLINE: + self.setConnectionState(ConnectionState.Closed) + if self.key in CuraApplication.getInstance().getOutputDeviceManager().getOutputDeviceIds(): + CuraApplication.getInstance().getOutputDeviceManager().removeOutputDevice(self.key) + elif self.connectionState == ConnectionState.Closed: + self._reconnectForActiveMachine() + + ## Reconnect for the active output device. + # Does nothing if the device is not meant for the active machine. + def _reconnectForActiveMachine(self) -> None: + active_machine = CuraApplication.getInstance().getGlobalContainerStack() + if not active_machine: + return + + # Indicate this device is now connected again. + self.setConnectionState(ConnectionState.Connected) + + # If the device was already registered we don't need to register it again. + if self.key in CuraApplication.getInstance().getOutputDeviceManager().getOutputDeviceIds(): + return + + # Try for local network device. + stored_device_id = active_machine.getMetaDataEntry(self.META_NETWORK_KEY) + if self.key == stored_device_id: + CuraApplication.getInstance().getOutputDeviceManager().addOutputDevice(self) + + # Try for cloud device. + stored_cluster_id = active_machine.getMetaDataEntry(self.META_CLUSTER_ID) + if self.key == stored_cluster_id: + CuraApplication.getInstance().getOutputDeviceManager().addOutputDevice(self) + + def _responseReceived(self) -> None: + self._time_of_last_response = time() + + def _updatePrinters(self, remote_printers: List[ClusterPrinterStatus]) -> None: + self._responseReceived() + + # Keep track of the new printers to show. + # We create a new list instead of changing the existing one to get the correct order. + new_printers = [] # type: List[PrinterOutputModel] + + # Check which printers need to be created or updated. + for index, printer_data in enumerate(remote_printers): + printer = next(iter(printer for printer in self._printers if printer.key == printer_data.uuid), None) + if printer is None: + printer = printer_data.createOutputModel(ClusterOutputController(self)) + else: + printer_data.updateOutputModel(printer) + new_printers.append(printer) + + # Check which printers need to be removed (de-referenced). + remote_printers_keys = [printer_data.uuid for printer_data in remote_printers] + removed_printers = [printer for printer in self._printers if printer.key not in remote_printers_keys] + for removed_printer in removed_printers: + if self._active_printer and self._active_printer.key == removed_printer.key: + self.setActivePrinter(None) + + self._printers = new_printers + self._has_received_printers = True + if self._printers and not self.activePrinter: + self.setActivePrinter(self._printers[0]) + + self.printersChanged.emit() + self._checkIfClusterHost() + + ## Check is this device is a cluster host and takes the needed actions when it is not. + def _checkIfClusterHost(self): + if len(self._printers) < 1 and self.isConnected(): + NotClusterHostMessage(self).show() + self.close() + CuraApplication.getInstance().getOutputDeviceManager().removeOutputDevice(self.key) + + ## Updates the local list of print jobs with the list received from the cluster. + # \param remote_jobs: The print jobs received from the cluster. + def _updatePrintJobs(self, remote_jobs: List[ClusterPrintJobStatus]) -> None: + self._responseReceived() + + # Keep track of the new print jobs to show. + # We create a new list instead of changing the existing one to get the correct order. + new_print_jobs = [] + + # Check which print jobs need to be created or updated. + for index, print_job_data in enumerate(remote_jobs): + print_job = next( + iter(print_job for print_job in self._print_jobs if print_job.key == print_job_data.uuid), None) + if not print_job: + new_print_jobs.append(self._createPrintJobModel(print_job_data)) + else: + print_job_data.updateOutputModel(print_job) + if print_job_data.printer_uuid: + self._updateAssignedPrinter(print_job, print_job_data.printer_uuid) + if print_job_data.assigned_to: + self._updateAssignedPrinter(print_job, print_job_data.assigned_to) + new_print_jobs.append(print_job) + + # Check which print job need to be removed (de-referenced). + remote_job_keys = [print_job_data.uuid for print_job_data in remote_jobs] + removed_jobs = [print_job for print_job in self._print_jobs if print_job.key not in remote_job_keys] + for removed_job in removed_jobs: + if removed_job.assignedPrinter: + removed_job.assignedPrinter.updateActivePrintJob(None) + + self._print_jobs = new_print_jobs + self.printJobsChanged.emit() + + ## Create a new print job model based on the remote status of the job. + # \param remote_job: The remote print job data. + def _createPrintJobModel(self, remote_job: ClusterPrintJobStatus) -> UM3PrintJobOutputModel: + model = remote_job.createOutputModel(ClusterOutputController(self)) + if remote_job.printer_uuid: + self._updateAssignedPrinter(model, remote_job.printer_uuid) + if remote_job.assigned_to: + self._updateAssignedPrinter(model, remote_job.assigned_to) + return model + + ## Updates the printer assignment for the given print job model. + def _updateAssignedPrinter(self, model: UM3PrintJobOutputModel, printer_uuid: str) -> None: + printer = next((p for p in self._printers if printer_uuid == p.key), None) + if not printer: + return + printer.updateActivePrintJob(model) + model.updateAssignedPrinter(printer) + + ## Load Monitor tab QML. + def _loadMonitorTab(self) -> None: + plugin_registry = CuraApplication.getInstance().getPluginRegistry() + if not plugin_registry: + Logger.log("e", "Could not get plugin registry") + return + plugin_path = plugin_registry.getPluginPath("UM3NetworkPrinting") + if not plugin_path: + Logger.log("e", "Could not get plugin path") + return + self._monitor_view_qml_path = os.path.join(plugin_path, "resources", "qml", "MonitorStage.qml") diff --git a/plugins/UM3NetworkPrinting/src/Utils.py b/plugins/UM3NetworkPrinting/src/Utils.py new file mode 100644 index 0000000000..a628130416 --- /dev/null +++ b/plugins/UM3NetworkPrinting/src/Utils.py @@ -0,0 +1,30 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. +from datetime import datetime, timedelta + +from UM import i18nCatalog + + +def formatTimeCompleted(seconds_remaining: int) -> str: + completed = datetime.now() + timedelta(seconds=seconds_remaining) + return "{hour:02d}:{minute:02d}".format(hour = completed.hour, minute = completed.minute) + + +def formatDateCompleted(seconds_remaining: int) -> str: + now = datetime.now() + completed = now + timedelta(seconds=seconds_remaining) + days = (completed.date() - now.date()).days + i18n = i18nCatalog("cura") + + # If finishing date is more than 7 days out, using "Mon Dec 3 at HH:MM" format + if days >= 7: + return completed.strftime("%a %b ") + "{day}".format(day = completed.day) + # If finishing date is within the next week, use "Monday at HH:MM" format + elif days >= 2: + return completed.strftime("%a") + # If finishing tomorrow, use "tomorrow at HH:MM" format + elif days >= 1: + return i18n.i18nc("@info:status", "tomorrow") + # If finishing today, use "today at HH:MM" format + else: + return i18n.i18nc("@info:status", "today") diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/__init__.py b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/__init__.py deleted file mode 100644 index 777afc92c2..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import json -import os - - -def readFixture(fixture_name: str) -> bytes: - with open("{}/{}.json".format(os.path.dirname(__file__), fixture_name), "rb") as f: - return f.read() - -def parseFixture(fixture_name: str) -> dict: - return json.loads(readFixture(fixture_name).decode()) diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusterStatusResponse.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusterStatusResponse.json deleted file mode 100644 index 4f9f47fc75..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusterStatusResponse.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "data": { - "generated_time": "2018-12-10T08:23:55.110Z", - "printers": [ - { - "configuration": [ - { - "extruder_index": 0, - "material": { - "material": "empty" - }, - "print_core_id": "AA 0.4" - }, - { - "extruder_index": 1, - "material": { - "material": "empty" - }, - "print_core_id": "AA 0.4" - } - ], - "enabled": true, - "firmware_version": "5.1.2.20180807", - "friendly_name": "Master-Luke", - "ip_address": "10.183.1.140", - "machine_variant": "Ultimaker 3", - "status": "maintenance", - "unique_name": "ultimakersystem-ccbdd30044ec", - "uuid": "b3a47ea3-1eeb-4323-9626-6f9c3c888f9e" - }, - { - "configuration": [ - { - "extruder_index": 0, - "material": { - "brand": "Generic", - "color": "Generic", - "guid": "506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9", - "material": "PLA" - }, - "print_core_id": "AA 0.4" - }, - { - "extruder_index": 1, - "material": { - "brand": "Ultimaker", - "color": "Red", - "guid": "9cfe5bf1-bdc5-4beb-871a-52c70777842d", - "material": "PLA" - }, - "print_core_id": "AA 0.4" - } - ], - "enabled": true, - "firmware_version": "4.3.3.20180529", - "friendly_name": "UM-Marijn", - "ip_address": "10.183.1.166", - "machine_variant": "Ultimaker 3", - "status": "idle", - "unique_name": "ultimakersystem-ccbdd30058ab", - "uuid": "6e62c40a-4601-4b0e-9fec-c7c02c59c30a" - } - ], - "print_jobs": [ - { - "assigned_to": "6e62c40a-4601-4b0e-9fec-c7c02c59c30a", - "configuration": [ - { - "extruder_index": 0, - "material": { - "brand": "Ultimaker", - "color": "Black", - "guid": "3ee70a86-77d8-4b87-8005-e4a1bc57d2ce", - "material": "PLA" - }, - "print_core_id": "AA 0.4" - } - ], - "constraints": {}, - "created_at": "2018-12-10T08:28:04.108Z", - "force": false, - "last_seen": 500165.109491861, - "machine_variant": "Ultimaker 3", - "name": "UM3_dragon", - "network_error_count": 0, - "owner": "Daniel Testing", - "started": false, - "status": "queued", - "time_elapsed": 0, - "time_total": 14145, - "uuid": "d1c8bd52-5e9f-486a-8c25-a123cc8c7702" - } - ] - } -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusters.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusters.json deleted file mode 100644 index 5200e3b971..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/getClusters.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "data": [{ - "cluster_id": "RIZ6cZbWA_Ua7RZVJhrdVfVpf0z-MqaSHQE4v8aRTtYq", - "host_guid": "e90ae0ac-1257-4403-91ee-a44c9b7e8050", - "host_name": "ultimakersystem-ccbdd30044ec", - "host_version": "5.0.0.20170101", - "is_online": true, - "status": "active" - }, { - "cluster_id": "NWKV6vJP_LdYsXgXqAcaNCR0YcLJwar1ugh0ikEZsZs8", - "host_guid": "e0ace90a-91ee-1257-4403-e8050a44c9b7", - "host_name": "ultimakersystem-30044ecccbdd", - "host_version": "5.1.2.20180807", - "is_online": true, - "status": "active" - }] -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/postJobPrintResponse.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/postJobPrintResponse.json deleted file mode 100644 index caedcd8732..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/postJobPrintResponse.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "data": { - "cluster_job_id": "9a59d8e9-91d3-4ff6-b4cb-9db91c4094dd", - "job_id": "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=", - "status": "queued", - "generated_time": "2018-12-10T08:23:55.110Z" - } -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/putJobUploadResponse.json b/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/putJobUploadResponse.json deleted file mode 100644 index 1304f3a9f6..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Fixtures/putJobUploadResponse.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "data": { - "content_type": "text/plain", - "job_id": "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=", - "job_name": "Ultimaker Robot v3.0", - "status": "uploading", - "upload_url": "https://api.ultimaker.com/print-job-upload" - } -} diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/Models/__init__.py b/plugins/UM3NetworkPrinting/tests/Cloud/Models/__init__.py deleted file mode 100644 index f3f6970c54..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/Models/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/NetworkManagerMock.py b/plugins/UM3NetworkPrinting/tests/Cloud/NetworkManagerMock.py deleted file mode 100644 index e504509d67..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/NetworkManagerMock.py +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -import json -from typing import Dict, Tuple, Union, Optional, Any -from unittest.mock import MagicMock - -from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest - -from UM.Logger import Logger -from UM.Signal import Signal - - -class FakeSignal: - def __init__(self): - self._callbacks = [] - - def connect(self, callback): - self._callbacks.append(callback) - - def disconnect(self, callback): - self._callbacks.remove(callback) - - def emit(self, *args, **kwargs): - for callback in self._callbacks: - callback(*args, **kwargs) - - -## This class can be used to mock the QNetworkManager class and test the code using it. -# After patching the QNetworkManager class, requests are prepared before they can be executed. -# Any requests not prepared beforehand will cause KeyErrors. -class NetworkManagerMock: - - # An enumeration of the supported operations and their code for the network access manager. - _OPERATIONS = { - "GET": QNetworkAccessManager.GetOperation, - "POST": QNetworkAccessManager.PostOperation, - "PUT": QNetworkAccessManager.PutOperation, - "DELETE": QNetworkAccessManager.DeleteOperation, - "HEAD": QNetworkAccessManager.HeadOperation, - } # type: Dict[str, int] - - ## Initializes the network manager mock. - def __init__(self) -> None: - # A dict with the prepared replies, using the format {(http_method, url): reply} - self.replies = {} # type: Dict[Tuple[str, str], MagicMock] - self.request_bodies = {} # type: Dict[Tuple[str, str], bytes] - - # Signals used in the network manager. - self.finished = Signal() - self.authenticationRequired = Signal() - - ## Mock implementation of the get, post, put, delete and head methods from the network manager. - # Since the methods are very simple and the same it didn't make sense to repeat the code. - # \param method: The method being called. - # \return The mocked function, if the method name is known. Defaults to the standard getattr function. - def __getattr__(self, method: str) -> Any: - ## This mock implementation will simply return the reply from the prepared ones. - # it raises a KeyError if requests are done without being prepared. - def doRequest(request: QNetworkRequest, body: Optional[bytes] = None, *_): - key = method.upper(), request.url().toString() - if body: - self.request_bodies[key] = body - return self.replies[key] - - operation = self._OPERATIONS.get(method.upper()) - if operation: - return doRequest - - # the attribute is not one of the implemented methods, default to the standard implementation. - return getattr(super(), method) - - ## Prepares a server reply for the given parameters. - # \param method: The HTTP method. - # \param url: The URL being requested. - # \param status_code: The HTTP status code for the response. - # \param response: The response body from the server (generally json-encoded). - def prepareReply(self, method: str, url: str, status_code: int, response: Union[bytes, dict]) -> None: - reply_mock = MagicMock() - reply_mock.url().toString.return_value = url - reply_mock.operation.return_value = self._OPERATIONS[method] - reply_mock.attribute.return_value = status_code - reply_mock.finished = FakeSignal() - reply_mock.isFinished.return_value = False - reply_mock.readAll.return_value = response if isinstance(response, bytes) else json.dumps(response).encode() - self.replies[method, url] = reply_mock - Logger.log("i", "Prepared mock {}-response to {} {}", status_code, method, url) - - ## Gets the request that was sent to the network manager for the given method and URL. - # \param method: The HTTP method. - # \param url: The URL. - def getRequestBody(self, method: str, url: str) -> Optional[bytes]: - return self.request_bodies.get((method.upper(), url)) - - ## Emits the signal that the reply is ready to all prepared replies. - def flushReplies(self) -> None: - for key, reply in self.replies.items(): - Logger.log("i", "Flushing reply to {} {}", *key) - reply.isFinished.return_value = True - reply.finished.emit() - self.finished.emit(reply) - self.reset() - - ## Deletes all prepared replies - def reset(self) -> None: - self.replies.clear() diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudApiClient.py b/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudApiClient.py deleted file mode 100644 index b79d009c31..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudApiClient.py +++ /dev/null @@ -1,117 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Copyright (c) 2018 Ultimaker B.V. -# Cura is released under the terms of the LGPLv3 or higher. -from typing import List -from unittest import TestCase -from unittest.mock import patch, MagicMock - -from cura.UltimakerCloudAuthentication import CuraCloudAPIRoot -from ...src.Cloud import CloudApiClient -from ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse -from ...src.Cloud.Models.CloudClusterStatus import CloudClusterStatus -from ...src.Cloud.Models.CloudPrintJobResponse import CloudPrintJobResponse -from ...src.Cloud.Models.CloudPrintJobUploadRequest import CloudPrintJobUploadRequest -from ...src.Cloud.Models.CloudError import CloudError -from .Fixtures import readFixture, parseFixture -from .NetworkManagerMock import NetworkManagerMock - - -class TestCloudApiClient(TestCase): - maxDiff = None - - def _errorHandler(self, errors: List[CloudError]): - raise Exception("Received unexpected error: {}".format(errors)) - - def setUp(self): - super().setUp() - self.account = MagicMock() - self.account.isLoggedIn.return_value = True - - self.network = NetworkManagerMock() - with patch.object(CloudApiClient, 'QNetworkAccessManager', return_value = self.network): - self.api = CloudApiClient.CloudApiClient(self.account, self._errorHandler) - - def test_getClusters(self): - result = [] - - response = readFixture("getClusters") - data = parseFixture("getClusters")["data"] - - self.network.prepareReply("GET", CuraCloudAPIRoot + "/connect/v1/clusters", 200, response) - # The callback is a function that adds the result of the call to getClusters to the result list - self.api.getClusters(lambda clusters: result.extend(clusters)) - - self.network.flushReplies() - - self.assertEqual([CloudClusterResponse(**data[0]), CloudClusterResponse(**data[1])], result) - - def test_getClusterStatus(self): - result = [] - - response = readFixture("getClusterStatusResponse") - data = parseFixture("getClusterStatusResponse")["data"] - - url = CuraCloudAPIRoot + "/connect/v1/clusters/R0YcLJwar1ugh0ikEZsZs8NWKV6vJP_LdYsXgXqAcaNC/status" - self.network.prepareReply("GET", url, 200, response) - self.api.getClusterStatus("R0YcLJwar1ugh0ikEZsZs8NWKV6vJP_LdYsXgXqAcaNC", lambda s: result.append(s)) - - self.network.flushReplies() - - self.assertEqual([CloudClusterStatus(**data)], result) - - def test_requestUpload(self): - - results = [] - - response = readFixture("putJobUploadResponse") - - self.network.prepareReply("PUT", CuraCloudAPIRoot + "/cura/v1/jobs/upload", 200, response) - request = CloudPrintJobUploadRequest(job_name = "job name", file_size = 143234, content_type = "text/plain") - self.api.requestUpload(request, lambda r: results.append(r)) - self.network.flushReplies() - - self.assertEqual(["text/plain"], [r.content_type for r in results]) - self.assertEqual(["uploading"], [r.status for r in results]) - - def test_uploadToolPath(self): - - results = [] - progress = MagicMock() - - data = parseFixture("putJobUploadResponse")["data"] - upload_response = CloudPrintJobResponse(**data) - - # Network client doesn't look into the reply - self.network.prepareReply("PUT", upload_response.upload_url, 200, b'{}') - - mesh = ("1234" * 100000).encode() - self.api.uploadToolPath(upload_response, mesh, lambda: results.append("sent"), progress.advance, progress.error) - - for _ in range(10): - self.network.flushReplies() - self.network.prepareReply("PUT", upload_response.upload_url, 200, b'{}') - - self.assertEqual(["sent"], results) - - def test_requestPrint(self): - - results = [] - - response = readFixture("postJobPrintResponse") - - cluster_id = "NWKV6vJP_LdYsXgXqAcaNCR0YcLJwar1ugh0ikEZsZs8" - cluster_job_id = "9a59d8e9-91d3-4ff6-b4cb-9db91c4094dd" - job_id = "ABCDefGHIjKlMNOpQrSTUvYxWZ0-1234567890abcDE=" - - self.network.prepareReply("POST", - CuraCloudAPIRoot + "/connect/v1/clusters/{}/print/{}" - .format(cluster_id, job_id), - 200, response) - - self.api.requestPrint(cluster_id, job_id, lambda r: results.append(r)) - - self.network.flushReplies() - - self.assertEqual([job_id], [r.job_id for r in results]) - self.assertEqual([cluster_job_id], [r.cluster_job_id for r in results]) - self.assertEqual(["queued"], [r.status for r in results]) diff --git a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDevice.py b/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDevice.py deleted file mode 100644 index d11cfa8a0e..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDevice.py +++ /dev/null @@ -1,157 +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.Models.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" - FRIENDLY_NAME = "My Friendly Printer" - - 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, - friendly_name=self.FRIENDLY_NAME) - - 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.FRIENDLY_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 869b39440c..0000000000 --- a/plugins/UM3NetworkPrinting/tests/Cloud/TestCloudOutputDeviceManager.py +++ /dev/null @@ -1,126 +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 ...src.Cloud.Models.CloudClusterResponse import CloudClusterResponse -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 = [] - for cluster in self.clusters_response.get("data", []): - response_clusters.append(CloudClusterResponse(**cluster).toDict()) - 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.assertEqual([], 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 2cab110861..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.assertEqual( - [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.assertEqual( - [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/USBPrinterOutputDevice.py b/plugins/USBPrinting/USBPrinterOutputDevice.py index 6ce042f32d..c9758d88d4 100644 --- a/plugins/USBPrinting/USBPrinterOutputDevice.py +++ b/plugins/USBPrinting/USBPrinterOutputDevice.py @@ -6,6 +6,7 @@ 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 @@ -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") @@ -56,7 +61,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._all_baud_rates = [115200, 250000, 500000, 230400, 57600, 38400, 19200, 9600] # Instead of using a timer, we really need the update to be as a thread, as reading from serial can block. - self._update_thread = Thread(target = self._update, daemon = True) + self._update_thread = Thread(target = self._update, daemon = True, name = "USBPrinterUpdate") self._last_temperature_request = None # type: Optional[int] self._firmware_idle_count = 0 @@ -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() @@ -203,7 +212,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): self._serial.close() # Re-create the thread so it can be started again later. - self._update_thread = Thread(target=self._update, daemon=True) + self._update_thread = Thread(target=self._update, daemon=True, name = "USBPrinterUpdate") self._serial = None ## Send a command to printer. @@ -319,7 +328,7 @@ class USBPrinterOutputDevice(PrinterOutputDevice): def _setFirmwareName(self, name): new_name = re.findall(r"FIRMWARE_NAME:(.*);", str(name)) - if new_name: + if new_name: self._firmware_name = new_name[0] Logger.log("i", "USB output device Firmware name: %s", self._firmware_name) else: diff --git a/plugins/USBPrinting/plugin.json b/plugins/USBPrinting/plugin.json index 45971d858b..c05ea65f2d 100644 --- a/plugins/USBPrinting/plugin.json +++ b/plugins/USBPrinting/plugin.json @@ -2,7 +2,7 @@ "name": "USB printing", "author": "Ultimaker B.V.", "version": "1.0.2", - "api": "6.0", + "api": "7.0", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "i18n-catalog": "cura" } diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py b/plugins/UltimakerMachineActions/UM2UpgradeSelection.py deleted file mode 100644 index 999cb1d35a..0000000000 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelection.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (c) 2018 Ultimaker B.V. -# Uranium is released under the terms of the LGPLv3 or higher. - -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") - - -## The Ultimaker 2 can have a few revisions & upgrades. -class UM2UpgradeSelection(MachineAction): - def __init__(self): - super().__init__("UM2UpgradeSelection", catalog.i18nc("@action", "Select upgrades")) - self._qml_url = "UM2UpgradeSelectionMachineAction.qml" - - self._container_registry = ContainerRegistry.getInstance() - - self._current_global_stack = None - - Application.getInstance().globalContainerStackChanged.connect(self._onGlobalStackChanged) - self._reset() - - def _reset(self): - self.hasVariantsChanged.emit() - - def _onGlobalStackChanged(self): - if self._current_global_stack: - self._current_global_stack.metaDataChanged.disconnect(self._onGlobalStackMetaDataChanged) - - self._current_global_stack = Application.getInstance().getGlobalContainerStack() - if self._current_global_stack: - self._current_global_stack.metaDataChanged.connect(self._onGlobalStackMetaDataChanged) - self._reset() - - def _onGlobalStackMetaDataChanged(self): - self._reset() - - hasVariantsChanged = pyqtSignal() - - def setHasVariants(self, has_variants = True): - global_container_stack = Application.getInstance().getGlobalContainerStack() - if global_container_stack: - variant_container = global_container_stack.extruders["0"].variant - - if has_variants: - global_container_stack.setMetaDataEntry("has_variants", True) - - # Set the variant container to a sane default - empty_container = ContainerRegistry.getInstance().getEmptyInstanceContainer() - if type(variant_container) == type(empty_container): - search_criteria = { "type": "variant", "definition": "ultimaker2", "id": "*0.4*" } - containers = self._container_registry.findInstanceContainers(**search_criteria) - if containers: - global_container_stack.extruders["0"].variant = containers[0] - else: - # The metadata entry is stored in an ini, and ini files are parsed as strings only. - # Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False. - if "has_variants" in global_container_stack.getMetaData(): - global_container_stack.removeMetaDataEntry("has_variants") - - # Set the variant container to an empty variant - global_container_stack.extruders["0"].variant = ContainerRegistry.getInstance().getEmptyInstanceContainer() - - Application.getInstance().globalContainerStackChanged.emit() - self._reset() - - @pyqtProperty(bool, fset = setHasVariants, notify = hasVariantsChanged) - def hasVariants(self): - if self._current_global_stack: - return parseBool(self._current_global_stack.getMetaDataEntry("has_variants", "false")) diff --git a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml b/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml deleted file mode 100644 index 13525f6eb3..0000000000 --- a/plugins/UltimakerMachineActions/UM2UpgradeSelectionMachineAction.qml +++ /dev/null @@ -1,55 +0,0 @@ -// 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.MachineAction -{ - UM.I18nCatalog { id: catalog; name: "cura"; } - anchors.fill: parent - - Item - { - id: upgradeSelectionMachineAction - anchors.fill: parent - anchors.topMargin: UM.Theme.getSize("default_margin").width * 5 - anchors.leftMargin: UM.Theme.getSize("default_margin").width * 4 - - Label - { - id: pageDescription - 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.") - font: UM.Theme.getFont("medium") - color: UM.Theme.getColor("text") - renderType: Text.NativeRendering - } - - 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 - - Connections - { - target: manager - onHasVariantsChanged: olssonBlockCheckBox.checked = manager.hasVariants - } - } - } -} diff --git a/plugins/UltimakerMachineActions/__init__.py b/plugins/UltimakerMachineActions/__init__.py index e87949580a..aecb3b0ad6 100644 --- a/plugins/UltimakerMachineActions/__init__.py +++ b/plugins/UltimakerMachineActions/__init__.py @@ -1,9 +1,8 @@ -# Copyright (c) 2018 Ultimaker B.V. +# Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. from . import BedLevelMachineAction from . import UMOUpgradeSelection -from . import UM2UpgradeSelection def getMetaData(): return {} @@ -11,6 +10,5 @@ def getMetaData(): def register(app): return { "machine_action": [ BedLevelMachineAction.BedLevelMachineAction(), - UMOUpgradeSelection.UMOUpgradeSelection(), - UM2UpgradeSelection.UM2UpgradeSelection() + UMOUpgradeSelection.UMOUpgradeSelection() ]} diff --git a/plugins/UltimakerMachineActions/plugin.json b/plugins/UltimakerMachineActions/plugin.json index 3e3e0af9b0..e33d77c154 100644 --- a/plugins/UltimakerMachineActions/plugin.json +++ b/plugins/UltimakerMachineActions/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py index af9635d384..8419b3beeb 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/Profile.py @@ -6,7 +6,7 @@ import io #To write config files to strings as if they were files. from typing import Dict, List, Optional, Tuple import UM.VersionUpgrade -from UM.Logger import Logger + ## Creates a new profile instance by parsing a serialised profile in version 1 # of the file format. @@ -20,6 +20,7 @@ def importFrom(serialised: str, filename: str) -> Optional["Profile"]: except (configparser.Error, UM.VersionUpgrade.FormatException, UM.VersionUpgrade.InvalidVersionException): return None + ## A representation of a profile used as intermediary form for conversion from # one format to the other. class Profile: diff --git a/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json b/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json index cad94c2eb5..547c1f9f4e 100644 --- a/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade21to22/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json b/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json index 7da1e7a56d..51e3cd6794 100644 --- a/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade22to24/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json b/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json index e1f0a47685..4a2c04ad8e 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py index 9d7c7646cc..45cdaebe87 100644 --- a/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py +++ b/plugins/VersionUpgrade/VersionUpgrade25to26/tests/TestVersionUpgrade25to26.py @@ -1,5 +1,8 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import configparser #To check whether the appropriate exceptions are raised. import pytest #To register tests with. diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json b/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json index 6cdbd64cbb..a72c5210f9 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py b/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py index eebaca23c6..6235578238 100644 --- a/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py +++ b/plugins/VersionUpgrade/VersionUpgrade26to27/tests/TestVersionUpgrade26to27.py @@ -3,7 +3,9 @@ import configparser #To check whether the appropriate exceptions are raised. import pytest #To register tests with. - +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import VersionUpgrade26to27 #The module we're testing. ## Creates an instance of the upgrader to test with. diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json index 885d741a8c..787d03fdf3 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py b/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py index cae08ebcfd..8ac6616511 100644 --- a/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py +++ b/plugins/VersionUpgrade/VersionUpgrade27to30/tests/TestVersionUpgrade27to30.py @@ -1,6 +1,8 @@ # Copyright (c) 2017 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import configparser #To parse the resulting config files. import pytest #To register tests with. diff --git a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json index d5f22649c1..7303d576cc 100644 --- a/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade30to31/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json index eb489169e0..a6f8f743e6 100644 --- a/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade32to33/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json index 9649010643..4f8c7b0a94 100644 --- a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json b/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json index 71b13ee5a9..bdcb6598d1 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py b/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py index b74e6f35ac..9f306e74fa 100644 --- a/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py +++ b/plugins/VersionUpgrade/VersionUpgrade34to35/tests/TestVersionUpgrade34to35.py @@ -1,6 +1,8 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. - +import os.path +import sys +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) import configparser #To parse the resulting config files. import pytest #To register tests with. diff --git a/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json b/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json index 578594fb6d..68259c1b9c 100644 --- a/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade35to40/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.0", "description": "Upgrades configurations from Cura 3.5 to Cura 4.0.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py b/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py index 7f39bb9d39..09be805147 100644 --- a/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/__init__.py @@ -14,7 +14,7 @@ def getMetaData() -> Dict[str, Any]: return { "version_upgrade": { # From To Upgrade function - ("preferences", 6000006): ("preferences", 6000007, upgrade.upgradePreferences), + ("preferences", 6000006): ("preferences", 6000007, upgrade.upgradePreferences), ("machine_stack", 4000006): ("machine_stack", 4000007, upgrade.upgradeStack), ("extruder_train", 4000006): ("extruder_train", 4000007, upgrade.upgradeStack), ("definition_changes", 4000006): ("definition_changes", 4000007, upgrade.upgradeInstanceContainer), diff --git a/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json b/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json index b1c6d75669..67474508ec 100644 --- a/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json +++ b/plugins/VersionUpgrade/VersionUpgrade40to41/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py new file mode 100644 index 0000000000..305cce16c6 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/VersionUpgrade41to42.py @@ -0,0 +1,340 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser +import io +import os.path # To get the file ID. +from typing import Dict, List, Tuple + +from UM.VersionUpgrade import VersionUpgrade + +_renamed_settings = { + "support_minimal_diameter": "support_tower_maximum_supported_diameter" +} # type: Dict[str, str] +_removed_settings = ["prime_tower_circular", "max_feedrate_z_override"] # type: List[str] +_renamed_profiles = { + # Include CreawsomeMod profiles here as well for the people who installed that. + # Definitions. + "creawsome_base": "creality_base", + "creawsome_cr10": "creality_cr10", + "creawsome_cr10mini": "creality_cr10mini", + "creawsome_cr10s": "creality_cr10s", + "creawsome_cr10s4": "creality_cr10s4", + "creawsome_cr10s5": "creality_cr10s5", + "creawsome_cr10spro": "creality_cr10spro", + "creawsome_cr20": "creality_cr20", + "creawsome_cr20pro": "creality_cr20pro", + "creawsome_ender2": "creality_ender2", + "creawsome_ender3": "creality_ender3", + "creawsome_ender4": "creality_ender4", + "creawsome_ender5": "creality_ender5", + + # Extruder definitions. + "creawsome_base_extruder_0": "creality_base_extruder_0", + + # Variants. + "creawsome_base_0.2": "creality_base_0.2", + "creawsome_base_0.3": "creality_base_0.3", + "creawsome_base_0.4": "creality_base_0.4", + "creawsome_base_0.5": "creality_base_0.5", + "creawsome_base_0.6": "creality_base_0.6", + "creawsome_base_0.8": "creality_base_0.8", + "creawsome_base_1.0": "creality_base_1.0", + "creawsome_cr10_0.2": "creality_cr10_0.2", + "creawsome_cr10_0.3": "creality_cr10_0.3", + "creawsome_cr10_0.4": "creality_cr10_0.4", + "creawsome_cr10_0.5": "creality_cr10_0.5", + "creawsome_cr10_0.6": "creality_cr10_0.6", + "creawsome_cr10_0.8": "creality_cr10_0.8", + "creawsome_cr10_1.0": "creality_cr10_1.0", + "creawsome_cr10mini_0.2": "creality_cr10mini_0.2", + "creawsome_cr10mini_0.3": "creality_cr10mini_0.3", + "creawsome_cr10mini_0.4": "creality_cr10mini_0.4", + "creawsome_cr10mini_0.5": "creality_cr10mini_0.5", + "creawsome_cr10mini_0.6": "creality_cr10mini_0.6", + "creawsome_cr10mini_0.8": "creality_cr10mini_0.8", + "creawsome_cr10mini_1.0": "creality_cr10mini_1.0", + "creawsome_cr10s4_0.2": "creality_cr10s4_0.2", + "creawsome_cr10s4_0.3": "creality_cr10s4_0.3", + "creawsome_cr10s4_0.4": "creality_cr10s4_0.4", + "creawsome_cr10s4_0.5": "creality_cr10s4_0.5", + "creawsome_cr10s4_0.6": "creality_cr10s4_0.6", + "creawsome_cr10s4_0.8": "creality_cr10s4_0.8", + "creawsome_cr10s4_1.0": "creality_cr10s4_1.0", + "creawsome_cr10s5_0.2": "creality_cr10s5_0.2", + "creawsome_cr10s5_0.3": "creality_cr10s5_0.3", + "creawsome_cr10s5_0.4": "creality_cr10s5_0.4", + "creawsome_cr10s5_0.5": "creality_cr10s5_0.5", + "creawsome_cr10s5_0.6": "creality_cr10s5_0.6", + "creawsome_cr10s5_0.8": "creality_cr10s5_0.8", + "creawsome_cr10s5_1.0": "creality_cr10s5_1.0", + "creawsome_cr10s_0.2": "creality_cr10s_0.2", + "creawsome_cr10s_0.3": "creality_cr10s_0.3", + "creawsome_cr10s_0.4": "creality_cr10s_0.4", + "creawsome_cr10s_0.5": "creality_cr10s_0.5", + "creawsome_cr10s_0.6": "creality_cr10s_0.6", + "creawsome_cr10s_0.8": "creality_cr10s_0.8", + "creawsome_cr10s_1.0": "creality_cr10s_1.0", + "creawsome_cr10spro_0.2": "creality_cr10spro_0.2", + "creawsome_cr10spro_0.3": "creality_cr10spro_0.3", + "creawsome_cr10spro_0.4": "creality_cr10spro_0.4", + "creawsome_cr10spro_0.5": "creality_cr10spro_0.5", + "creawsome_cr10spro_0.6": "creality_cr10spro_0.6", + "creawsome_cr10spro_0.8": "creality_cr10spro_0.8", + "creawsome_cr10spro_1.0": "creality_cr10spro_1.0", + "creawsome_cr20_0.2": "creality_cr20_0.2", + "creawsome_cr20_0.3": "creality_cr20_0.3", + "creawsome_cr20_0.4": "creality_cr20_0.4", + "creawsome_cr20_0.5": "creality_cr20_0.5", + "creawsome_cr20_0.6": "creality_cr20_0.6", + "creawsome_cr20_0.8": "creality_cr20_0.8", + "creawsome_cr20_1.0": "creality_cr20_1.0", + "creawsome_cr20pro_0.2": "creality_cr20pro_0.2", + "creawsome_cr20pro_0.3": "creality_cr20pro_0.3", + "creawsome_cr20pro_0.4": "creality_cr20pro_0.4", + "creawsome_cr20pro_0.5": "creality_cr20pro_0.5", + "creawsome_cr20pro_0.6": "creality_cr20pro_0.6", + "creawsome_cr20pro_0.8": "creality_cr20pro_0.8", + "creawsome_cr20pro_1.0": "creality_cr20pro_1.0", + "creawsome_ender2_0.2": "creality_ender2_0.2", + "creawsome_ender2_0.3": "creality_ender2_0.3", + "creawsome_ender2_0.4": "creality_ender2_0.4", + "creawsome_ender2_0.5": "creality_ender2_0.5", + "creawsome_ender2_0.6": "creality_ender2_0.6", + "creawsome_ender2_0.8": "creality_ender2_0.8", + "creawsome_ender2_1.0": "creality_ender2_1.0", + "creawsome_ender3_0.2": "creality_ender3_0.2", + "creawsome_ender3_0.3": "creality_ender3_0.3", + "creawsome_ender3_0.4": "creality_ender3_0.4", + "creawsome_ender3_0.5": "creality_ender3_0.5", + "creawsome_ender3_0.6": "creality_ender3_0.6", + "creawsome_ender3_0.8": "creality_ender3_0.8", + "creawsome_ender3_1.0": "creality_ender3_1.0", + "creawsome_ender4_0.2": "creality_ender4_0.2", + "creawsome_ender4_0.3": "creality_ender4_0.3", + "creawsome_ender4_0.4": "creality_ender4_0.4", + "creawsome_ender4_0.5": "creality_ender4_0.5", + "creawsome_ender4_0.6": "creality_ender4_0.6", + "creawsome_ender4_0.8": "creality_ender4_0.8", + "creawsome_ender4_1.0": "creality_ender4_1.0", + "creawsome_ender5_0.2": "creality_ender5_0.2", + "creawsome_ender5_0.3": "creality_ender5_0.3", + "creawsome_ender5_0.4": "creality_ender5_0.4", + "creawsome_ender5_0.5": "creality_ender5_0.5", + "creawsome_ender5_0.6": "creality_ender5_0.6", + "creawsome_ender5_0.8": "creality_ender5_0.8", + "creawsome_ender5_1.0": "creality_ender5_1.0", + + # Upgrade for people who had the original Creality profiles from 4.1 and earlier. + "creality_cr10_extruder_0": "creality_base_extruder_0", + "creality_cr10s4_extruder_0": "creality_base_extruder_0", + "creality_cr10s5_extruder_0": "creality_base_extruder_0", + "creality_ender3_extruder_0": "creality_base_extruder_0" +} + +# For legacy Creality printers, select the correct quality profile depending on the material. +_creality_quality_per_material = { + # Since legacy Creality printers didn't have different variants, we always pick the 0.4mm variant. + "generic_abs_175": { + "high": "base_0.4_ABS_super", + "normal": "base_0.4_ABS_super", + "fast": "base_0.4_ABS_super", + "draft": "base_0.4_ABS_standard", + "extra_fast": "base_0.4_ABS_low", + "coarse": "base_0.4_ABS_low", + "extra_coarse": "base_0.4_ABS_low" + }, + "generic_petg_175": { + "high": "base_0.4_PETG_super", + "normal": "base_0.4_PETG_super", + "fast": "base_0.4_PETG_super", + "draft": "base_0.4_PETG_standard", + "extra_fast": "base_0.4_PETG_low", + "coarse": "base_0.4_PETG_low", + "extra_coarse": "base_0.4_PETG_low" + }, + "generic_pla_175": { + "high": "base_0.4_PLA_super", + "normal": "base_0.4_PLA_super", + "fast": "base_0.4_PLA_super", + "draft": "base_0.4_PLA_standard", + "extra_fast": "base_0.4_PLA_low", + "coarse": "base_0.4_PLA_low", + "extra_coarse": "base_0.4_PLA_low" + }, + "generic_tpu_175": { + "high": "base_0.4_TPU_super", + "normal": "base_0.4_TPU_super", + "fast": "base_0.4_TPU_super", + "draft": "base_0.4_TPU_standard", + "extra_fast": "base_0.4_TPU_standard", + "coarse": "base_0.4_TPU_standard", + "extra_coarse": "base_0.4_TPU_standard" + }, + "empty_material": { # For the global stack. + "high": "base_global_super", + "normal": "base_global_super", + "fast": "base_global_super", + "draft": "base_global_standard", + "extra_fast": "base_global_low", + "coarse": "base_global_low", + "extra_coarse": "base_global_low" + } +} + +# Default variant to select for legacy Creality printers, now that we have variants. +_default_variants = { + "creality_cr10_extruder_0": "creality_cr10_0.4", + "creality_cr10s4_extruder_0": "creality_cr10s4_0.4", + "creality_cr10s5_extruder_0": "creality_cr10s5_0.4", + "creality_ender3_extruder_0": "creality_ender3_0.4" +} + +# Whether the quality changes profile belongs to one of the upgraded printers can only be recognised by how they start. +# If they are, they must use the creality base definition so that they still belong to those printers. +_quality_changes_to_creality_base = { + "creality_cr10_extruder_0", + "creality_cr10s4_extruder_0", + "creality_cr10s5_extruder_0", + "creality_ender3_extruder_0", + "creality_cr10", + "creality_cr10s", + "creality_cr10s4", + "creality_cr10s5", + "creality_ender3", +} +_creality_limited_quality_type = { + "high": "super", + "normal": "super", + "fast": "super", + "draft": "draft", + "extra_fast": "draft", + "coarse": "draft", + "extra_coarse": "draft" +} + +## Upgrades configurations from the state they were in at version 4.1 to the +# state they should be in at version 4.2. +class VersionUpgrade41to42(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 4.1 format. + # + # Since the format may change, this is implemented for the 4.1 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "8" + + # Certain instance containers (such as definition changes) reference to a certain definition container + # Since a number of those changed name, we also need to update those. + old_definition = parser["general"]["definition"] + if old_definition in _renamed_profiles: + parser["general"]["definition"] = _renamed_profiles[old_definition] + + # Rename settings. + if "values" in parser: + for old_name, new_name in _renamed_settings.items(): + if old_name in parser["values"]: + parser["values"][new_name] = parser["values"][old_name] + del parser["values"][old_name] + # Remove settings. + for key in _removed_settings: + if key in parser["values"]: + del parser["values"][key] + + # For quality-changes profiles made for Creality printers, change the definition to the creality_base and make sure that the quality is something we have a profile for. + if parser["metadata"].get("type", "") == "quality_changes": + for possible_printer in _quality_changes_to_creality_base: + if os.path.basename(filename).startswith(possible_printer + "_"): + parser["general"]["definition"] = "creality_base" + parser["metadata"]["quality_type"] = _creality_limited_quality_type.get(parser["metadata"]["quality_type"], "draft") + break + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades Preferences to have the new version number. + # + # This renames the renamed settings in the list of visible settings. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "8" + + # Renamed settings. + if "visible_settings" in parser["general"]: + visible_settings = parser["general"]["visible_settings"] + visible_setting_set = set(visible_settings.split(";")) + for old_name, new_name in _renamed_settings.items(): + if old_name in visible_setting_set: + visible_setting_set.remove(old_name) + visible_setting_set.add(new_name) + for removed_key in _removed_settings: + if removed_key in visible_setting_set: + visible_setting_set.remove(removed_key) + parser["general"]["visible_settings"] = ";".join(visible_setting_set) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "8" + + # Change renamed profiles. + if "containers" in parser: + # For legacy Creality printers, change the variant to 0.4. + definition_id = parser["containers"]["6"] + if parser["metadata"].get("type", "machine") == "extruder_train": + if parser["containers"]["4"] == "empty_variant": # Necessary for people entering from CreawsomeMod who already had a variant. + if definition_id in _default_variants: + parser["containers"]["4"] = _default_variants[definition_id] + if definition_id == "creality_cr10_extruder_0": # We can't disambiguate between Creality CR-10 and Creality-CR10S since they share the same extruder definition. Have to go by the name. + if "cr-10s" in parser["metadata"].get("machine", "Creality CR-10").lower(): # Not perfect, since the user can change this name :( + parser["containers"]["4"] = "creality_cr10s_0.4" + + # Also change the quality to go along with it. + material_id = parser["containers"]["3"] + old_quality_id = parser["containers"]["2"] + if material_id in _creality_quality_per_material and old_quality_id in _creality_quality_per_material[material_id]: + if definition_id == "creality_cr10_extruder_0": # We can't disambiguate between Creality CR-10 and Creality-CR10S since they share the same extruder definition. Have to go by the name. + if "cr-10s" in parser["metadata"].get("machine", "Creality CR-10").lower(): # Not perfect, since the user can change this name :( + parser["containers"]["2"] = _creality_quality_per_material[material_id][old_quality_id] + + stack_copy = {} # type: Dict[str, str] # Make a copy so that we don't modify the dict we're iterating over. + stack_copy.update(parser["containers"]) + for position, profile_id in stack_copy.items(): + if profile_id in _renamed_profiles: + parser["containers"][position] = _renamed_profiles[profile_id] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py b/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py new file mode 100644 index 0000000000..8fe718ca83 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/__init__.py @@ -0,0 +1,59 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade41to42 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade41to42.VersionUpgrade41to42() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000007): ("preferences", 6000008, upgrade.upgradePreferences), + ("machine_stack", 4000007): ("machine_stack", 4000008, upgrade.upgradeStack), + ("extruder_train", 4000007): ("extruder_train", 4000008, upgrade.upgradeStack), + ("definition_changes", 4000007): ("definition_changes", 4000008, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000007): ("quality_changes", 4000008, upgrade.upgradeInstanceContainer), + ("quality", 4000007): ("quality", 4000008, upgrade.upgradeInstanceContainer), + ("user", 4000007): ("user", 4000008, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json b/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json new file mode 100644 index 0000000000..506000aae9 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade41to42/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.1 to 4.2", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.1 to Cura 4.2.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py new file mode 100644 index 0000000000..d6489f6d8b --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade42to43/VersionUpgrade42to43.py @@ -0,0 +1,160 @@ +import configparser +import io +from typing import Dict, Tuple, List + +from UM.VersionUpgrade import VersionUpgrade + +_renamed_profiles = {"generic_pla_0.4_coarse": "jbo_generic_pla_0.4_coarse", + "generic_pla_0.4_fine": "jbo_generic_pla_fine", + "generic_pla_0.4_medium": "jbo_generic_pla_medium", + "generic_pla_0.4_ultrafine": "jbo_generic_pla_ultrafine", + + "generic_petg_0.4_coarse": "jbo_generic_petg_0.4_coarse", + "generic_petg_0.4_fine": "jbo_generic_petg_fine", + "generic_petg_0.4_medium": "jbo_generic_petg_medium", + } + +# - The variant "imade3d jellybox 0.4 mm 2-fans" for machine definition "imade3d_jellybox" +# is now "0.4 mm" for machine definition "imade3d jellybox_2". +# - Materials "imade3d_petg_green" and "imade3d_petg_pink" are now "imade3d_petg_175". +# - Materials "imade3d_pla_green" and "imade3d_pla_pink" are now "imade3d_petg_175". +# +# Note: Theoretically, the old material profiles with "_2-fans" at the end should be updated to: +# - machine definition: imade3d_jellybox_2 +# - variant: 0.4 mm (for jellybox 2) +# - material: (as an example) imade3d_petg_175_imade3d_jellybox_2_0.4_mm +# +# But this involves changing the definition of the global stack and the extruder stacks, which can cause more trouble +# than what we can fix. So, here, we update all material variants, regardless of having "_2-fans" at the end or not, to +# jellybox_0.4_mm. +# +_renamed_material_profiles = { # PETG + "imade3d_petg_green": "imade3d_petg_175", + "imade3d_petg_green_imade3d_jellybox": "imade3d_petg_175_imade3d_jellybox", + "imade3d_petg_green_imade3d_jellybox_0.4_mm": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + "imade3d_petg_green_imade3d_jellybox_0.4_mm_2-fans": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + "imade3d_petg_pink": "imade3d_petg_175", + "imade3d_petg_pink_imade3d_jellybox": "imade3d_petg_175_imade3d_jellybox", + "imade3d_petg_pink_imade3d_jellybox_0.4_mm": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + "imade3d_petg_pink_imade3d_jellybox_0.4_mm_2-fans": "imade3d_petg_175_imade3d_jellybox_0.4_mm", + # PLA + "imade3d_pla_green": "imade3d_pla_175", + "imade3d_pla_green_imade3d_jellybox": "imade3d_pla_175_imade3d_jellybox", + "imade3d_pla_green_imade3d_jellybox_0.4_mm": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + "imade3d_pla_green_imade3d_jellybox_0.4_mm_2-fans": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + "imade3d_pla_pink": "imade3d_pla_175", + "imade3d_pla_pink_imade3d_jellybox": "imade3d_pla_175_imade3d_jellybox", + "imade3d_pla_pink_imade3d_jellybox_0.4_mm": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + "imade3d_pla_pink_imade3d_jellybox_0.4_mm_2-fans": "imade3d_pla_175_imade3d_jellybox_0.4_mm", + } + +_removed_settings = { + "start_layers_at_same_position" +} + +_renamed_settings = { + "support_infill_angle": "support_infill_angles" +} # type: Dict[str, str] + +## Upgrades configurations from the state they were in at version 4.2 to the +# state they should be in at version 4.3. +class VersionUpgrade42to43(VersionUpgrade): + ## Gets the version number from a CFG file in Uranium's 4.2 format. + # + # Since the format may change, this is implemented for the 4.2 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + def upgradePreferences(self, serialized: str, filename: str): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + if "camera_perspective_mode" in parser["general"] and parser["general"]["camera_perspective_mode"] == "orthogonal": + parser["general"]["camera_perspective_mode"] = "orthographic" + + # Fix renamed settings for visibility + if "visible_settings" in parser["general"]: + all_setting_keys = parser["general"]["visible_settings"].strip().split(";") + if all_setting_keys: + for idx, key in enumerate(all_setting_keys): + if key in _renamed_settings: + all_setting_keys[idx] = _renamed_settings[key] + parser["general"]["visible_settings"] = ";".join(all_setting_keys) + + parser["metadata"]["setting_version"] = "9" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "9" + + if "values" in parser: + for old_name, new_name in _renamed_settings.items(): + if old_name in parser["values"]: + parser["values"][new_name] = parser["values"][old_name] + del parser["values"][old_name] + for key in _removed_settings: + if key in parser["values"]: + del parser["values"][key] + + if "support_infill_angles" in parser["values"]: + old_value = float(parser["values"]["support_infill_angles"]) + new_value = [int(round(old_value))] + parser["values"]["support_infill_angles"] = str(new_value) + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "9" + # Handle changes for the imade3d jellybox. The machine was split up into parts (eg; a 2 fan version and a single + # fan version. Perviously it used variants for this. The only upgrade we can do here is strip that variant. + # This is because we only upgrade per stack (and to fully do these changes, we'd need to switch out something + # in the global container based on changes made to the extruder stack) + if parser["containers"]["6"] == "imade3d_jellybox_extruder_0": + quality_id = parser["containers"]["2"] + if quality_id.endswith("_2-fans"): + parser["containers"]["2"] = quality_id.replace("_2-fans", "") + + if parser["containers"]["2"] in _renamed_profiles: + parser["containers"]["2"] = _renamed_profiles[parser["containers"]["2"]] + + material_id = parser["containers"]["3"] + if material_id in _renamed_material_profiles: + parser["containers"]["3"] = _renamed_material_profiles[material_id] + variant_id = parser["containers"]["4"] + + if variant_id.endswith("_2-fans"): + parser["containers"]["4"] = variant_id.replace("_2-fans", "") + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/__init__.py b/plugins/VersionUpgrade/VersionUpgrade42to43/__init__.py new file mode 100644 index 0000000000..7400bbb989 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade42to43/__init__.py @@ -0,0 +1,59 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade42to43 + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade42to43.VersionUpgrade42to43() + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000008): ("preferences", 6000009, upgrade.upgradePreferences), + ("machine_stack", 4000008): ("machine_stack", 4000009, upgrade.upgradeStack), + ("extruder_train", 4000008): ("extruder_train", 4000009, upgrade.upgradeStack), + ("definition_changes", 4000008): ("definition_changes", 4000009, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000008): ("quality_changes", 4000009, upgrade.upgradeInstanceContainer), + ("quality", 4000008): ("quality", 4000009, upgrade.upgradeInstanceContainer), + ("user", 4000008): ("user", 4000009, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return { "version_upgrade": upgrade } \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade42to43/plugin.json b/plugins/VersionUpgrade/VersionUpgrade42to43/plugin.json new file mode 100644 index 0000000000..8a5e838668 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade42to43/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.2 to 4.3", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.2 to Cura 4.3.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py new file mode 100644 index 0000000000..8b69852cb2 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/VersionUpgrade43to44.py @@ -0,0 +1,122 @@ +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade +from UM.Util import parseBool # To parse whether the Alternate Skin Rotations function is activated. + +_renamed_container_id_map = { + "ultimaker2_0.25": "ultimaker2_olsson_0.25", + "ultimaker2_0.4": "ultimaker2_olsson_0.4", + "ultimaker2_0.6": "ultimaker2_olsson_0.6", + "ultimaker2_0.8": "ultimaker2_olsson_0.8", + "ultimaker2_extended_0.25": "ultimaker2_extended_olsson_0.25", + "ultimaker2_extended_0.4": "ultimaker2_extended_olsson_0.4", + "ultimaker2_extended_0.6": "ultimaker2_extended_olsson_0.6", + "ultimaker2_extended_0.8": "ultimaker2_extended_olsson_0.8", + # HMS434 "extra coarse", "super coarse", and "ultra coarse" are removed. + "hms434_global_Extra_Coarse_Quality": "hms434_global_Normal_Quality", + "hms434_global_Super_Coarse_Quality": "hms434_global_Normal_Quality", + "hms434_global_Ultra_Coarse_Quality": "hms434_global_Normal_Quality", + # HMS434 "0.25", "0.6", "1.2", and "1.5" nozzles are removed. + "hms434_0.25tpnozzle": "hms434_0.4tpnozzle", + "hms434_0.6tpnozzle": "hms434_0.4tpnozzle", + "hms434_1.2tpnozzle": "hms434_0.4tpnozzle", + "hms434_1.5tpnozzle": "hms434_0.4tpnozzle", +} + + +class VersionUpgrade43to44(VersionUpgrade): + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades Preferences to have the new version number. + # + # This renames the renamed settings in the list of visible settings. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "10" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "10" + + # Intent profiles were added, so the quality changes should match with no intent (so "default") + if parser["metadata"].get("type", "") == "quality_changes": + parser["metadata"]["intent_category"] = "default" + + if "values" in parser: + # Alternate skin rotation should be translated to top/bottom line directions. + if "skin_alternate_rotation" in parser["values"] and parseBool(parser["values"]["skin_alternate_rotation"]): + parser["values"]["skin_angles"] = "[45, 135, 0, 90]" + # Unit of adaptive layers topography size changed. + if "adaptive_layer_height_threshold" in parser["values"]: + val = parser["values"]["adaptive_layer_height_threshold"] + if val.startswith("="): + val = val[1:] + val = "=({val}) / 1000".format(val = val) # Convert microns to millimetres. Works even if the profile contained a formula. + parser["values"]["adaptive_layer_height_threshold"] = val + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "10" + + if "containers" in parser: + # With the ContainerTree refactor, UM2 with Olsson block got moved to a separate definition. + if "6" in parser["containers"]: + if parser["containers"]["6"] == "ultimaker2": + if "metadata" in parser and "has_variants" in parser["metadata"] and parser["metadata"]["has_variants"] == "True": # This is an Olsson block upgraded UM2! + parser["containers"]["6"] = "ultimaker2_olsson" + del parser["metadata"]["has_variants"] + elif parser["containers"]["6"] == "ultimaker2_extended": + if "metadata" in parser and "has_variants" in parser["metadata"] and parser["metadata"]["has_variants"] == "True": # This is an Olsson block upgraded UM2E! + parser["containers"]["6"] = "ultimaker2_extended_olsson" + del parser["metadata"]["has_variants"] + + # We should only have 6 levels when we start. + if "7" in parser["containers"]: + return ([], []) + + # We added the intent container in Cura 4.4. This means that all other containers move one step down. + parser["containers"]["7"] = parser["containers"]["6"] + parser["containers"]["6"] = parser["containers"]["5"] + parser["containers"]["5"] = parser["containers"]["4"] + parser["containers"]["4"] = parser["containers"]["3"] + parser["containers"]["3"] = parser["containers"]["2"] + parser["containers"]["2"] = "empty_intent" + + # Update renamed containers + for key, value in parser["containers"].items(): + if value in _renamed_container_id_map: + parser["containers"][key] = _renamed_container_id_map[value] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/__init__.py b/plugins/VersionUpgrade/VersionUpgrade43to44/__init__.py new file mode 100644 index 0000000000..506ec6c03d --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/__init__.py @@ -0,0 +1,61 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade43to44 + + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade43to44.VersionUpgrade43to44() + + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000009): ("preferences", 6000010, upgrade.upgradePreferences), + ("machine_stack", 4000009): ("machine_stack", 4000010, upgrade.upgradeStack), + ("extruder_train", 4000009): ("extruder_train", 4000010, upgrade.upgradeStack), + ("definition_changes", 4000009): ("definition_changes", 4000010, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000009): ("quality_changes", 4000010, upgrade.upgradeInstanceContainer), + ("quality", 4000009): ("quality", 4000010, upgrade.upgradeInstanceContainer), + ("user", 4000009): ("user", 4000010, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/plugin.json b/plugins/VersionUpgrade/VersionUpgrade43to44/plugin.json new file mode 100644 index 0000000000..37575396e3 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.3 to 4.4", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.3 to Cura 4.4.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade43to44/tests/TestVersionUpgrade43To44.py b/plugins/VersionUpgrade/VersionUpgrade43to44/tests/TestVersionUpgrade43To44.py new file mode 100644 index 0000000000..dc770c2c6f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade43to44/tests/TestVersionUpgrade43To44.py @@ -0,0 +1,36 @@ +import configparser + +import VersionUpgrade43to44 + +before_update = """[general] +version = 4 +name = Ultimaker 3 +id = Ultimaker 3 + +[metadata] +type = machine + +[containers] +0 = user_profile +1 = quality_changes +2 = quality +3 = material +4 = variant +5 = definition_changes +6 = definition +""" + + +def test_upgrade(): + upgrader = VersionUpgrade43to44.VersionUpgrade43to44() + file_name, new_data = upgrader.upgradeStack(before_update, "whatever") + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(new_data[0]) + assert parser["containers"]["0"] == "user_profile" + assert parser["containers"]["1"] == "quality_changes" + assert parser["containers"]["2"] == "empty_intent" + assert parser["containers"]["3"] == "quality" + assert parser["containers"]["4"] == "material" + assert parser["containers"]["5"] == "variant" + assert parser["containers"]["6"] == "definition_changes" + assert parser["containers"]["7"] == "definition" \ No newline at end of file diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py b/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py new file mode 100644 index 0000000000..1d278764f0 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/VersionUpgrade44to45.py @@ -0,0 +1,69 @@ +import configparser +from typing import Tuple, List +import io +from UM.VersionUpgrade import VersionUpgrade + +# Merged preferences: machine_head_polygon and machine_head_with_fans_polygon -> machine_head_with_fans_polygon +# When both are present, machine_head_polygon will be removed +# When only one of the two is present, it's value will be used + + +class VersionUpgrade44to45(VersionUpgrade): + def getCfgVersion(self, serialised: str) -> int: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) # Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = "0")) + return format_version * 1000000 + setting_version + + ## Upgrades Preferences to have the new version number. + # + # This renames the renamed settings in the list of visible settings. + def upgradePreferences(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "11" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades instance containers to have the new version + # number. + # + # This renames the renamed settings in the containers. + def upgradeInstanceContainer(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None, comment_prefixes=()) + parser.read_string(serialized) + + # Update version number. + parser["metadata"]["setting_version"] = "11" + + if "values" in parser: + # merge machine_head_with_fans_polygon (preferred) and machine_head_polygon + if "machine_head_with_fans_polygon" in parser["values"]: + if "machine_head_polygon" in parser["values"]: + del parser["values"]["machine_head_polygon"] + elif "machine_head_polygon" in parser["values"]: + parser["values"]["machine_head_with_fans_polygon"] = parser["values"]["machine_head_polygon"] + del parser["values"]["machine_head_polygon"] + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] + + ## Upgrades stacks to have the new version number. + def upgradeStack(self, serialized: str, filename: str) -> Tuple[List[str], List[str]]: + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + if "metadata" not in parser: + parser["metadata"] = {} + parser["metadata"]["setting_version"] = "11" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/__init__.py b/plugins/VersionUpgrade/VersionUpgrade44to45/__init__.py new file mode 100644 index 0000000000..06a9d66c50 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/__init__.py @@ -0,0 +1,61 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Any, Dict, TYPE_CHECKING + +from . import VersionUpgrade44to45 + + +if TYPE_CHECKING: + from UM.Application import Application + +upgrade = VersionUpgrade44to45.VersionUpgrade44to45() + + +def getMetaData() -> Dict[str, Any]: + return { + "version_upgrade": { + # From To Upgrade function + ("preferences", 6000010): ("preferences", 6000011, upgrade.upgradePreferences), + ("machine_stack", 4000010): ("machine_stack", 4000011, upgrade.upgradeStack), + ("extruder_train", 4000010): ("extruder_train", 4000011, upgrade.upgradeStack), + ("definition_changes", 4000010): ("definition_changes", 4000011, upgrade.upgradeInstanceContainer), + ("quality_changes", 4000010): ("quality_changes", 4000011, upgrade.upgradeInstanceContainer), + ("quality", 4000010): ("quality", 4000011, upgrade.upgradeInstanceContainer), + ("user", 4000010): ("user", 4000011, upgrade.upgradeInstanceContainer), + }, + "sources": { + "preferences": { + "get_version": upgrade.getCfgVersion, + "location": {"."} + }, + "machine_stack": { + "get_version": upgrade.getCfgVersion, + "location": {"./machine_instances"} + }, + "extruder_train": { + "get_version": upgrade.getCfgVersion, + "location": {"./extruders"} + }, + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality_changes"} + }, + "quality": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app: "Application") -> Dict[str, Any]: + return {"version_upgrade": upgrade} diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/plugin.json b/plugins/VersionUpgrade/VersionUpgrade44to45/plugin.json new file mode 100644 index 0000000000..f7b6157118 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "Version Upgrade 4.4 to 4.5", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 4.4 to Cura 4.5.", + "api": "7.0", + "i18n-catalog": "cura" +} diff --git a/plugins/VersionUpgrade/VersionUpgrade44to45/tests/TestVersionUpgrade44To45.py b/plugins/VersionUpgrade/VersionUpgrade44to45/tests/TestVersionUpgrade44To45.py new file mode 100644 index 0000000000..0c1bb55985 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade44to45/tests/TestVersionUpgrade44To45.py @@ -0,0 +1,42 @@ +import configparser + +import VersionUpgrade44to45 +import pytest + +before_update = """[general] +version = 4 +name = Creality CR-10S_settings +definition = creality_cr10s + +[metadata] +type = definition_changes +setting_version = 11 + +[values] +%s +""" +before_after_list = [ + ("machine_head_with_fans_polygon = [[-99, 99], [-99, -44], [45, 99], [45, -44]]", "[[-99, 99], [-99, -44], [45, 99], [45, -44]]"), + ("", None), + ("machine_head_polygon = [[-98, 99], [-99, -44], [45, 99], [45, -44]]", "[[-98, 99], [-99, -44], [45, 99], [45, -44]]"), + ("machine_head_polygon = [[-87, 99], [-99, -44], [45, 99], [45, -44]]\nmachine_head_with_fans_polygon = [[-99, 99], [-99, -44], [45, 99], [45, -44]]", "[[-99, 99], [-99, -44], [45, 99], [45, -44]]"), + ] + + +class TestVersionUpgrade44to45: + + @pytest.mark.parametrize("after_string, after_value", before_after_list) + def test_upgrade(self, after_string, after_value): + upgrader = VersionUpgrade44to45.VersionUpgrade44to45() + + + file_name, new_data = upgrader.upgradeInstanceContainer(before_update % after_string, "whatever") + parser = configparser.ConfigParser(interpolation=None) + parser.read_string(new_data[0]) + + if after_value is None: + assert "machine_head_with_fans_polygon" not in parser["values"] + else: + assert parser["values"]["machine_head_with_fans_polygon"] == after_value + + assert "machine_head_polygon" not in parser["values"] \ No newline at end of file diff --git a/plugins/X3DReader/plugin.json b/plugins/X3DReader/plugin.json index 1fc14104ed..17bb3a96d1 100644 --- a/plugins/X3DReader/plugin.json +++ b/plugins/X3DReader/plugin.json @@ -3,6 +3,6 @@ "author": "Seva Alekseyev", "version": "1.0.1", "description": "Provides support for reading X3D files.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/XRayView/plugin.json b/plugins/XRayView/plugin.json index 71cc165b6c..ff220ed97c 100644 --- a/plugins/XRayView/plugin.json +++ b/plugins/XRayView/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides the X-Ray view.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/XmlMaterialProfile/XmlMaterialProfile.py b/plugins/XmlMaterialProfile/XmlMaterialProfile.py index f057585cb5..52b204affc 100644 --- a/plugins/XmlMaterialProfile/XmlMaterialProfile.py +++ b/plugins/XmlMaterialProfile/XmlMaterialProfile.py @@ -6,7 +6,7 @@ import io import json #To parse the product-to-id mapping file. import os.path #To find the product-to-id mapping. import sys -from typing import Any, Dict, List, Optional, Tuple, cast, Set +from typing import Any, Dict, List, Optional, Tuple, cast, Set, Union import xml.etree.ElementTree as ET from UM.Resources import Resources @@ -17,9 +17,13 @@ from UM.Settings.ContainerRegistry import ContainerRegistry from UM.ConfigurationErrorMessage import ConfigurationErrorMessage from cura.CuraApplication import CuraApplication +from cura.Machines.ContainerTree import ContainerTree from cura.Machines.VariantType import VariantType -from .XmlMaterialValidator import XmlMaterialValidator +try: + from .XmlMaterialValidator import XmlMaterialValidator +except (ImportError, SystemError): + import XmlMaterialValidator # type: ignore # This fixes the tests not being able to import. ## Handles serializing and deserializing material containers from an XML file @@ -40,11 +44,11 @@ class XmlMaterialProfile(InstanceContainer): # # \param xml_version: The version number found in an XML file. # \return The corresponding setting_version. - @classmethod - def xmlVersionToSettingVersion(cls, xml_version: str) -> int: + @staticmethod + def xmlVersionToSettingVersion(xml_version: str) -> int: if xml_version == "1.3": return CuraApplication.SettingVersion - return 0 #Older than 1.3. + return 0 # Older than 1.3. def getInheritedFiles(self): return self._inherited_files @@ -63,28 +67,28 @@ class XmlMaterialProfile(InstanceContainer): Logger.log("w", "Can't change metadata {key} of material {material_id} because it's read-only.".format(key = key, material_id = self.getId())) return - # Prevent recursion - if not apply_to_all: - super().setMetaDataEntry(key, value) - return + # Some metadata such as diameter should also be instantiated to be a setting. Go though all values for the + # "properties" field and apply the new values to SettingInstances as well. + new_setting_values_dict = {} + if key == "properties": + for k, v in value.items(): + if k in self.__material_properties_setting_map: + new_setting_values_dict[self.__material_properties_setting_map[k]] = v - # Get the MaterialGroup - material_manager = CuraApplication.getInstance().getMaterialManager() - root_material_id = self.getMetaDataEntry("base_file") #if basefile is self.getId, this is a basefile. - material_group = material_manager.getMaterialGroup(root_material_id) - if not 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) - 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) + if not apply_to_all: # Historical: If you only want to modify THIS container. We only used that to prevent recursion but with the below code that's no longer necessary. + # CURA-6920: This is an optimization, but it also fixes the problem that you can only set metadata for a + # material container that can be found in the container registry. + container_query = [self] + else: + container_query = registry.findContainers(base_file = self.getMetaDataEntry("base_file")) - # Update all containers derived from it - for node in material_group.derived_material_node_list: - container = node.getContainer() - if container is not None: - container.setMetaDataEntry(key, value, apply_to_all = False) + for container in container_query: + if key not in container.getMetaData() or container.getMetaData()[key] != value: + container.getMetaData()[key] = value + container.setDirty(True) + container.metaDataChanged.emit(container) + for k, v in new_setting_values_dict.items(): + self.setProperty(k, "value", v) ## Overridden from InstanceContainer, similar to setMetaDataEntry. # without this function the setName would only set the name of the specific nozzle / material / machine combination container @@ -174,13 +178,16 @@ class XmlMaterialProfile(InstanceContainer): ## End Name Block for key, value in metadata.items(): - builder.start(key) # type: ignore + key_to_use = key + if key in self._metadata_tags_that_have_cura_namespace: + key_to_use = "cura:" + key_to_use + builder.start(key_to_use) # type: ignore if value is not None: #Nones get handled well by the builder. #Otherwise the builder always expects a string. #Deserialize expects the stringified version. value = str(value) builder.data(value) - builder.end(key) + builder.end(key_to_use) builder.end("metadata") ## End Metadata Block @@ -203,10 +210,8 @@ class XmlMaterialProfile(InstanceContainer): for instance in self.findInstances(): self._addSettingElement(builder, instance) - machine_container_map = {} # type: Dict[str, InstanceContainer] - machine_variant_map = {} # type: Dict[str, Dict[str, Any]] - - variant_manager = CuraApplication.getInstance().getVariantManager() + machine_container_map = {} # type: Dict[str, InstanceContainer] + machine_variant_map = {} # type: Dict[str, Dict[str, Any]] root_material_id = self.getMetaDataEntry("base_file") # if basefile is self.getId, this is a basefile. all_containers = registry.findInstanceContainers(base_file = root_material_id) @@ -223,13 +228,13 @@ class XmlMaterialProfile(InstanceContainer): machine_variant_map[definition_id] = {} variant_name = container.getMetaDataEntry("variant_name") - if variant_name: - variant_dict = {"variant_node": variant_manager.getVariantNode(definition_id, variant_name), - "material_container": container} - machine_variant_map[definition_id][variant_name] = variant_dict + if not variant_name: + machine_container_map[definition_id] = container continue - machine_container_map[definition_id] = container + variant_dict = {"variant_type": container.getMetaDataEntry("hardware_type", "nozzle"), + "material_container": container} + machine_variant_map[definition_id][variant_name] = variant_dict # Map machine human-readable names to IDs product_id_map = self.getProductIdMap() @@ -262,8 +267,7 @@ class XmlMaterialProfile(InstanceContainer): # Find all hotend sub-profiles corresponding to this material and machine and add them to this profile. buildplate_dict = {} # type: Dict[str, Any] for variant_name, variant_dict in machine_variant_map[definition_id].items(): - variant_type = variant_dict["variant_node"].getMetaDataEntry("hardware_type", str(VariantType.NOZZLE)) - variant_type = VariantType(variant_type) + variant_type = VariantType(variant_dict["variant_type"]) if variant_type == VariantType.NOZZLE: # The hotend identifier is not the containers name, but its "name". builder.start("hotend", {"id": variant_name}) @@ -326,7 +330,7 @@ class XmlMaterialProfile(InstanceContainer): stream = io.BytesIO() tree = ET.ElementTree(root) # this makes sure that the XML header states encoding="utf-8" - tree.write(stream, encoding = "utf-8", xml_declaration=True) + tree.write(stream, encoding = "utf-8", xml_declaration = True) return stream.getvalue().decode("utf-8") @@ -390,7 +394,8 @@ class XmlMaterialProfile(InstanceContainer): self._combineElement(self._expandMachinesXML(result), self._expandMachinesXML(second)) return result - def _createKey(self, element): + @staticmethod + def _createKey(element): key = element.tag.split("}")[-1] if "key" in element.attrib: key += " key:" + element.attrib["key"] @@ -406,15 +411,15 @@ class XmlMaterialProfile(InstanceContainer): # Recursively merges XML elements. Updates either the text or children if another element is found in first. # If it does not exist, copies it from second. - def _combineElement(self, first, second): + @staticmethod + def _combineElement(first, second): # Create a mapping from tag name to element. - mapping = {} for element in first: - key = self._createKey(element) + key = XmlMaterialProfile._createKey(element) mapping[key] = element for element in second: - key = self._createKey(element) + key = XmlMaterialProfile._createKey(element) if len(element): # Check if element has children. try: if "setting" in element.tag and not "settings" in element.tag: @@ -424,7 +429,7 @@ class XmlMaterialProfile(InstanceContainer): for child in element: mapping[key].append(child) else: - self._combineElement(mapping[key], element) # Multiple elements, handle those. + XmlMaterialProfile._combineElement(mapping[key], element) # Multiple elements, handle those. except KeyError: mapping[key] = element first.append(element) @@ -676,32 +681,6 @@ class XmlMaterialProfile(InstanceContainer): if is_new_material: containers_to_add.append(new_material) - # Find the buildplates compatibility - buildplates = machine.iterfind("./um:buildplate", self.__namespaces) - buildplate_map = {} - buildplate_map["buildplate_compatible"] = {} - buildplate_map["buildplate_recommended"] = {} - for buildplate in buildplates: - buildplate_id = buildplate.get("id") - if buildplate_id is None: - continue - - variant_manager = CuraApplication.getInstance().getVariantManager() - variant_node = variant_manager.getVariantNode(machine_id, buildplate_id, - variant_type = VariantType.BUILD_PLATE) - if not variant_node: - continue - - _, buildplate_unmapped_settings_dict = self._getSettingsDictForNode(buildplate) - - buildplate_compatibility = buildplate_unmapped_settings_dict.get("hardware compatible", - machine_compatibility) - buildplate_recommended = buildplate_unmapped_settings_dict.get("hardware recommended", - machine_compatibility) - - buildplate_map["buildplate_compatible"][buildplate_id] = buildplate_compatibility - buildplate_map["buildplate_recommended"][buildplate_id] = buildplate_recommended - hotends = machine.iterfind("./um:hotend", self.__namespaces) for hotend in hotends: # The "id" field for hotends in material profiles is actually name @@ -709,11 +688,6 @@ class XmlMaterialProfile(InstanceContainer): if hotend_name is None: continue - variant_manager = CuraApplication.getInstance().getVariantManager() - variant_node = variant_manager.getVariantNode(machine_id, hotend_name, VariantType.NOZZLE) - if not variant_node: - continue - hotend_mapped_settings, hotend_unmapped_settings = self._getSettingsDictForNode(hotend) hotend_compatibility = hotend_unmapped_settings.get("hardware compatible", machine_compatibility) @@ -737,9 +711,6 @@ class XmlMaterialProfile(InstanceContainer): new_hotend_material.getMetaData()["compatible"] = hotend_compatibility new_hotend_material.getMetaData()["machine_manufacturer"] = machine_manufacturer new_hotend_material.getMetaData()["definition"] = machine_id - if buildplate_map["buildplate_compatible"]: - new_hotend_material.getMetaData()["buildplate_compatible"] = buildplate_map["buildplate_compatible"] - new_hotend_material.getMetaData()["buildplate_recommended"] = buildplate_map["buildplate_recommended"] cached_hotend_setting_properties = cached_machine_setting_properties.copy() cached_hotend_setting_properties.update(hotend_mapped_settings) @@ -749,63 +720,10 @@ class XmlMaterialProfile(InstanceContainer): new_hotend_material._dirty = False if is_new_material: + if ContainerRegistry.getInstance().isReadOnly(self.getId()): + ContainerRegistry.getInstance().setExplicitReadOnly(new_hotend_material.getId()) containers_to_add.append(new_hotend_material) - # - # Build plates in hotend - # - buildplates = hotend.iterfind("./um:buildplate", self.__namespaces) - for buildplate in buildplates: - # The "id" field for buildplate in material profiles is actually name - buildplate_name = buildplate.get("id") - if buildplate_name is None: - continue - - variant_manager = CuraApplication.getInstance().getVariantManager() - variant_node = variant_manager.getVariantNode(machine_id, buildplate_name, VariantType.BUILD_PLATE) - if not variant_node: - continue - - buildplate_mapped_settings, buildplate_unmapped_settings = self._getSettingsDictForNode(buildplate) - buildplate_compatibility = buildplate_unmapped_settings.get("hardware compatible", - buildplate_map["buildplate_compatible"]) - buildplate_recommended = buildplate_unmapped_settings.get("hardware recommended", - buildplate_map["buildplate_recommended"]) - - # Generate container ID for the hotend-and-buildplate-specific material container - new_hotend_and_buildplate_specific_material_id = new_hotend_specific_material_id + "_" + buildplate_name.replace(" ", "_") - - # Same as machine compatibility, keep the derived material containers consistent with the parent material - if ContainerRegistry.getInstance().isLoaded(new_hotend_and_buildplate_specific_material_id): - new_hotend_and_buildplate_material = ContainerRegistry.getInstance().findContainers(id = new_hotend_and_buildplate_specific_material_id)[0] - is_new_material = False - else: - new_hotend_and_buildplate_material = XmlMaterialProfile(new_hotend_and_buildplate_specific_material_id) - is_new_material = True - - new_hotend_and_buildplate_material.setMetaData(copy.deepcopy(new_hotend_material.getMetaData())) - new_hotend_and_buildplate_material.getMetaData()["id"] = new_hotend_and_buildplate_specific_material_id - new_hotend_and_buildplate_material.getMetaData()["name"] = self.getName() - new_hotend_and_buildplate_material.getMetaData()["variant_name"] = hotend_name - new_hotend_and_buildplate_material.getMetaData()["buildplate_name"] = buildplate_name - new_hotend_and_buildplate_material.setDefinition(machine_id) - # Don't use setMetadata, as that overrides it for all materials with same base file - new_hotend_and_buildplate_material.getMetaData()["compatible"] = buildplate_compatibility - new_hotend_and_buildplate_material.getMetaData()["machine_manufacturer"] = machine_manufacturer - new_hotend_and_buildplate_material.getMetaData()["definition"] = machine_id - new_hotend_and_buildplate_material.getMetaData()["buildplate_compatible"] = buildplate_compatibility - new_hotend_and_buildplate_material.getMetaData()["buildplate_recommended"] = buildplate_recommended - - cached_hotend_and_buildplate_setting_properties = cached_hotend_setting_properties.copy() - cached_hotend_and_buildplate_setting_properties.update(buildplate_mapped_settings) - - new_hotend_and_buildplate_material.setCachedValues(cached_hotend_and_buildplate_setting_properties) - - new_hotend_and_buildplate_material._dirty = False - - if is_new_material: - containers_to_add.append(new_hotend_and_buildplate_material) - # there is only one ID for a machine. Once we have reached here, it means we have already found # a workable ID for that machine, so there is no need to continue break @@ -814,9 +732,9 @@ class XmlMaterialProfile(InstanceContainer): ContainerRegistry.getInstance().addContainer(container_to_add) @classmethod - def _getSettingsDictForNode(cls, node) -> Tuple[dict, dict]: - node_mapped_settings_dict = dict() - node_unmapped_settings_dict = dict() + def _getSettingsDictForNode(cls, node) -> Tuple[Dict[str, Any], Dict[str, Any]]: + node_mapped_settings_dict = dict() # type: Dict[str, Any] + node_unmapped_settings_dict = dict() # type: Dict[str, Any] # Fetch settings in the "um" namespace um_settings = node.iterfind("./um:setting", cls.__namespaces) @@ -950,7 +868,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 +900,7 @@ class XmlMaterialProfile(InstanceContainer): result_metadata.append(new_material_metadata) buildplates = machine.iterfind("./um:buildplate", cls.__namespaces) - buildplate_map = {} # type: Dict[str, Dict[str, bool]] + buildplate_map = {} # type: Dict[str, Dict[str, bool]] buildplate_map["buildplate_compatible"] = {} buildplate_map["buildplate_recommended"] = {} for buildplate in buildplates: @@ -1111,8 +1029,8 @@ class XmlMaterialProfile(InstanceContainer): builder.data(data) builder.end(tag_name) - @classmethod - def _profile_name(cls, material_name, color_name): + @staticmethod + def _profile_name(material_name, color_name): if material_name is None: return "Unknown Material" if color_name != "Generic": @@ -1120,8 +1038,8 @@ class XmlMaterialProfile(InstanceContainer): else: return material_name - @classmethod - def getPossibleDefinitionIDsFromName(cls, name): + @staticmethod + def getPossibleDefinitionIDsFromName(name): name_parts = name.lower().split(" ") merged_name_parts = [] for part in name_parts: @@ -1159,14 +1077,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", @@ -1180,7 +1100,15 @@ class XmlMaterialProfile(InstanceContainer): "surface energy": "material_surface_energy", "shrinkage percentage": "material_shrinkage_percentage", "build volume temperature": "build_volume_temperature", - } + "anti ooze retract position": "material_anti_ooze_retracted_position", + "anti ooze retract speed": "material_anti_ooze_retraction_speed", + "break preparation position": "material_break_preparation_retracted_position", + "break preparation speed": "material_break_preparation_speed", + "break preparation temperature": "material_break_preparation_temperature", + "break position": "material_break_retracted_position", + "break speed": "material_break_speed", + "break temperature": "material_break_temperature" + } # type: Dict[str, str] __unmapped_settings = [ "hardware compatible", "hardware recommended" diff --git a/plugins/XmlMaterialProfile/plugin.json b/plugins/XmlMaterialProfile/plugin.json index bb1db82fa4..a8f82d1058 100644 --- a/plugins/XmlMaterialProfile/plugin.json +++ b/plugins/XmlMaterialProfile/plugin.json @@ -3,6 +3,6 @@ "author": "Ultimaker B.V.", "version": "1.0.1", "description": "Provides capabilities to read and write XML-based material profiles.", - "api": "6.0", + "api": "7.0", "i18n-catalog": "cura" } diff --git a/plugins/XmlMaterialProfile/product_to_id.json b/plugins/XmlMaterialProfile/product_to_id.json index 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/public_key.pem b/public_key.pem new file mode 100644 index 0000000000..d07bb5477a --- /dev/null +++ b/public_key.pem @@ -0,0 +1,13 @@ +-----BEGIN RSA PUBLIC KEY----- +MIICCgKCAgEA8k8IJsNNM097VM2pJ5vxkHcLhHf76JCB0iyvqpUuIgl8Zcp78Go+ +WtVkbVBZPPfSSB8GwjEtxvZeWj3i6e3nfreuuzq2sw6Gh860wMiQbNgL+rYCU3m9 +XxvC0kXgZt+oYs13N5LTePV7BG4goa/JOcN8dsu2ptZKfgH6TPhwshMeOGr/RoGr +Jw1DrpvVeq/yTkrEHQHdtHr81GDghfK1vzxYQCt94MOFQCeShhtIC/jHelenJA94 +EpXqcWwCzFDfCQ3aXmCNHnMAsTHer7DWDfvsaUFyvJznrxkuQZIOQydGCNWhePTw +nGiaMydchknr9TT3F+W/yuCs4u5GdZsz7S+1qbG4hblXo6dV6CTzkdKhh/MzONPC +w6u1QBHUeTWN98zcTdtGIn53jjZEyYTodPnw/p4xLHVCju78a7uwm5U0rahcs6gw +658glo3uT41mmTrXTBIVTV+4f/dSrwJVpNfTy/E4wi6fiuFeN8ojqXqN+NbIymfJ +aKar/Jf/nM3QpEYaPz7yyn8PW8MZ7iomqnsPzyQGE1aymuEbw0ipTzMB7Oy/DfuU +d4JU8FFuVuWJj3zNaXW7U/ggzbt5vkdIP/VNVfNZf741J/yKRbCI0+j4mthbruVQ +Ka4aB2EVp1ozisHMaALg5tAeUgrQDZjGnVmSQLt+yFUUbG4e0XFQBb8CAwEAAQ== +-----END RSA PUBLIC KEY----- diff --git a/resources/bundled_packages/cura.json b/resources/bundled_packages/cura.json index 259ac05201..22642cd38e 100644 --- a/resources/bundled_packages/cura.json +++ b/resources/bundled_packages/cura.json @@ -6,7 +6,7 @@ "display_name": "3MF Reader", "description": "Provides support for reading 3MF files.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -23,7 +23,7 @@ "display_name": "3MF Writer", "description": "Provides support for writing 3MF files.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -40,7 +40,7 @@ "display_name": "AMF Reader", "description": "Provides support for reading AMF files.", "package_version": "1.0.0", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "fieldOfView", @@ -57,7 +57,7 @@ "display_name": "Cura Backups", "description": "Backup and restore your configuration.", "package_version": "1.2.0", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -74,7 +74,7 @@ "display_name": "CuraEngine Backend", "description": "Provides the link to the CuraEngine slicing backend.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -91,7 +91,7 @@ "display_name": "Cura Profile Reader", "description": "Provides support for importing Cura profiles.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -108,7 +108,7 @@ "display_name": "Cura Profile Writer", "description": "Provides support for exporting Cura profiles.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -125,7 +125,7 @@ "display_name": "Firmware Update Checker", "description": "Checks for firmware updates.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -142,7 +142,7 @@ "display_name": "Firmware Updater", "description": "Provides a machine actions for updating firmware.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -159,7 +159,7 @@ "display_name": "Compressed G-code Reader", "description": "Reads g-code from a compressed archive.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -176,7 +176,7 @@ "display_name": "Compressed G-code Writer", "description": "Writes g-code to a compressed archive.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -193,7 +193,7 @@ "display_name": "G-Code Profile Reader", "description": "Provides support for importing profiles from g-code files.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -210,7 +210,7 @@ "display_name": "G-Code Reader", "description": "Allows loading and displaying G-code files.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "VictorLarchenko", @@ -227,7 +227,7 @@ "display_name": "G-Code Writer", "description": "Writes g-code to a file.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -244,7 +244,7 @@ "display_name": "Image Reader", "description": "Enables ability to generate printable geometry from 2D image files.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -261,7 +261,7 @@ "display_name": "Legacy Cura Profile Reader", "description": "Provides support for importing profiles from legacy Cura versions.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -278,7 +278,7 @@ "display_name": "Machine Settings Action", "description": "Provides a way to change machine settings (such as build volume, nozzle size, etc.).", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "fieldOfView", @@ -295,7 +295,7 @@ "display_name": "Model Checker", "description": "Checks models and print configuration for possible printing issues and give suggestions.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -312,7 +312,7 @@ "display_name": "Monitor Stage", "description": "Provides a monitor stage in Cura.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -329,7 +329,7 @@ "display_name": "Per-Object Settings Tool", "description": "Provides the per-model settings.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -346,7 +346,7 @@ "display_name": "Post Processing", "description": "Extension that allows for user created scripts for post processing.", "package_version": "2.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -363,7 +363,7 @@ "display_name": "Prepare Stage", "description": "Provides a prepare stage in Cura.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -380,7 +380,7 @@ "display_name": "Preview Stage", "description": "Provides a preview stage in Cura.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -397,7 +397,7 @@ "display_name": "Removable Drive Output Device", "description": "Provides removable drive hotplugging and writing support.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -414,7 +414,7 @@ "display_name": "Simulation View", "description": "Provides the Simulation view.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -431,7 +431,7 @@ "display_name": "Slice Info", "description": "Submits anonymous slice info. Can be disabled through preferences.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -448,7 +448,7 @@ "display_name": "Solid View", "description": "Provides a normal solid mesh view.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -465,7 +465,24 @@ "display_name": "Support Eraser Tool", "description": "Creates an eraser mesh to block the printing of support in certain places.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "TrimeshReader": { + "package_info": { + "package_id": "TrimeshReader", + "package_type": "plugin", + "display_name": "Trimesh Reader", + "description": "Provides support for reading model files.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -482,7 +499,7 @@ "display_name": "Toolbox", "description": "Find, manage and install new Cura packages.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -499,7 +516,7 @@ "display_name": "UFP Reader", "description": "Provides support for reading Ultimaker Format Packages.", "package_version": "1.0.0", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -516,7 +533,7 @@ "display_name": "UFP Writer", "description": "Provides support for writing Ultimaker Format Packages.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -533,7 +550,7 @@ "display_name": "Ultimaker Machine Actions", "description": "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.).", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -550,7 +567,7 @@ "display_name": "UM3 Network Printing", "description": "Manages network connections to Ultimaker 3 printers.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -567,7 +584,7 @@ "display_name": "USB Printing", "description": "Accepts G-Code and sends them to a printer. Plugin can also update firmware.", "package_version": "1.0.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -584,7 +601,7 @@ "display_name": "Version Upgrade 2.1 to 2.2", "description": "Upgrades configurations from Cura 2.1 to Cura 2.2.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -601,7 +618,7 @@ "display_name": "Version Upgrade 2.2 to 2.4", "description": "Upgrades configurations from Cura 2.2 to Cura 2.4.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -618,7 +635,7 @@ "display_name": "Version Upgrade 2.5 to 2.6", "description": "Upgrades configurations from Cura 2.5 to Cura 2.6.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -635,7 +652,7 @@ "display_name": "Version Upgrade 2.6 to 2.7", "description": "Upgrades configurations from Cura 2.6 to Cura 2.7.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -652,7 +669,7 @@ "display_name": "Version Upgrade 2.7 to 3.0", "description": "Upgrades configurations from Cura 2.7 to Cura 3.0.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -669,7 +686,7 @@ "display_name": "Version Upgrade 3.0 to 3.1", "description": "Upgrades configurations from Cura 3.0 to Cura 3.1.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -686,7 +703,7 @@ "display_name": "Version Upgrade 3.2 to 3.3", "description": "Upgrades configurations from Cura 3.2 to Cura 3.3.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -703,7 +720,7 @@ "display_name": "Version Upgrade 3.3 to 3.4", "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -720,7 +737,7 @@ "display_name": "Version Upgrade 3.4 to 3.5", "description": "Upgrades configurations from Cura 3.4 to Cura 3.5.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -737,7 +754,7 @@ "display_name": "Version Upgrade 3.5 to 4.0", "description": "Upgrades configurations from Cura 3.5 to Cura 4.0.", "package_version": "1.0.0", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -754,7 +771,58 @@ "display_name": "Version Upgrade 4.0 to 4.1", "description": "Upgrades configurations from Cura 4.0 to Cura 4.1.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "VersionUpgrade41to42": { + "package_info": { + "package_id": "VersionUpgrade41to42", + "package_type": "plugin", + "display_name": "Version Upgrade 4.1 to 4.2", + "description": "Upgrades configurations from Cura 4.1 to Cura 4.2.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "VersionUpgrade42to43": { + "package_info": { + "package_id": "VersionUpgrade42to43", + "package_type": "plugin", + "display_name": "Version Upgrade 4.2 to 4.3", + "description": "Upgrades configurations from Cura 4.2 to Cura 4.3.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", + "website": "https://ultimaker.com", + "author": { + "author_id": "UltimakerPackages", + "display_name": "Ultimaker B.V.", + "email": "plugins@ultimaker.com", + "website": "https://ultimaker.com" + } + } + }, + "VersionUpgrade43to44": { + "package_info": { + "package_id": "VersionUpgrade43to44", + "package_type": "plugin", + "display_name": "Version Upgrade 4.3 to 4.4", + "description": "Upgrades configurations from Cura 4.3 to Cura 4.4.", + "package_version": "1.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -771,7 +839,7 @@ "display_name": "X3D Reader", "description": "Provides support for reading X3D files.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "SevaAlekseyev", @@ -788,7 +856,7 @@ "display_name": "XML Material Profiles", "description": "Provides capabilities to read and write XML-based material profiles.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -805,7 +873,7 @@ "display_name": "X-Ray View", "description": "Provides the X-Ray view.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com", "author": { "author_id": "UltimakerPackages", @@ -822,7 +890,7 @@ "display_name": "Generic ABS", "description": "The generic ABS profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -840,7 +908,7 @@ "display_name": "Generic BAM", "description": "The generic BAM profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -858,7 +926,7 @@ "display_name": "Generic CFF CPE", "description": "The generic CFF CPE profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -876,7 +944,7 @@ "display_name": "Generic CFF PA", "description": "The generic CFF PA profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -894,7 +962,7 @@ "display_name": "Generic CPE", "description": "The generic CPE profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -912,7 +980,7 @@ "display_name": "Generic CPE+", "description": "The generic CPE+ profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -930,7 +998,7 @@ "display_name": "Generic GFF CPE", "description": "The generic GFF CPE profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -948,7 +1016,7 @@ "display_name": "Generic GFF PA", "description": "The generic GFF PA profile which other profiles can be based upon.", "package_version": "1.1.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -966,7 +1034,7 @@ "display_name": "Generic HIPS", "description": "The generic HIPS profile which other profiles can be based upon.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -984,7 +1052,7 @@ "display_name": "Generic Nylon", "description": "The generic Nylon profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1002,7 +1070,7 @@ "display_name": "Generic PC", "description": "The generic PC profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1020,7 +1088,7 @@ "display_name": "Generic PETG", "description": "The generic PETG profile which other profiles can be based upon.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1038,7 +1106,7 @@ "display_name": "Generic PLA", "description": "The generic PLA profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1056,7 +1124,7 @@ "display_name": "Generic PP", "description": "The generic PP profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1074,7 +1142,7 @@ "display_name": "Generic PVA", "description": "The generic PVA profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1092,7 +1160,7 @@ "display_name": "Generic Tough PLA", "description": "The generic Tough PLA profile which other profiles can be based upon.", "package_version": "1.0.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1110,7 +1178,7 @@ "display_name": "Generic TPU", "description": "The generic TPU profile which other profiles can be based upon.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://github.com/Ultimaker/fdm_materials", "author": { "author_id": "Generic", @@ -1128,7 +1196,7 @@ "display_name": "Dagoma Chromatik PLA", "description": "Filament testé et approuvé pour les imprimantes 3D Dagoma. Chromatik est l'idéal pour débuter et suivre les tutoriels premiers pas. Il vous offre qualité et résistance pour chacune de vos impressions.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://dagoma.fr/boutique/filaments.html", "author": { "author_id": "Dagoma", @@ -1145,7 +1213,7 @@ "display_name": "FABtotum ABS", "description": "This material is easy to be extruded but it is not the simplest to use. It is one of the most used in 3D printing to get very well finished objects. It is not sustainable and its smoke can be dangerous if inhaled. The reason to prefer this filament to PLA is mainly because of its precision and mechanical specs. ABS (for plastic) stands for Acrylonitrile Butadiene Styrene and it is a thermoplastic which is widely used in everyday objects. It can be printed with any FFF 3D printer which can get to high temperatures as it must be extruded in a range between 220° and 245°, so it’s compatible with all versions of the FABtotum Personal fabricator.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=40", "author": { "author_id": "FABtotum", @@ -1162,7 +1230,7 @@ "display_name": "FABtotum Nylon", "description": "When 3D printing started this material was not listed among the extrudable filaments. It is flexible as well as resistant to tractions. It is well known for its uses in textile but also in industries which require a strong and flexible material. There are different kinds of Nylon: 3D printing mostly uses Nylon 6 and Nylon 6.6, which are the most common. It requires higher temperatures to be printed, so a 3D printer must be able to reach them (around 240°C): the FABtotum, of course, can.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=53", "author": { "author_id": "FABtotum", @@ -1179,7 +1247,7 @@ "display_name": "FABtotum PLA", "description": "It is the most common filament used for 3D printing. It is studied to be bio-degradable as it comes from corn starch’s sugar mainly. It is completely made of renewable sources and has no footprint on polluting. PLA stands for PolyLactic Acid and it is a thermoplastic that today is still considered the easiest material to be 3D printed. It can be extruded at lower temperatures: the standard range of FABtotum’s one is between 185° and 195°.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=39", "author": { "author_id": "FABtotum", @@ -1196,7 +1264,7 @@ "display_name": "FABtotum TPU Shore 98A", "description": "", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://store.fabtotum.com/eu/products/filaments.html?filament_type=66", "author": { "author_id": "FABtotum", @@ -1213,7 +1281,7 @@ "display_name": "Fiberlogy HD PLA", "description": "With our HD PLA you have many more options. You can use this material in two ways. Choose the one you like best. You can use it as a normal PLA and get prints characterized by a very good adhesion between the layers and high precision. You can also make your prints acquire similar properties to that of ABS – better impact resistance and high temperature resistance. All you need is an oven. Yes, an oven! By annealing our HD PLA in an oven, in accordance with the manual, you will avoid all the inconveniences of printing with ABS, such as unpleasant odour or hazardous fumes.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://fiberlogy.com/en/fiberlogy-filaments/filament-hd-pla/", "author": { "author_id": "Fiberlogy", @@ -1230,7 +1298,7 @@ "display_name": "Filo3D PLA", "description": "Fast, safe and reliable printing. PLA is ideal for the fast and reliable printing of parts and prototypes with a great surface quality.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://dagoma.fr", "author": { "author_id": "Dagoma", @@ -1247,7 +1315,7 @@ "display_name": "IMADE3D JellyBOX PETG", "description": "", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://shop.imade3d.com/filament.html", "author": { "author_id": "IMADE3D", @@ -1264,7 +1332,7 @@ "display_name": "IMADE3D JellyBOX PLA", "description": "", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://shop.imade3d.com/filament.html", "author": { "author_id": "IMADE3D", @@ -1281,7 +1349,7 @@ "display_name": "Octofiber PLA", "description": "PLA material from Octofiber.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://nl.octofiber.com/3d-printing-filament/pla.html", "author": { "author_id": "Octofiber", @@ -1298,7 +1366,7 @@ "display_name": "PolyFlex™ PLA", "description": "PolyFlex™ is a highly flexible yet easy to print 3D printing material. Featuring good elasticity and a large strain-to- failure, PolyFlex™ opens up a completely new realm of applications.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polyflex/", "author": { "author_id": "Polymaker", @@ -1315,7 +1383,7 @@ "display_name": "PolyMax™ PLA", "description": "PolyMax™ PLA is a 3D printing material with excellent mechanical properties and printing quality. PolyMax™ PLA has an impact resistance of up to nine times that of regular PLA, and better overall mechanical properties than ABS.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polymax/", "author": { "author_id": "Polymaker", @@ -1332,7 +1400,7 @@ "display_name": "PolyPlus™ PLA True Colour", "description": "PolyPlus™ PLA is a premium PLA designed for all desktop FDM/FFF 3D printers. It is produced with our patented Jam-Free™ technology that ensures consistent extrusion and prevents jams.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polyplus-true-colour/", "author": { "author_id": "Polymaker", @@ -1349,7 +1417,7 @@ "display_name": "PolyWood™ PLA", "description": "PolyWood™ is a wood mimic printing material that contains no actual wood ensuring a clean Jam-Free™ printing experience.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "http://www.polymaker.com/shop/polywood/", "author": { "author_id": "Polymaker", @@ -1366,7 +1434,7 @@ "display_name": "Ultimaker ABS", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1385,7 +1453,7 @@ "display_name": "Ultimaker Breakaway", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/breakaway", "author": { "author_id": "UltimakerPackages", @@ -1404,7 +1472,7 @@ "display_name": "Ultimaker CPE", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1423,7 +1491,7 @@ "display_name": "Ultimaker CPE+", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/cpe", "author": { "author_id": "UltimakerPackages", @@ -1442,7 +1510,7 @@ "display_name": "Ultimaker Nylon", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1461,7 +1529,7 @@ "display_name": "Ultimaker PC", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/pc", "author": { "author_id": "UltimakerPackages", @@ -1480,7 +1548,7 @@ "display_name": "Ultimaker PLA", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1499,7 +1567,7 @@ "display_name": "Ultimaker PP", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/pp", "author": { "author_id": "UltimakerPackages", @@ -1518,7 +1586,7 @@ "display_name": "Ultimaker PVA", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/abs", "author": { "author_id": "UltimakerPackages", @@ -1537,7 +1605,7 @@ "display_name": "Ultimaker TPU 95A", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.2.2", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/tpu-95a", "author": { "author_id": "UltimakerPackages", @@ -1556,7 +1624,7 @@ "display_name": "Ultimaker Tough PLA", "description": "Example package for material and quality profiles for Ultimaker materials.", "package_version": "1.0.3", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://ultimaker.com/products/materials/tough-pla", "author": { "author_id": "UltimakerPackages", @@ -1575,7 +1643,7 @@ "display_name": "Vertex Delta ABS", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1592,7 +1660,7 @@ "display_name": "Vertex Delta PET", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1609,7 +1677,7 @@ "display_name": "Vertex Delta PLA", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", @@ -1626,7 +1694,7 @@ "display_name": "Vertex Delta TPU", "description": "ABS material and quality files for the Delta Vertex K8800.", "package_version": "1.0.1", - "sdk_version": "6.0.0", + "sdk_version": "7.0.0", "website": "https://vertex3dprinter.eu", "author": { "author_id": "Velleman", diff --git a/resources/definitions/101Hero.def.json b/resources/definitions/101Hero.def.json index a77ea5ed97..d356d15da9 100644 --- a/resources/definitions/101Hero.def.json +++ b/resources/definitions/101Hero.def.json @@ -34,7 +34,6 @@ }, "speed_print": { "default_value": 14 }, "speed_travel": { "value": "speed_print" }, - "speed_infill": { "default_value": 14 }, "speed_wall": { "value": "speed_print * 0.7" }, "speed_topbottom": { "value": "speed_print * 0.7" }, "speed_layer_0": { "value": "speed_print * 0.7" }, diff --git a/resources/definitions/3dator.def.json b/resources/definitions/3dator.def.json index 901ea87510..ac37523379 100644 --- a/resources/definitions/3dator.def.json +++ b/resources/definitions/3dator.def.json @@ -17,15 +17,10 @@ "overrides": { "machine_name": { "default_value": "3Dator" }, - "speed_travel": { "default_value": 120 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "infill_sparse_density": { "default_value": 20 }, - "speed_wall_x": { "default_value": 45 }, - "speed_wall_0": { "default_value": 40 }, - "speed_topbottom": { "default_value": 35 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 50 }, - "speed_infill": { "default_value": 60 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, "machine_height": { "default_value": 260 }, @@ -33,8 +28,6 @@ "machine_depth": { "default_value": 170 }, "machine_width": { "default_value": 180 }, "retraction_speed": {"default_value":100}, - "cool_fan_speed_min": {"default_value": 20}, - "cool_fan_speed_max": {"default_value": 70}, "adhesion_type": { "default_value": "none" }, "machine_head_with_fans_polygon": { "default_value": [ diff --git a/resources/definitions/Mark2_for_Ultimaker2.def.json b/resources/definitions/Mark2_for_Ultimaker2.def.json index effca0926e..1aca2a3844 100644 --- a/resources/definitions/Mark2_for_Ultimaker2.def.json +++ b/resources/definitions/Mark2_for_Ultimaker2.def.json @@ -1,5 +1,4 @@ { - "id": "Mark2_for_Ultimaker2", "version": 2, "name": "Mark2 for Ultimaker2", "inherits": "ultimaker2_plus", @@ -11,9 +10,7 @@ "weight": 0, "has_variants": true, "has_materials": true, - "has_machine_materials": false, "has_machine_quality": false, - "has_variant_materials": false, "file_formats": "text/x-gcode", "icon": "icon_ultimaker.png", "platform": "ultimaker2_platform.obj", @@ -82,9 +79,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 20 - }, "speed_support": { "value": "speed_wall_0" }, @@ -110,22 +104,18 @@ "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 }, @@ -145,11 +135,9 @@ "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": { @@ -161,12 +149,10 @@ }, "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" }, @@ -186,7 +172,6 @@ }, "jerk_travel": { - "default_value": 20, "value": "jerk_print if magic_spiralize else 20" }, "jerk_layer_0": { "value": "jerk_topbottom" }, @@ -201,12 +186,6 @@ "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 }, - "start_layers_at_same_position": - { - "default_value": false, - "enabled": false, - "value": false - }, "layer_start_x": { "default_value": 105.0, @@ -218,10 +197,10 @@ "enabled": false }, "prime_tower_position_x": { - "default_value": 185 + "value": "185" }, "prime_tower_position_y": { - "default_value": 160 + "value": "160" }, "machine_disallowed_areas": { "default_value": [ diff --git a/resources/definitions/abax_pri3.def.json b/resources/definitions/abax_pri3.def.json index 1ab48b865a..529636be90 100644 --- a/resources/definitions/abax_pri3.def.json +++ b/resources/definitions/abax_pri3.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/abax_pri5.def.json b/resources/definitions/abax_pri5.def.json index 46229ce756..9e4e7e3b20 100644 --- a/resources/definitions/abax_pri5.def.json +++ b/resources/definitions/abax_pri5.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/abax_titan.def.json b/resources/definitions/abax_titan.def.json index 9f67117d6c..98643df22b 100644 --- a/resources/definitions/abax_titan.def.json +++ b/resources/definitions/abax_titan.def.json @@ -49,33 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 70 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/alfawise_u20.def.json b/resources/definitions/alfawise_u20.def.json index 748bf8797a..4da42fdb1d 100644 --- a/resources/definitions/alfawise_u20.def.json +++ b/resources/definitions/alfawise_u20.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 50 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/alfawise_u30.def.json b/resources/definitions/alfawise_u30.def.json index 44caf61d1a..e05536f66c 100644 --- a/resources/definitions/alfawise_u30.def.json +++ b/resources/definitions/alfawise_u30.def.json @@ -22,16 +22,9 @@ "default_value": "; -- END GCODE --\nM104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F80 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning\nM107 ;turn the fan off; -- end of END GCODE --" }, "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { "default_value": 210 }, - "material_bed_temperature": { "default_value": 50 }, "layer_height_0": { "default_value": 0.2 }, "wall_thickness": { "default_value": 1.2 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 50 }, - "speed_wall": { "default_value": 35 }, - "speed_topbottom": { "default_value": 35 }, - "speed_travel": { "default_value": 120 }, - "speed_layer_0": { "default_value": 20 }, "support_enable": { "default_value": true }, "retraction_enable": { "default_value": true }, "retraction_amount": { "default_value": 5 }, diff --git a/resources/definitions/anycubic_i3_mega.def.json b/resources/definitions/anycubic_i3_mega.def.json index cc9832cf09..18005f0e12 100644 --- a/resources/definitions/anycubic_i3_mega.def.json +++ b/resources/definitions/anycubic_i3_mega.def.json @@ -54,7 +54,7 @@ }, "machine_start_gcode": { - "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{speed_travel} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{speed_travel}\nM117 Printing...\nG5" + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F{speed_travel} ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F{speed_travel}\nG0 Y20 F{speed_travel}\nM117 Printing...\nG5" }, "machine_end_gcode": { diff --git a/resources/definitions/bfb.def.json b/resources/definitions/bfb.def.json index d1dfa9ef1b..e88c8c792b 100644 --- a/resources/definitions/bfb.def.json +++ b/resources/definitions/bfb.def.json @@ -15,26 +15,19 @@ }, "overrides": { - "speed_topbottom": { "default_value": 40 }, "speed_print": { "default_value": 40 }, "machine_extruder_count": { "default_value": 1 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "machine_name": { "default_value": "BFB_Test" }, "machine_heated_bed": { "default_value": false }, - "speed_layer_0": { "default_value": 25 }, "machine_width": { "default_value": 275 }, "machine_gcode_flavor": { "default_value": "BFB" }, "machine_depth": { "default_value": 265 }, - "speed_infill": { "default_value": 30 }, "machine_center_is_zero": { "default_value": true }, "machine_height": { "default_value": 240 }, "layer_height": { "default_value": 0.25 }, - "material_print_temperature": { "default_value": 200 }, "retraction_amount": { "default_value": 0.05 }, - "speed_wall_0": { "default_value": 25 }, - "speed_travel": { "default_value": 50 }, "infill_sparse_density": { "default_value": 10 }, - "layer_height_0": { "default_value": 0.5 }, - "speed_wall_x": { "default_value": 20 } + "layer_height_0": { "default_value": 0.5 } } } diff --git a/resources/definitions/bibo2_dual.def.json b/resources/definitions/bibo2_dual.def.json index d897a76133..a644185915 100644 --- a/resources/definitions/bibo2_dual.def.json +++ b/resources/definitions/bibo2_dual.def.json @@ -1,11 +1,10 @@ { - "id": "BIBO2 dual", "version": 2, "name": "BIBO2 dual", "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "na", + "author": "unknown", "manufacturer": "BIBO", "category": "Other", "file_formats": "text/x-gcode", @@ -78,14 +77,17 @@ "machine_end_gcode": { "default_value": ";End GCode\nM104 T0 S0 ;extruder heater off\nM104 T1 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91\nG1 Z1 F100 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-2 X-20 Y-20 F300 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, + "speed_print": { + "default_value": 40 + }, "machine_extruder_count": { "default_value": 2 }, "prime_tower_position_x": { - "default_value": 50 + "value": "50" }, "prime_tower_position_y": { - "default_value": 50 + "value": "50" } } } diff --git a/resources/definitions/bq_hephestos.def.json b/resources/definitions/bq_hephestos.def.json index be024cd6fa..d9e84dae87 100644 --- a/resources/definitions/bq_hephestos.def.json +++ b/resources/definitions/bq_hephestos.def.json @@ -54,33 +54,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_hephestos_2.def.json b/resources/definitions/bq_hephestos_2.def.json index 90a86433fb..5c122eb9a4 100644 --- a/resources/definitions/bq_hephestos_2.def.json +++ b/resources/definitions/bq_hephestos_2.def.json @@ -24,26 +24,14 @@ "machine_height": { "default_value": 220 }, "machine_heated_bed": { "default_value": false }, "machine_center_is_zero": { "default_value": false }, - "material_print_temperature": { "default_value": 210 }, - "material_bed_temperature": { "default_value": 0 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { "default_value": 3 }, "wall_thickness": { "default_value": 1.2 }, "top_bottom_thickness": { "default_value": 1.2 }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { "default_value": 15 }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 160 }, - "speed_layer_0": { "default_value": 30 }, - "speed_wall_x": { "default_value": 35 }, - "speed_wall_0": { "default_value": 30 }, - "speed_infill": { "default_value": 80 }, - "speed_topbottom": { "default_value": 35 }, - "skirt_brim_speed": { "default_value": 35 }, "skirt_line_count": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 30 }, - "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { "default_value": 0.4 } + "skirt_gap": { "default_value": 6 } } } diff --git a/resources/definitions/bq_hephestos_xl.def.json b/resources/definitions/bq_hephestos_xl.def.json index a8d63cbb41..16d0953bf1 100644 --- a/resources/definitions/bq_hephestos_xl.def.json +++ b/resources/definitions/bq_hephestos_xl.def.json @@ -53,33 +53,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_witbox.def.json b/resources/definitions/bq_witbox.def.json index b96da6179c..fce2af9f97 100644 --- a/resources/definitions/bq_witbox.def.json +++ b/resources/definitions/bq_witbox.def.json @@ -54,33 +54,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, - "material_print_temperature": { - "default_value": 220 - }, - "material_bed_temperature": { - "default_value": 0 - }, "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/bq_witbox_2.def.json b/resources/definitions/bq_witbox_2.def.json index 7412647852..d1114aafd6 100644 --- a/resources/definitions/bq_witbox_2.def.json +++ b/resources/definitions/bq_witbox_2.def.json @@ -41,21 +41,12 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 0 - }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { - "default_value": 3 - }, "wall_thickness": { "default_value": 1.2 }, @@ -65,33 +56,9 @@ "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { - "default_value": 15 - }, "speed_print": { "default_value": 60 }, - "speed_travel": { - "default_value": 160 - }, - "speed_layer_0": { - "default_value": 30 - }, - "speed_wall_x": { - "default_value": 35 - }, - "speed_wall_0": { - "default_value": 30 - }, - "speed_infill": { - "default_value": 80 - }, - "speed_topbottom": { - "default_value": 35 - }, - "skirt_brim_speed": { - "default_value": 35 - }, "skirt_line_count": { "default_value": 4 }, @@ -101,9 +68,6 @@ "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { - "default_value": 0.4 - }, "support_enable": { "default_value": false } diff --git a/resources/definitions/builder_premium_large.def.json b/resources/definitions/builder_premium_large.def.json index 3ceae8d63f..d19382a591 100644 --- a/resources/definitions/builder_premium_large.def.json +++ b/resources/definitions/builder_premium_large.def.json @@ -35,8 +35,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -50,8 +48,8 @@ "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, "speed_wall_x": { "value": "speed_wall" }, - "prime_tower_position_x": { "default_value": 175 }, - "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_position_x": { "value": "175" }, + "prime_tower_position_y": { "value": "178" }, "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, @@ -85,14 +83,12 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, - "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, "gantry_height": { "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, diff --git a/resources/definitions/builder_premium_medium.def.json b/resources/definitions/builder_premium_medium.def.json index 5f608ba2a8..e5b8f1785c 100644 --- a/resources/definitions/builder_premium_medium.def.json +++ b/resources/definitions/builder_premium_medium.def.json @@ -35,8 +35,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -50,8 +48,8 @@ "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, "speed_wall_x": { "value": "speed_wall" }, - "prime_tower_position_x": { "default_value": 175 }, - "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_position_x": { "value": "175" }, + "prime_tower_position_y": { "value": "178" }, "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, @@ -85,14 +83,12 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, - "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, "gantry_height": { "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, diff --git a/resources/definitions/builder_premium_small.def.json b/resources/definitions/builder_premium_small.def.json index a19773ec05..4bcbd7d526 100644 --- a/resources/definitions/builder_premium_small.def.json +++ b/resources/definitions/builder_premium_small.def.json @@ -34,8 +34,6 @@ "material_standby_temperature": { "value": "material_print_temperature" }, "switch_extruder_retraction_speeds": {"default_value": 15 }, - "switch_extruder_retraction_speed": {"default_value": 15 }, - "switch_extruder_prime_speed": {"default_value": 15 }, "switch_extruder_retraction_amount": {"value": 1 }, "speed_travel": { "value": "100" }, @@ -49,8 +47,8 @@ "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 25)" }, "speed_wall_x": { "value": "speed_wall" }, - "prime_tower_position_x": { "default_value": 175 }, - "prime_tower_position_y": { "default_value": 178 }, + "prime_tower_position_x": { "value": "175" }, + "prime_tower_position_y": { "value": "178" }, "prime_tower_wipe_enabled": { "default_value": false }, "prime_tower_min_volume": { "default_value": 50 }, @@ -84,14 +82,12 @@ "retraction_amount": { "default_value": 3 }, "retraction_speed": { "default_value": 15 }, - "retraction_retract_speed": { "default_value": 15 }, - "retraction_prime_speed": { "default_value": 15 }, "travel_retract_before_outer_wall": { "default_value": true }, "skin_overlap": { "value": "15" }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, - "machine_head_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, + "machine_head_with_fans_polygon": { "default_value": [[-75, -18],[-75, 35],[18, 35],[18, -18]] }, "gantry_height": { "value": "55" }, "machine_max_feedrate_x": { "default_value": 300 }, "machine_max_feedrate_y": { "default_value": 300 }, diff --git a/resources/definitions/cartesio.def.json b/resources/definitions/cartesio.def.json index 1d83363684..e7a005682d 100644 --- a/resources/definitions/cartesio.def.json +++ b/resources/definitions/cartesio.def.json @@ -10,7 +10,6 @@ "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, "variants_name": "Tool", @@ -45,8 +44,8 @@ "prime_tower_enable": { "default_value": false }, "prime_tower_min_volume": { "value": "0.7" }, "prime_tower_size": { "value": 24.0 }, - "prime_tower_position_x": { "value": 125 }, - "prime_tower_position_y": { "value": 70 }, + "prime_tower_position_x": { "value": "125" }, + "prime_tower_position_y": { "value": "70" }, "prime_blob_enable": { "default_value": false }, "machine_max_feedrate_z": { "default_value": 20 }, "machine_disallowed_areas": { "default_value": [ diff --git a/resources/definitions/cocoon_create_modelmaker.def.json b/resources/definitions/cocoon_create_modelmaker.def.json index 83d1f41a99..b738dc64ff 100644 --- a/resources/definitions/cocoon_create_modelmaker.def.json +++ b/resources/definitions/cocoon_create_modelmaker.def.json @@ -47,9 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 220 - }, "layer_height": { "default_value": 0.10 }, @@ -65,21 +62,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 70 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/creality_base.def.json b/resources/definitions/creality_base.def.json new file mode 100644 index 0000000000..7e91fb4989 --- /dev/null +++ b/resources/definitions/creality_base.def.json @@ -0,0 +1,267 @@ +{ + "name": "Creawsome Base Printer", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": false, + "author": "trouch.com", + "manufacturer": "Creality3D", + "file_formats": "text/x-gcode", + "first_start_actions": ["MachineSettingsAction"], + + "machine_extruder_trains": { + "0": "creality_base_extruder_0" + }, + + "has_materials": true, + "has_variants": true, + "has_machine_quality": true, + "variants_name": "Nozzle Size", + + "preferred_variant_name": "0.4mm Nozzle", + "preferred_quality_type": "standard", + "preferred_material": "generic_pla", + "exclude_materials": [ + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA", + "Vertex_Delta_TPU", + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "generic_abs", + "generic_bam", + "generic_cffcpe", + "generic_cffpa", + "generic_cpe", + "generic_cpe_plus", + "generic_gffcpe", + "generic_gffpa", + "generic_hips", + "generic_nylon", + "generic_pc", + "generic_petg", + "generic_pla", + "generic_pp", + "generic_pva", + "generic_tough_pla", + "generic_tpu", + "imade3d_petg_green", + "imade3d_petg_pink", + "imade3d_pla_green", + "imade3d_pla_pink", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", + "polymax_pla", + "polyplus_pla", + "polywood_pla", + "structur3d_dap100silicone", + "tizyx_abs", + "tizyx_pla", + "tizyx_pla_bois", + "ultimaker_abs_black", + "ultimaker_abs_blue", + "ultimaker_abs_green", + "ultimaker_abs_grey", + "ultimaker_abs_orange", + "ultimaker_abs_pearl-gold", + "ultimaker_abs_red", + "ultimaker_abs_silver-metallic", + "ultimaker_abs_white", + "ultimaker_abs_yellow", + "ultimaker_bam", + "ultimaker_cpe_black", + "ultimaker_cpe_blue", + "ultimaker_cpe_dark-grey", + "ultimaker_cpe_green", + "ultimaker_cpe_light-grey", + "ultimaker_cpe_plus_black", + "ultimaker_cpe_plus_transparent", + "ultimaker_cpe_plus_white", + "ultimaker_cpe_red", + "ultimaker_cpe_transparent", + "ultimaker_cpe_white", + "ultimaker_cpe_yellow", + "ultimaker_nylon_black", + "ultimaker_nylon_transparent", + "ultimaker_pc_black", + "ultimaker_pc_transparent", + "ultimaker_pc_white", + "ultimaker_pla_black", + "ultimaker_pla_blue", + "ultimaker_pla_green", + "ultimaker_pla_magenta", + "ultimaker_pla_orange", + "ultimaker_pla_pearl-white", + "ultimaker_pla_red", + "ultimaker_pla_silver-metallic", + "ultimaker_pla_transparent", + "ultimaker_pla_white", + "ultimaker_pla_yellow", + "ultimaker_pp_transparent", + "ultimaker_pva", + "ultimaker_tough_pla_black", + "ultimaker_tough_pla_green", + "ultimaker_tough_pla_red", + "ultimaker_tough_pla_white", + "ultimaker_tpu_black", + "ultimaker_tpu_blue", + "ultimaker_tpu_red", + "ultimaker_tpu_white", + "verbatim_bvoh_175", + "zyyx_pro_flex", + "zyyx_pro_pla" + ] + }, + "overrides": { + "machine_name": { "default_value": "Creawsome Base Printer" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n" }, + "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y{machine_depth} ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" }, + + "machine_max_feedrate_x": { "value": 500 }, + "machine_max_feedrate_y": { "value": 500 }, + "machine_max_feedrate_z": { "value": 10 }, + "machine_max_feedrate_e": { "value": 50 }, + + "machine_max_acceleration_x": { "value": 500 }, + "machine_max_acceleration_y": { "value": 500 }, + "machine_max_acceleration_z": { "value": 100 }, + "machine_max_acceleration_e": { "value": 5000 }, + "machine_acceleration": { "value": 500 }, + + "machine_max_jerk_xy": { "value": 10 }, + "machine_max_jerk_z": { "value": 0.4 }, + "machine_max_jerk_e": { "value": 5 }, + + "machine_heated_bed": { "default_value": true }, + + "material_diameter": { "default_value": 1.75 }, + + "acceleration_print": { "value": 500 }, + "acceleration_travel": { "value": 500 }, + "acceleration_travel_layer_0": { "value": "acceleration_travel" }, + "acceleration_roofing": { "enabled": "acceleration_enabled and roofing_layer_count > 0 and top_layers > 0" }, + + "jerk_print": { "value": 8 }, + "jerk_travel": { "value": "jerk_print" }, + "jerk_travel_layer_0": { "value": "jerk_travel" }, + + "acceleration_enabled": { "value": false }, + "jerk_enabled": { "value": false }, + + "speed_print": { "value": 50.0 } , + "speed_infill": { "value": "speed_print" }, + "speed_wall": { "value": "speed_print / 2" }, + "speed_wall_0": { "value": "speed_wall" }, + "speed_wall_x": { "value": "speed_wall" }, + "speed_topbottom": { "value": "speed_print / 2" }, + "speed_roofing": { "value": "speed_topbottom" }, + "speed_travel": { "value": "150.0 if speed_print < 60 else 250.0 if speed_print > 100 else speed_print * 2.5" }, + "speed_layer_0": { "value": 20.0 }, + "speed_print_layer_0": { "value": "speed_layer_0" }, + "speed_travel_layer_0": { "value": "100 if speed_layer_0 < 20 else 150 if speed_layer_0 > 30 else speed_layer_0 * 5" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_z_hop": { "value": 5 }, + + "skirt_brim_speed": { "value": "speed_layer_0" }, + + "line_width": { "value": "machine_nozzle_size" }, + + "optimize_wall_printing_order": { "value": "True" }, + + "material_initial_print_temperature": { "value": "material_print_temperature" }, + "material_final_print_temperature": { "value": "material_print_temperature" }, + "material_flow": { "value": 100 }, + "travel_compensate_overlapping_walls_0_enabled": { "value": "False" }, + + "z_seam_type": { "value": "'back'" }, + "z_seam_corner": { "value": "'z_seam_corner_weighted'" }, + + "infill_sparse_density": { "value": "20" }, + "infill_pattern": { "value": "'lines' if infill_sparse_density > 50 else 'cubic'" }, + "infill_before_walls": { "value": false }, + "infill_overlap": { "value": 30.0 }, + "skin_overlap": { "value": 10.0 }, + "infill_wipe_dist": { "value": 0.0 }, + "wall_0_wipe_dist": { "value": 0.0 }, + + "fill_perimeter_gaps": { "value": "'everywhere'" }, + "fill_outline_gaps": { "value": false }, + "filter_out_tiny_gaps": { "value": false }, + + "retraction_speed": { + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", + "maximum_value": 200 + }, + "retraction_retract_speed": { + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", + "maximum_value": 200 + }, + "retraction_prime_speed": { + "maximum_value_warning": "machine_max_feedrate_e if retraction_enable else float('inf')", + "maximum_value": 200 + }, + + "retraction_hop_enabled": { "value": "False" }, + "retraction_hop": { "value": 0.2 }, + "retraction_combing": { "value": "'off' if retraction_hop_enabled else 'noskin'" }, + "retraction_combing_max_distance": { "value": 30 }, + "travel_avoid_other_parts": { "value": true }, + "travel_avoid_supports": { "value": true }, + "travel_retract_before_outer_wall": { "value": true }, + + "retraction_enable": { "value": true }, + "retraction_count_max": { "value": 100 }, + "retraction_extrusion_window": { "value": 10 }, + "retraction_min_travel": { "value": 1.5 }, + + "cool_fan_full_at_height": { "value": "layer_height_0 + 2 * layer_height" }, + "cool_fan_enabled": { "value": true }, + "cool_min_layer_time": { "value": 10 }, + + "adhesion_type": { "value": "'skirt'" }, + "brim_replaces_support": { "value": false }, + "skirt_gap": { "value": 10.0 }, + "skirt_line_count": { "value": 3 }, + + "adaptive_layer_height_variation": { "value": 0.04 }, + "adaptive_layer_height_variation_step": { "value": 0.04 }, + + "meshfix_maximum_resolution": { "value": "0.05" }, + "meshfix_maximum_travel_resolution": { "value": "meshfix_maximum_resolution" }, + + "support_angle": { "value": "math.floor(math.degrees(math.atan(line_width/2.0/layer_height)))" }, + "support_pattern": { "value": "'zigzag'" }, + "support_infill_rate": { "value": "0 if support_tree_enable else 20" }, + "support_use_towers": { "value": false }, + "support_xy_distance": { "value": "wall_line_width_0 * 2" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "layer_height if layer_height >= 0.16 else layer_height*2" }, + "support_xy_overrides_z": { "value": "'xy_overrides_z'" }, + "support_wall_count": { "value": 1 }, + "support_brim_enable": { "value": true }, + "support_brim_width": { "value": 4 }, + + "support_interface_enable": { "value": true }, + "support_interface_height": { "value": "layer_height * 4" }, + "support_interface_density": { "value": 33.333 }, + "support_interface_pattern": { "value": "'grid'" }, + "support_interface_skip_height": { "value": 0.2 }, + "minimum_support_area": { "value": 5 }, + "minimum_interface_area": { "value": 10 }, + "top_bottom_thickness": {"value": "layer_height_0 + layer_height * 3" }, + "wall_thickness": {"value": "line_width * 2" } + + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr-x.def.json b/resources/definitions/creality_cr-x.def.json index 0117c4fffe..13409a7212 100644 --- a/resources/definitions/creality_cr-x.def.json +++ b/resources/definitions/creality_cr-x.def.json @@ -1,5 +1,4 @@ { - "id": "CR-X", "version": 2, "name": "Creality CR-X", "inherits": "fdmprinter", @@ -32,7 +31,6 @@ "adhesion_type": { "default_value": "skirt" }, "gantry_height": { "value": "30" }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 120 }, "machine_max_acceleration_x": { "default_value": 500 }, "machine_max_acceleration_y": { "default_value": 500 }, "machine_max_acceleration_z": { "default_value": 100 }, @@ -43,9 +41,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG28 ;home all\nG90 ;absolute positioning\nM107 ;start with the fan off\nG1 F2400 Z15.0 ;raise the nozzle 15mm\nM109 S{material_print_temperature} ;Set Extruder Temperature and Wait\nM190 S{material_bed_temperature}; Wait for bed temperature to reach target temp\nT0 ;Switch to Extruder 1\nG1 F3000 X5 Y10 Z0.2 ;move to prime start position\nG92 E0 ;reset extrusion distance\nG1 F600 X160 E15 ;prime nozzle in a line\nG1 F5000 X180 ;quick wipe\nG92 E0 ;reset extrusion distance" }, "machine_end_gcode": { "default_value": "M104 S0 ;hotend off\nM140 S0 ;bed off\nG92 E0\nG1 F2000 E-100 ;retract filament 100mm\nG92 E0\nG1 F3000 X0 Y270 ;move bed for easy part removal\nM84 ;disable steppers" }, - "material_print_temperature": { "default_value": 200 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/creality_cr10.def.json b/resources/definitions/creality_cr10.def.json index cc0410fe22..85e0f0a435 100644 --- a/resources/definitions/creality_cr10.def.json +++ b/resources/definitions/creality_cr10.def.json @@ -1,95 +1,25 @@ { "name": "Creality CR-10", "version": 2, - "inherits": "fdmprinter", - "metadata": { - "visible": true, - "author": "Michael Wildermuth", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "preferred_quality_type": "draft", - "machine_extruder_trains": - { - "0": "creality_cr10_extruder_0" - } - }, + "inherits": "creality_base", "overrides": { - "machine_width": { - "default_value": 300 - }, - "machine_height": { - "default_value": 400 - }, - "machine_depth": { - "default_value": 300 - }, - "machine_head_polygon": { - "default_value": [ - [-30, 34], - [-30, -32], - [30, -32], - [30, 34] + "machine_name": { "default_value": "Creality CR-10" }, + "machine_width": { "default_value": 300 }, + "machine_depth": { "default_value": 300 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] ] }, - "layer_height_0": { - "default_value": 0.2 - }, - "top_bottom_thickness": { - "default_value": 0.6 - }, - "top_bottom_pattern_0": { - "default_value": "concentric" - }, - "infill_pattern": { - "value": "'triangles'" - }, - "retraction_enable": { - "default_value": true - }, - "retraction_amount": { - "default_value": 5 - }, - "retraction_speed": { - "default_value": 40 - }, - "cool_min_layer_time": { - "default_value": 10 - }, - "adhesion_type": { - "default_value": "skirt" - }, - "skirt_line_count": { - "default_value": 4 - }, - "skirt_gap": { - "default_value": 5 - }, - "machine_end_gcode": { - "default_value": "G91\nG1 F1800 E-3\nG1 F3000 Z10\nG90\nG28 X0 Y0 ; home x and y axis\nM106 S0 ; turn off cooling fan\nM104 S0 ; turn off extruder\nM140 S0 ; turn off bed\nM84 ; disable motors" - }, - "machine_heated_bed": { - "default_value": true - }, - "gantry_height": { - "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": 8 - }, - "jerk_travel": { - "default_value": 8 - } + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10max.def.json b/resources/definitions/creality_cr10max.def.json new file mode 100644 index 0000000000..a7e40d5bfc --- /dev/null +++ b/resources/definitions/creality_cr10max.def.json @@ -0,0 +1,26 @@ +{ + "name": "Creality CR-10 Max", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality CR-10 Max" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_width": { "default_value": 450 }, + "machine_depth": { "default_value": 450 }, + "machine_height": { "default_value": 470 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-44, 34], + [-44, -34], + [38, -34], + [38, 34] + ] + }, + + "gantry_height": { "value": 30 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr10mini.def.json b/resources/definitions/creality_cr10mini.def.json new file mode 100644 index 0000000000..621be5f0f3 --- /dev/null +++ b/resources/definitions/creality_cr10mini.def.json @@ -0,0 +1,25 @@ +{ + "name": "Creality CR-10 Mini", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality CR-10 Mini" }, + "machine_width": { "default_value": 300 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 300 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr10s.def.json b/resources/definitions/creality_cr10s.def.json index c368269a46..9884b95cb4 100644 --- a/resources/definitions/creality_cr10s.def.json +++ b/resources/definitions/creality_cr10s.def.json @@ -1,5 +1,11 @@ { "name": "Creality CR-10S", "version": 2, - "inherits": "creality_cr10" + "inherits": "creality_cr10", + "overrides": { + "machine_name": { "default_value": "Creality CR-10S" } + }, + "metadata": { + "quality_definition": "creality_base" + } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10s4.def.json b/resources/definitions/creality_cr10s4.def.json index 7145083674..ccecd41a1d 100644 --- a/resources/definitions/creality_cr10s4.def.json +++ b/resources/definitions/creality_cr10s4.def.json @@ -1,26 +1,25 @@ { - "name": "Creality CR-10 S4", + "name": "Creality CR-10S4", "version": 2, - "inherits": "creality_cr10", - "metadata": { - "visible": true, - "author": "Michael Wildermuth", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "machine_extruder_trains": - { - "0": "creality_cr10s4_extruder_0" - } - }, + "inherits": "creality_base", "overrides": { - "machine_width": { - "default_value": 400 + "machine_name": { "default_value": "Creality CR-10S4" }, + "machine_width": { "default_value": 400 }, + "machine_depth": { "default_value": 400 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "machine_height": { - "default_value": 400 - }, - "machine_depth": { - "default_value": 400 - } + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10s5.def.json b/resources/definitions/creality_cr10s5.def.json index b082894a16..105e1d0458 100644 --- a/resources/definitions/creality_cr10s5.def.json +++ b/resources/definitions/creality_cr10s5.def.json @@ -1,26 +1,25 @@ { - "name": "Creality CR-10 S5", + "name": "Creality CR-10S5", "version": 2, - "inherits": "creality_cr10", - "metadata": { - "visible": true, - "author": "Michael Wildermuth", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "machine_extruder_trains": - { - "0": "creality_cr10s5_extruder_0" - } - }, + "inherits": "creality_base", "overrides": { - "machine_width": { - "default_value": 500 + "machine_name": { "default_value": "Creality CR-10S5" }, + "machine_width": { "default_value": 500 }, + "machine_depth": { "default_value": 500 }, + "machine_height": { "default_value": 500 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] }, - "machine_height": { - "default_value": 500 - }, - "machine_depth": { - "default_value": 500 - } + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true } } \ No newline at end of file diff --git a/resources/definitions/creality_cr10spro.def.json b/resources/definitions/creality_cr10spro.def.json new file mode 100644 index 0000000000..28c8dda0a5 --- /dev/null +++ b/resources/definitions/creality_cr10spro.def.json @@ -0,0 +1,24 @@ +{ + "name": "Creality CR-10S Pro", + "version": 2, + "inherits": "creality_cr10", + "overrides": { + "machine_name": { "default_value": "Creality CR-10S Pro" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_head_with_fans_polygon": { "default_value": [ + [-44, 34], + [-44, -34], + [38, -34], + [38, 34] + ] + }, + + "gantry_height": { "value": 30 } + + }, + "metadata": { + "quality_definition": "creality_base", + "platform": "creality_cr10spro.stl", + "platform_offset": [ -150, 0, 150] + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr20.def.json b/resources/definitions/creality_cr20.def.json new file mode 100644 index 0000000000..b18c2709e6 --- /dev/null +++ b/resources/definitions/creality_cr20.def.json @@ -0,0 +1,25 @@ +{ + "name": "Creality CR-20", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality CR-20" }, + "machine_width": { "default_value": 220 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 250 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_cr20pro.def.json b/resources/definitions/creality_cr20pro.def.json new file mode 100644 index 0000000000..4e676bcb74 --- /dev/null +++ b/resources/definitions/creality_cr20pro.def.json @@ -0,0 +1,13 @@ +{ + "name": "Creality CR-20 Pro", + "version": 2, + "inherits": "creality_cr20", + "overrides": { + "machine_name": { "default_value": "Creality CR-20 Pro" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"} + + }, + "metadata": { + "quality_definition": "creality_base" + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender2.def.json b/resources/definitions/creality_ender2.def.json new file mode 100644 index 0000000000..2a5e14c828 --- /dev/null +++ b/resources/definitions/creality_ender2.def.json @@ -0,0 +1,26 @@ +{ + "name": "Creality Ender-2", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-2" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y100.0 Z0.28 F1500.0 E8 ;Draw the first line\nG1 X10.4 Y100.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E15 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_width": { "default_value": 150 }, + "machine_depth": { "default_value": 150 }, + "machine_height": { "default_value": 200 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender3.def.json b/resources/definitions/creality_ender3.def.json old mode 100755 new mode 100644 index 689628d037..37df844560 --- a/resources/definitions/creality_ender3.def.json +++ b/resources/definitions/creality_ender3.def.json @@ -1,99 +1,33 @@ { "name": "Creality Ender-3", "version": 2, - "inherits": "fdmprinter", + "inherits": "creality_base", "metadata": { + "quality_definition": "creality_base", "visible": true, - "author": "Sacha Telgenhof", - "manufacturer": "Creality3D", - "file_formats": "text/x-gcode", - "platform": "creality_ender3_platform.stl", - "preferred_quality_type": "draft", - "machine_extruder_trains": - { - "0": "creality_ender3_extruder_0" - } + "platform": "creality_ender3.stl" }, "overrides": { - "machine_name": { - "default_value": "Creality Ender-3" - }, - "machine_width": { - "default_value": 235 - }, - "machine_height": { - "default_value": 250 - }, - "machine_depth": { - "default_value": 235 - }, - "machine_heated_bed": { - "default_value": true - }, - "gantry_height": { - "value": "30" - }, - "machine_head_polygon": { + "machine_name": { "default_value": "Creality Ender-3" }, + "machine_width": { "default_value": 235 }, + "machine_depth": { "default_value": 235 }, + "machine_height": { "default_value": 250 }, + "machine_disallowed_areas": { "default_value": [ - [-30, 34], - [-30, -32], - [30, -32], - [30, 34] + [[-117.5, 117.5], [-117.5, 108], [117.5, 108], [117.5, 117.5]], + [[-117.5, -108], [-117.5, -117.5], [117.5, -117.5], [117.5, -108]] + ]}, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] ] }, - "material_diameter": { - "default_value": 1.75 - }, - "acceleration_enabled": { - "default_value": true - }, - "acceleration_print": { - "default_value": 500 - }, - "acceleration_travel": { - "value": "acceleration_print" - }, - "jerk_enabled": { - "default_value": true - }, - "jerk_print": { - "value": "10" - }, - "jerk_travel": { - "value": "jerk_print" - }, - "machine_max_jerk_z": { - "default_value": 0.3 - }, - "layer_height_0": { - "default_value": 0.2 - }, - "adhesion_type": { - "default_value": "skirt" - }, - "top_bottom_thickness": { - "default_value": 0.6 - }, - "retraction_amount": { - "default_value": 6 - }, - "retraction_speed": { - "default_value": 25 - }, - "cool_min_layer_time": { - "default_value": 10 - }, - "skirt_line_count": { - "default_value": 4 - }, - "skirt_gap": { - "default_value": 5 - }, "machine_start_gcode": { - "default_value": "; Ender 3 Custom Start G-code\nG28 ; Home all axes\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\n; End of custom start GCode" + "default_value": "; Ender 3 Custom Start G-code\nG92 E0 ; Reset Extruder\nG28 ; Home all axes\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line\nG92 E0 ; Reset Extruder\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish" }, - "machine_end_gcode": { - "default_value": "; Ender 3 Custom End G-code\nG4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG1 F1800 E-3 ; Retract filament 3 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM84 ; Disable stepper motors\n; End of custom end GCode" - } + + "gantry_height": { "value": 25 } } } diff --git a/resources/definitions/creality_ender4.def.json b/resources/definitions/creality_ender4.def.json new file mode 100644 index 0000000000..9c13797c92 --- /dev/null +++ b/resources/definitions/creality_ender4.def.json @@ -0,0 +1,27 @@ +{ + "name": "Creality Ender-4", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-4" }, + "machine_width": { "default_value": 452 }, + "machine_depth": { "default_value": 468 }, + "machine_height": { "default_value": 482 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 }, + + "speed_print": { "value": 80.0 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender5.def.json b/resources/definitions/creality_ender5.def.json new file mode 100644 index 0000000000..1b4be4d71f --- /dev/null +++ b/resources/definitions/creality_ender5.def.json @@ -0,0 +1,28 @@ +{ + "name": "Creality Ender-5", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-5" }, + "machine_end_gcode": { "default_value": "G91 ;Relative positioning\nG1 E-2 F2700 ;Retract a bit\nG1 E-2 Z0.2 F2400 ;Retract and raise Z\nG1 X5 Y5 F3000 ;Wipe out\nG1 Z10 ;Raise Z more\nG90 ;Absolute positionning\n\nG1 X0 Y0 ;Present print\nM106 S0 ;Turn-off fan\nM104 S0 ;Turn-off hotend\nM140 S0 ;Turn-off bed\n\nM84 X Y E ;Disable all steppers but Z\n" }, + "machine_width": { "default_value": 220 }, + "machine_depth": { "default_value": 220 }, + "machine_height": { "default_value": 300 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 }, + + "speed_print": { "value": 80.0 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creality_ender5plus.def.json b/resources/definitions/creality_ender5plus.def.json new file mode 100644 index 0000000000..48ebad61ea --- /dev/null +++ b/resources/definitions/creality_ender5plus.def.json @@ -0,0 +1,28 @@ +{ + "name": "Creality Ender-5 Plus", + "version": 2, + "inherits": "creality_base", + "overrides": { + "machine_name": { "default_value": "Creality Ender-5 Plus" }, + "machine_start_gcode": { "default_value": "M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration\nM203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate\nM204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration\nM205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\n\nG28 ;Home\nM420 S1 Z2 ;Enable ABL using saved Mesh and Fade Height\n\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder\nG1 Z2.0 F3000 ;Move Z Axis up\n"}, + "machine_width": { "default_value": 350 }, + "machine_depth": { "default_value": 350 }, + "machine_height": { "default_value": 400 }, + "machine_head_with_fans_polygon": { "default_value": [ + [-26, 34], + [-26, -32], + [32, -32], + [32, 34] + ] + }, + + "gantry_height": { "value": 25 }, + + "speed_print": { "value": 80.0 } + + }, + "metadata": { + "quality_definition": "creality_base", + "visible": true + } +} \ No newline at end of file diff --git a/resources/definitions/creatable_d3.def.json b/resources/definitions/creatable_d3.def.json index 1491089e24..f621bcbe97 100644 --- a/resources/definitions/creatable_d3.def.json +++ b/resources/definitions/creatable_d3.def.json @@ -27,14 +27,12 @@ "machine_max_feedrate_z": { "default_value": 300 }, "gantry_height": {"value": "43"}, "layer_height": { "default_value": 0.1 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_combing": { "default_value": "off" }, - "retraction_hop_enabled": { "default_value": true }, + "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_retract_speed": { "default_value": 100 }, "retraction_speed": { "default_value": 100 }, "retraction_amount": { "default_value": 4.5 }, - "retraction_prime_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G21\nG90\nM82\nM106 S255\nG28\nG92 E0\nG1 Z100 F5000\nM190 S50\nM109 S200\nG1 X-135\nG1 Z0.3\nG92 E-32\nG1 E0 F1000\nG1 E50 F200\nG1 F1000\nG1 X-125\nG92 E0" }, diff --git a/resources/definitions/cubicon_3dp_110f.def.json b/resources/definitions/cubicon_3dp_110f.def.json index 168b57cd66..eecfdd5911 100644 --- a/resources/definitions/cubicon_3dp_110f.def.json +++ b/resources/definitions/cubicon_3dp_110f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-110F", "version": 2, "name": "Cubicon Single", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_3dp_210f.def.json b/resources/definitions/cubicon_3dp_210f.def.json index cc99899f92..5d8ff78487 100644 --- a/resources/definitions/cubicon_3dp_210f.def.json +++ b/resources/definitions/cubicon_3dp_210f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-210F", "version": 2, "name": "Cubicon Style", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_3dp_310f.def.json b/resources/definitions/cubicon_3dp_310f.def.json index 90d0e3f25c..1dc78f0ebf 100644 --- a/resources/definitions/cubicon_3dp_310f.def.json +++ b/resources/definitions/cubicon_3dp_310f.def.json @@ -1,5 +1,4 @@ { - "id": "3DP-310F", "version": 2, "name": "Cubicon Single Plus", "inherits": "cubicon_common", diff --git a/resources/definitions/cubicon_common.def.json b/resources/definitions/cubicon_common.def.json index ae085c7552..6b1e3d953e 100644 --- a/resources/definitions/cubicon_common.def.json +++ b/resources/definitions/cubicon_common.def.json @@ -23,77 +23,34 @@ "travel_compensate_overlapping_walls_enabled": { "default_value": false }, - "travel_compensate_overlapping_walls_0_enabled": { - "default_value": false - }, - "travel_compensate_overlapping_walls_x_enabled": { - "default_value": false - }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "infill_line_width": { - "default_value": 0.6 - }, "adhesion_type": { "default_value": "raft" }, - "roofing_pattern": { "default_value": "lines" }, "top_bottom_pattern": { "default_value": "lines" }, - "top_bottom_pattern_0": { - "default_value": "zigzag" - }, "fill_perimeter_gaps": { "default_value": "everywhere" }, - "infill_pattern": { - "default_value": "zigzag" - }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { - "default_value": 15 - }, "infill_before_walls": { "default_value": false }, - "infill_sparse_thickness": { "default_value": 0.2 }, "top_bottom_thickness": { "default_value": 1.0 }, - "top_thickness": { - "default_value": 1.0 - }, "bottom_thickness": { - "default_value": 0.6, "value": "top_bottom_thickness * 0.6" }, - "roofing_layer_count": { - "default_value": 1 - }, - "skin_preshrink": { "default_value": true }, "material_flow_layer_0": { "default_value": 100 }, - "top_skin_preshrink": { "default_value": 1.2 }, - "bottom_skin_preshrink": { "default_value": 1.2 }, "max_skin_angle_for_expansion": { "default_value": 90 }, - "min_skin_width_for_expansion": { "default_value": 2.7475 }, "skin_angles": { "default_value": "[135,45]" }, - "roofing_angles": { "default_value": "[135,45]" }, "coasting_volume": { "default_value": 0.032 }, "wall_thickness": { "default_value": 1.2 }, - "wall_line_count": { "default_value": 3 }, - "speed_wall_0": { "default_value": 25 }, - "skin_overlap": { "default_value": 5 }, "cool_min_layer_time_fan_speed_max": { "default_value": 15 }, "cool_min_layer_time": { "default_value": 15 }, - "support_roof_pattern": { "default_value": "zigzag" }, - "support_bottom_pattern": { "default_value": "zigzag" }, "support_interface_pattern": { "default_value": "zigzag" }, "support_pattern": { "default_value": "zigzag" }, - "retraction_amount": { "default_value": 1.5 }, - "top_layers": { - "default_value": 5 - }, - "bottom_layers": { - "default_value": 3 - } + "retraction_amount": { "default_value": 1.5 } } } \ No newline at end of file diff --git a/resources/definitions/cubicon_dual_pro_a30.def.json b/resources/definitions/cubicon_dual_pro_a30.def.json new file mode 100644 index 0000000000..6431c917a5 --- /dev/null +++ b/resources/definitions/cubicon_dual_pro_a30.def.json @@ -0,0 +1,44 @@ +{ + "version": 2, + "name": "Cubicon Dual Pro-A30", + "inherits": "cubicon_common", + "metadata": { + "author": "Cubicon R&D Center", + "manufacturer": "Cubicon", + "visible": true, + "file_formats": "text/x-gcode", + "supports_usb_connection": false, + "machine_extruder_trains": { + "0": "cubicon_dual_pro_a30_extruder_0", + "1": "cubicon_dual_pro_a30_extruder_1" + }, + "platform_offset": [ + 0, + 0, + 0 + ] + }, + "overrides": { + "machine_name": { + "default_value": "Cubicon Dual Pro-A30" + }, + "machine_start_gcode": { + "default_value": "M911 Dual Pro-A30C\nM201 X400 Y400\nM202 X400 Y400\nG28 ; Home\nG1 Z15.0 F6000 ;move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_width": { + "default_value": 300 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_height": { + "default_value": 300 + }, + "material_bed_temp_wait":{ + "default_value": false + }, + "machine_extruder_count": { + "default_value": 2 + } + } +} diff --git a/resources/definitions/cubicon_style_plus_a15.def.json b/resources/definitions/cubicon_style_plus_a15.def.json new file mode 100644 index 0000000000..a55d5aa791 --- /dev/null +++ b/resources/definitions/cubicon_style_plus_a15.def.json @@ -0,0 +1,40 @@ +{ + "version": 2, + "name": "Cubicon Style Plus-A15", + "inherits": "cubicon_common", + "metadata": { + "author": "Cubicon R&D Center", + "manufacturer": "Cubicon", + "visible": true, + "file_formats": "text/x-gcode", + "supports_usb_connection": false, + "machine_extruder_trains": { + "0": "cubicon_style_plus_a15_extruder_0" + }, + "platform_offset": [ + 0, + 0, + 0 + ] + }, + "overrides": { + "machine_name": { + "default_value": "Cubicon Style Plus-A15" + }, + "machine_start_gcode": { + "default_value": "M911 Style Plus-A15\nM201 X400 Y400\nM202 X400 Y400\nG28 ; Home\nG1 Z15.0 F6000 ;move the platform down 15mm\n;Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_width": { + "default_value": 150 + }, + "machine_depth": { + "default_value": 150 + }, + "machine_height": { + "default_value": 150 + }, + "material_bed_temp_wait":{ + "default_value": false + } + } +} diff --git a/resources/definitions/dagoma_discoeasy200.def.json b/resources/definitions/dagoma_discoeasy200.def.json index 17e285a422..30c0abdab2 100644 --- a/resources/definitions/dagoma_discoeasy200.def.json +++ b/resources/definitions/dagoma_discoeasy200.def.json @@ -52,9 +52,6 @@ "speed_print": { "default_value": 60 }, - "speed_travel": { - "default_value": 100 - }, "retraction_amount": { "default_value": 3.5 }, diff --git a/resources/definitions/dagoma_magis.def.json b/resources/definitions/dagoma_magis.def.json index 9d2f7170c6..dc5a0f86d2 100644 --- a/resources/definitions/dagoma_magis.def.json +++ b/resources/definitions/dagoma_magis.def.json @@ -55,9 +55,6 @@ "speed_print": { "default_value": 40 }, - "speed_travel": { - "default_value": 120 - }, "retraction_amount": { "default_value": 3.8 }, diff --git a/resources/definitions/dagoma_neva.def.json b/resources/definitions/dagoma_neva.def.json index ea6046b613..43a3e0c4f1 100644 --- a/resources/definitions/dagoma_neva.def.json +++ b/resources/definitions/dagoma_neva.def.json @@ -55,9 +55,6 @@ "speed_print": { "default_value": 40 }, - "speed_travel": { - "default_value": 120 - }, "retraction_amount": { "default_value": 3.8 }, diff --git a/resources/definitions/delta_go.def.json b/resources/definitions/delta_go.def.json index cd1fb180c2..04f0580898 100644 --- a/resources/definitions/delta_go.def.json +++ b/resources/definitions/delta_go.def.json @@ -16,12 +16,8 @@ "overrides": { "machine_name": { "default_value": "Delta Go" }, "default_material_print_temperature": { "default_value": 210 }, - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.66 }, "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 20 }, "layer_height": { "default_value": 0.15 }, "speed_print": { "default_value": 30 }, "machine_heated_bed": { "default_value": false }, diff --git a/resources/definitions/deltabot.def.json b/resources/definitions/deltabot.def.json index 95435f659d..ad6a207bb2 100644 --- a/resources/definitions/deltabot.def.json +++ b/resources/definitions/deltabot.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Ultimaker", - "manufacturer": "Danny Lu", + "manufacturer": "Custom", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], "machine_extruder_trains": @@ -15,15 +15,10 @@ }, "overrides": { - "speed_travel": { "default_value": 150 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "infill_sparse_density": { "default_value": 10 }, - "speed_wall_x": { "default_value": 30 }, - "speed_wall_0": { "default_value": 30 }, - "speed_topbottom": { "default_value": 30 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": true }, diff --git a/resources/definitions/deltacomb.def.json b/resources/definitions/deltacomb.def.json old mode 100755 new mode 100644 index 026dfca9ed..ac2ea5abe1 --- 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", @@ -38,7 +37,7 @@ "retraction_amount" : { "default_value": 3.5 }, "retraction_speed" : { "default_value": 30 }, "retraction_combing" : { "default_value": "noskin" }, - "travel_avoid_distance": { "default_value": 1, "value": "1" }, + "travel_avoid_distance": { "value": "1" }, "speed_print" : { "default_value": 80 }, "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, @@ -46,7 +45,7 @@ "speed_wall_0": { "value": "30" }, "speed_wall_x": { "value": "speed_wall" }, "speed_layer_0": { "value": "min(round(speed_print * 0.75, 0), 45.0)" }, - "speed_travel": { "default_value": 150, "value": 150 }, + "speed_travel": { "value": 150 }, "speed_travel_layer_0": { "value": "round(speed_travel * 0.7, 0)" }, "skirt_brim_speed": { "value": "speed_layer_0" }, "skirt_line_count": { "default_value": 3 }, @@ -58,10 +57,10 @@ "support_z_distance": { "value": "layer_height * 2" }, "support_bottom_distance": { "value": "layer_height" }, "support_use_towers" : { "default_value": false }, - "jerk_enabled": { "default_value": 1, "value": "1" }, - "jerk_infill" : { "default_value": 5, "value": "5" }, - "jerk_support" : { "default_value": 5, "value": "5" }, - "acceleration_enabled": { "default_value": 1, "value": "1" }, + "jerk_enabled": { "value": "True" }, + "jerk_infill" : { "value": "5" }, + "jerk_support" : { "value": "5" }, + "acceleration_enabled": { "value": "1" }, "acceleration_travel" : { "value": 5000 }, "machine_max_feedrate_z" : { "default_value": 300 } } diff --git a/resources/definitions/easyarts_ares.def.json b/resources/definitions/easyarts_ares.def.json index 5655d0a795..18d73a3531 100644 --- a/resources/definitions/easyarts_ares.def.json +++ b/resources/definitions/easyarts_ares.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "nliaudat", - "manufacturer": "EasyArts (discontinued)", + "manufacturer": "EasyArts", "file_formats": "text/x-gcode", "machine_extruder_trains": { @@ -49,27 +49,9 @@ "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { - "default_value": 1 - }, "speed_print": { "default_value": 75 }, - "speed_infill": { - "default_value": 100 - }, - "speed_wall": { - "default_value": 25 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true } diff --git a/resources/definitions/erzay3d.def.json b/resources/definitions/erzay3d.def.json new file mode 100644 index 0000000000..875aea708e --- /dev/null +++ b/resources/definitions/erzay3d.def.json @@ -0,0 +1,81 @@ +{ + "name": "Erzay3D", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Alexander Kirsanov", + "manufacturer": "Robokinetika", + "category": "Other", + "file_formats": "text/x-gcode", + "machine_extruder_trains": + { + "0": "erzay3d_extruder_0" + } + }, + + "overrides": { + "machine_start_gcode" : { "default_value": "G28\nG1 Z15.0 F6000\nG92 E0" }, + "machine_shape": { "default_value": "elliptic"}, + "machine_name": { "default_value": "Erzay3D" }, + "machine_depth": { "default_value": 210 }, + "machine_width": { "default_value": 210 }, + "machine_height": { "default_value": 230 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_center_is_zero": { "default_value": true }, + "machine_extruder_count": { "default_value": 1 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_heated_bed": { "default_value": true }, + "material_bed_temp_wait": { "default_value": true }, + "material_print_temp_wait": { "default_value": true }, + "material_print_temp_prepend": { "default_value": true }, + "machine_buildplate_type": { "default_value": "glass" }, + "machine_nozzle_head_distance": { "default_value": 2.5 }, + "machine_heat_zone_length": { "default_value": 12.5 }, + "machine_max_feedrate_x": { "default_value": 200 }, + "machine_max_feedrate_y": { "default_value": 200 }, + "machine_max_feedrate_z": { "default_value": 200 }, + "machine_max_feedrate_e": { "default_value": 50 }, + "machine_max_acceleration_x": { "default_value": 3000 }, + "machine_max_acceleration_y": { "default_value": 3000 }, + "machine_max_acceleration_z": { "default_value": 3000 }, + "machine_max_acceleration_e": { "default_value": 3000 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 10 }, + "machine_max_jerk_e": { "default_value": 10 }, + "machine_steps_per_mm_x": { "default_value": 1600 }, + "machine_steps_per_mm_y": { "default_value": 1600 }, + "machine_steps_per_mm_z": { "default_value": 1600 }, + "machine_steps_per_mm_e": { "default_value": 174 }, + "machine_feeder_wheel_diameter": { "default_value": 12 }, + + "layer_height": { "default_value": 0.2 }, + "layer_height_0": { "default_value": 0.2 }, + + "ironing_pattern": { "default_value": "concentric" }, + "ironing_flow": { "default_value": 7.0 }, + + "infill_sparse_density": { "default_value": 20 }, + + "default_material_print_temperature": { "default_value": 220 }, + "retraction_amount": { "default_value": 6.5 }, + + "speed_print": { "default_value": 40 }, + "speed_equalize_flow_enabled": { "default_value": true }, + "speed_equalize_flow_max": { "default_value": 100 }, + + "acceleration_print": { "default_value": 1000 }, + + "jerk_print": { "default_value": 10 }, + + "support_angle": { "default_value": 65 }, + "support_brim_enable": { "default_value": true }, + + "adhesion_type": { "default_value": "skirt" }, + "brim_outside_only": { "default_value": false }, + + "meshfix_maximum_resolution": { "default_value": 0.05 } + } +} diff --git a/resources/definitions/fabtotum.def.json b/resources/definitions/fabtotum.def.json index 959a5bdaec..355f6a1434 100644 --- a/resources/definitions/fabtotum.def.json +++ b/resources/definitions/fabtotum.def.json @@ -50,8 +50,8 @@ "retraction_hop_enabled": { "default_value": false }, "material_final_print_temperature": { "value": "material_print_temperature - 5" }, "material_initial_print_temperature": { "value": "material_print_temperature" }, - "travel_avoid_distance": { "default_value": 1, "value": 1 }, - "speed_travel": { "default_value": 200, "value": 200 }, + "travel_avoid_distance": { "value": 1 }, + "speed_travel": { "value": 200 }, "speed_infill": { "value": "round(speed_print * 1.05, 0)" }, "speed_topbottom": { "value": "round(speed_print * 0.95, 0)" }, "speed_wall": { "value": "speed_print" }, diff --git a/resources/definitions/fdmextruder.def.json b/resources/definitions/fdmextruder.def.json index ac50884888..9d1e3c305e 100644 --- a/resources/definitions/fdmextruder.def.json +++ b/resources/definitions/fdmextruder.def.json @@ -6,7 +6,7 @@ "type": "extruder", "author": "Ultimaker", "manufacturer": "Unknown", - "setting_version": 7, + "setting_version": 11, "visible": false, "position": "0" }, diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index ebbb6a5a3c..7b878a3ea2 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -7,10 +7,12 @@ "author": "Ultimaker", "category": "Other", "manufacturer": "Unknown", - "setting_version": 7, + "setting_version": 11, "file_formats": "text/x-gcode;application/x-stl-ascii;application/x-stl-binary;application/x-wavefront-obj;application/x3g", "visible": false, "has_materials": true, + "has_variants": false, + "has_machine_quality": false, "preferred_material": "generic_pla", "preferred_quality_type": "normal", "machine_extruder_trains": @@ -204,6 +206,16 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_heated_build_volume": + { + "label": "Has Build Volume Temperature Stabilization", + "description": "Whether the machine is able to stabilize the build volume temperature.", + "default_value": false, + "type": "bool", + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_center_is_zero": { "label": "Is Center Origin", @@ -375,6 +387,16 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, + "machine_extruders_share_heater": + { + "label": "Extruders Share Heater", + "description": "Whether the extruders share a single heater rather than each extruder having its own heater.", + "type": "bool", + "default_value": false, + "settable_per_mesh": false, + "settable_per_extruder": false, + "settable_per_meshgroup": false + }, "machine_disallowed_areas": { "label": "Disallowed Areas", @@ -399,34 +421,6 @@ "settable_per_extruder": false, "settable_per_meshgroup": false }, - "machine_head_polygon": - { - "label": "Machine Head Polygon", - "description": "A 2D silhouette of the print head (fan caps excluded).", - "type": "polygon", - "default_value": - [ - [ - -1, - 1 - ], - [ - -1, - -1 - ], - [ - 1, - -1 - ], - [ - 1, - 1 - ] - ], - "settable_per_mesh": false, - "settable_per_extruder": false, - "settable_per_meshgroup": false - }, "machine_head_with_fans_polygon": { "label": "Machine Head & Fan Polygon", @@ -892,7 +886,7 @@ "maximum_value_warning": "3 * machine_nozzle_size", "default_value": 0.4, "type": "float", - "enabled": "support_enable", + "enabled": "(support_enable or support_tree_enable)", "value": "line_width", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": false, @@ -908,7 +902,7 @@ "minimum_value_warning": "0.1 + 0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "support_enable and support_interface_enable", + "enabled": "(support_enable or support_tree_enable) and support_interface_enable", "limit_to_extruder": "support_interface_extruder_nr", "value": "line_width", "settable_per_mesh": false, @@ -925,7 +919,7 @@ "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "support_enable and support_roof_enable", + "enabled": "(support_enable or support_tree_enable) and support_roof_enable", "limit_to_extruder": "support_roof_extruder_nr", "value": "extruderValue(support_roof_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, @@ -941,7 +935,7 @@ "minimum_value_warning": "0.4 * machine_nozzle_size", "maximum_value_warning": "2 * machine_nozzle_size", "type": "float", - "enabled": "support_enable and support_bottom_enable", + "enabled": "(support_enable or support_tree_enable) and support_bottom_enable", "limit_to_extruder": "support_bottom_extruder_nr", "value": "extruderValue(support_bottom_extruder_nr, 'support_interface_line_width')", "settable_per_mesh": false, @@ -963,20 +957,20 @@ "maximum_value_warning": "2 * machine_nozzle_size", "settable_per_mesh": false, "settable_per_extruder": true - }, - "initial_layer_line_width_factor": - { - "label": "Initial Layer Line Width", - "description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.", - "type": "float", - "unit": "%", - "default_value": 100.0, - "minimum_value": "0.001", - "maximum_value_warning": "150", - "settable_per_mesh": false, - "settable_per_extruder": true } } + }, + "initial_layer_line_width_factor": + { + "label": "Initial Layer Line Width", + "description": "Multiplier of the line width on the first layer. Increasing this could improve bed adhesion.", + "type": "float", + "unit": "%", + "default_value": 100.0, + "minimum_value": "0.001", + "maximum_value_warning": "150", + "settable_per_mesh": false, + "settable_per_extruder": true } } }, @@ -1178,6 +1172,18 @@ "value": "999999 if infill_sparse_density == 100 else math.ceil(round(bottom_thickness / resolveOrValue('layer_height'), 4))", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "initial_bottom_layers": + { + "label": "Initial Bottom Layers", + "description": "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number.", + "minimum_value": "0", + "minimum_value_warning": "2", + "default_value": 6, + "type": "int", + "value": "bottom_layers", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true } } } @@ -1399,34 +1405,58 @@ "limit_to_extruder": "wall_0_extruder_nr", "settable_per_mesh": true }, - "z_seam_x": + "z_seam_position": { - "label": "Z Seam X", - "description": "The X coordinate of the position near where to start printing each part in a layer.", - "unit": "mm", - "type": "float", - "default_value": 100.0, - "value": "machine_width / 2", + "label": "Z Seam Position", + "description": "The position near where to start printing each part in a layer.", + "type": "enum", + "options": + { + "backleft": "Back Left", + "back": "Back", + "backright": "Back Right", + "right": "Right", + "frontright": "Front Right", + "front": "Front", + "frontleft": "Front Left", + "left": "Left" + }, "enabled": "z_seam_type == 'back'", + "default_value": "back", "limit_to_extruder": "wall_0_extruder_nr", - "settable_per_mesh": true - }, - "z_seam_y": - { - "label": "Z Seam Y", - "description": "The Y coordinate of the position near where to start printing each part in a layer.", - "unit": "mm", - "type": "float", - "default_value": 100.0, - "value": "machine_depth * 3", - "enabled": "z_seam_type == 'back'", - "limit_to_extruder": "wall_0_extruder_nr", - "settable_per_mesh": true + "settable_per_mesh": true, + "children": + { + "z_seam_x": + { + "label": "Z Seam X", + "description": "The X coordinate of the position near where to start printing each part in a layer.", + "unit": "mm", + "type": "float", + "default_value": 100.0, + "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'left' or z_seam_position == 'backleft') else machine_width / 2 if (z_seam_position == 'front' or z_seam_position == 'back') else machine_width) - (machine_width / 2 if z_seam_relative or machine_center_is_zero else 0)", + "enabled": "z_seam_type == 'back'", + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + }, + "z_seam_y": + { + "label": "Z Seam Y", + "description": "The Y coordinate of the position near where to start printing each part in a layer.", + "unit": "mm", + "type": "float", + "default_value": 100.0, + "value": "(0 if (z_seam_position == 'frontleft' or z_seam_position == 'front' or z_seam_position == 'frontright') else machine_depth / 2 if (z_seam_position == 'left' or z_seam_position == 'right') else machine_depth) - (machine_depth / 2 if z_seam_relative or machine_center_is_zero else 0)", + "enabled": "z_seam_type == 'back'", + "limit_to_extruder": "wall_0_extruder_nr", + "settable_per_mesh": true + } + } }, "z_seam_corner": { "label": "Seam Corner Preference", - "description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner.", + "description": "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate.", "type": "enum", "options": { @@ -1454,8 +1484,8 @@ }, "skin_no_small_gaps_heuristic": { - "label": "Ignore Small Z Gaps", - "description": "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting.", + "label": "No Skin in Z Gaps", + "description": "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air.", "type": "bool", "default_value": false, "enabled": "top_layers > 0 or bottom_layers > 0", @@ -1477,7 +1507,7 @@ "ironing_enabled": { "label": "Enable Ironing", - "description": "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface.", + "description": "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material.", "type": "bool", "default_value": false, "limit_to_extruder": "top_bottom_extruder_nr", @@ -1591,6 +1621,36 @@ "enabled": "resolveOrValue('jerk_enabled') and ironing_enabled", "limit_to_extruder": "top_bottom_extruder_nr", "settable_per_mesh": true + }, + "skin_overlap": + { + "label": "Skin Overlap Percentage", + "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.", + "unit": "%", + "type": "float", + "default_value": 5, + "minimum_value_warning": "-50", + "maximum_value_warning": "100", + "value": "5 if top_bottom_pattern != 'concentric' else 0", + "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", + "limit_to_extruder": "top_bottom_extruder_nr", + "settable_per_mesh": true, + "children": + { + "skin_overlap_mm": + { + "label": "Skin Overlap", + "description": "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall.", + "unit": "mm", + "type": "float", + "default_value": 0.02, + "minimum_value_warning": "-0.5 * machine_nozzle_size", + "maximum_value_warning": "machine_nozzle_size", + "value": "0.5 * (skin_line_width + (wall_line_width_x if wall_line_count > 1 else wall_line_width_0)) * skin_overlap / 100 if top_bottom_pattern != 'concentric' else 0", + "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", + "settable_per_mesh": true + } + } } } }, @@ -1723,6 +1783,17 @@ "limit_to_extruder": "infill_extruder_nr", "settable_per_mesh": true }, + "infill_randomize_start_location": + { + "label": "Randomize Infill Start", + "description": "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move.", + "type": "bool", + "default_value": false, + "warning_value": "True if infill_pattern not in ('grid', 'triangles', 'trihexagon', 'cubic', 'cubicsubdiv', 'tetrahedral', 'quarter_cubic') else None", + "enabled": "not ((infill_pattern == 'cross' and connect_infill_polygons) or infill_pattern == 'concentric')", + "limit_to_extruder": "infill_extruder_nr", + "settable_per_mesh": true + }, "infill_multiplier": { "label": "Infill Line Multiplier", @@ -1790,36 +1861,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", @@ -1841,7 +1882,7 @@ "unit": "mm", "type": "float", "default_value": 0.1, - "minimum_value": "resolveOrValue('layer_height') if infill_line_distance > 0 else -999999", + "minimum_value": "resolveOrValue('layer_height') / 2 if infill_line_distance > 0 else -999999", "maximum_value_warning": "0.75 * machine_nozzle_size", "maximum_value": "resolveOrValue('layer_height') * (1.45 if spaghetti_infill_enabled else 8) if infill_line_distance > 0 else 999999", "value": "resolveOrValue('layer_height')", @@ -2032,6 +2073,36 @@ "settable_per_mesh": true } } + }, + "skin_edge_support_thickness": + { + "label": "Skin Edge Support Thickness", + "description": "The thickness of the extra infill that supports skin edges.", + "unit": "mm", + "default_value": 0.8, + "minimum_value": "0", + "maximum_value": "machine_height", + "type": "float", + "value": "0", + "comment": "This was put at 0 to keep the default behaviour the same, but in the original PR the 'value' was: resolveOrValue('infill_sparse_thickness') * (4 if infill_sparse_density < 12.5 else (3 if infill_sparse_density < 25 else (2 if infill_sparse_density < 50 else 1)))", + "limit_to_extruder": "infill_extruder_nr", + "enabled": "infill_sparse_density > 0", + "settable_per_mesh": true, + "children": + { + "skin_edge_support_layers": + { + "label": "Skin Edge Support Layers", + "description": "The number of infill layers that supports skin edges.", + "default_value": 4, + "minimum_value": "0", + "type": "int", + "value": "math.ceil(round(skin_edge_support_thickness / resolveOrValue('infill_sparse_thickness'), 4))", + "limit_to_extruder": "infill_extruder_nr", + "enabled": "infill_sparse_density > 0", + "settable_per_mesh": true + } + } } } }, @@ -2052,7 +2123,7 @@ "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" @@ -2063,14 +2134,14 @@ "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": 35, + "default_value": 0, "resolve": "min(extruderValues('build_volume_temperature'))", "minimum_value": "-273.15", "minimum_value_warning": "0", "maximum_value_warning": "285", - "enabled": true, + "enabled": "machine_heated_build_volume", "settable_per_mesh": false, - "settable_per_extruder": true + "settable_per_extruder": false }, "material_print_temperature": { @@ -2113,7 +2184,7 @@ "minimum_value": "-273.15", "minimum_value_warning": "material_standby_temperature", "maximum_value_warning": "material_print_temperature", - "enabled": "machine_nozzle_temp_enabled", + "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2128,7 +2199,7 @@ "minimum_value": "-273.15", "minimum_value_warning": "material_standby_temperature", "maximum_value_warning": "material_print_temperature", - "enabled": "machine_nozzle_temp_enabled", + "enabled": "machine_nozzle_temp_enabled and not machine_extruders_share_heater", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2155,9 +2226,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 @@ -2172,7 +2243,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, @@ -2189,7 +2260,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, @@ -2234,6 +2305,121 @@ "settable_per_mesh": false, "settable_per_extruder": true }, + "material_crystallinity": + { + "label": "Crystalline Material", + "description": "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?", + "type": "bool", + "default_value": false, + "enabled": false, + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_anti_ooze_retracted_position": + { + "label": "Anti-ooze Retracted Position", + "description": "How far the material needs to be retracted before it stops oozing.", + "type": "float", + "unit": "mm", + "default_value": -4, + "enabled": false, + "minimum_value_warning": "-retraction_amount", + "maximum_value_warning": "0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_anti_ooze_retraction_speed": + { + "label": "Anti-ooze Retraction Speed", + "description": "How fast the material needs to be retracted during a filament switch to prevent oozing.", + "type": "float", + "unit": "mm/s", + "default_value": 5, + "enabled": false, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_preparation_retracted_position": + { + "label": "Break Preparation Retracted Position", + "description": "How far the filament can be stretched before it breaks, while heated.", + "type": "float", + "unit": "mm", + "default_value": -16, + "enabled": false, + "minimum_value_warning": "-retraction_amount * 4", + "maximum_value_warning": "0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_preparation_speed": + { + "label": "Break Preparation Retraction Speed", + "description": "How fast the filament needs to be retracted just before breaking it off in a retraction.", + "type": "float", + "unit": "mm/s", + "default_value": 2, + "enabled": false, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_preparation_temperature": + { + "label": "Break Preparation Temperature", + "description": "The temperature used to purge material, should be roughly equal to the highest possible printing temperature.", + "type": "float", + "unit": "°C", + "default_value": 50, + "value": "material_print_temperature", + "enabled": false, + "minimum_value": "-273.15", + "maximum_value_warning": "300", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_retracted_position": + { + "label": "Break Retracted Position", + "description": "How far to retract the filament in order to break it cleanly.", + "type": "float", + "unit": "mm", + "default_value": -50, + "enabled": false, + "minimum_value_warning": "-100", + "maximum_value_warning": "0", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_speed": + { + "label": "Break Retraction Speed", + "description": "The speed at which to retract the filament in order to break it cleanly.", + "type": "float", + "unit": "mm/s", + "default_value": 25, + "enabled": false, + "minimum_value": "0", + "maximum_value": "machine_max_feedrate_e", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "material_break_temperature": + { + "label": "Break Temperature", + "description": "The temperature at which the filament is broken for a clean break.", + "type": "float", + "unit": "°C", + "default_value": 50, + "enabled": false, + "minimum_value": "-273.15", + "maximum_value_warning": "300", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "material_flow": { "label": "Flow", @@ -2245,7 +2431,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": { @@ -2253,7 +2628,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", @@ -2365,7 +2739,6 @@ "minimum_value": "0", "minimum_value_warning": "line_width * 1.5", "maximum_value_warning": "10", - "enabled": "retraction_enable", "settable_per_mesh": false, "settable_per_extruder": true }, @@ -2398,10 +2771,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 }, @@ -2619,7 +2992,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, @@ -2636,7 +3009,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 @@ -2651,7 +3024,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, @@ -2668,7 +3041,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, @@ -2684,7 +3057,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, @@ -2784,16 +3157,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 }, @@ -2959,7 +3332,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, @@ -2976,7 +3349,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 @@ -2992,7 +3365,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, @@ -3009,7 +3382,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 @@ -3025,7 +3398,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 @@ -3244,7 +3617,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", @@ -3260,7 +3633,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 @@ -3275,7 +3648,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, @@ -3291,7 +3664,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 @@ -3306,7 +3679,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 @@ -3484,17 +3857,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", @@ -3568,7 +3930,7 @@ "value": "retraction_hop", "minimum_value_warning": "0", "maximum_value_warning": "10", - "enabled": "retraction_enable and retraction_hop_after_extruder_switch", + "enabled": "retraction_enable and retraction_hop_after_extruder_switch and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": true } @@ -3746,7 +4108,7 @@ "description": "The extruder train to use for printing the support. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "value": "defaultExtruderPosition()", + "value": "int(defaultExtruderPosition())", "enabled": "(support_enable or support_tree_enable) and extruders_enabled_count > 1", "settable_per_mesh": false, "settable_per_extruder": false, @@ -3948,16 +4310,13 @@ } } }, - "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 @@ -3982,7 +4341,7 @@ "default_value": 8.0, "minimum_value": "0.0", "maximum_value_warning": "50.0", - "enabled": "support_enable", + "enabled": "(support_enable or support_tree_enable) and support_brim_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr", @@ -3997,7 +4356,7 @@ "minimum_value": "0", "maximum_value_warning": "50 / skirt_brim_line_width", "value": "math.ceil(support_brim_width / (skirt_brim_line_width * initial_layer_line_width_factor / 100.0))", - "enabled": "support_enable", + "enabled": "(support_enable or support_tree_enable) and support_brim_enable", "settable_per_mesh": false, "settable_per_extruder": true, "limit_to_extruder": "support_infill_extruder_nr" @@ -4083,6 +4442,7 @@ "unit": "mm", "type": "float", "minimum_value": "0", + "minimum_value_warning": "support_xy_distance - support_line_width * 2", "maximum_value_warning": "support_xy_distance", "default_value": 0.2, "value": "machine_nozzle_size / 2", @@ -4119,7 +4479,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, @@ -4286,7 +4646,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": @@ -4437,21 +4797,21 @@ "minimum_interface_area": { "label": "Minimum Support Interface Area", - "description": "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated.", + "description": "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support.", "unit": "mm²", "type": "float", "default_value": 1.0, "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_interface_extruder_nr", - "enabled": "support_interface_enable and support_enable", + "enabled": "support_interface_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true, "children": { "minimum_roof_area": { "label": "Minimum Support Roof Area", - "description": "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated.", + "description": "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support.", "unit": "mm²", "type": "float", "default_value": 1.0, @@ -4459,13 +4819,13 @@ "minimum_value": "0", "minimum_value_warning": "minimum_support_area", "limit_to_extruder": "support_roof_extruder_nr", - "enabled": "support_roof_enable and support_enable", + "enabled": "support_roof_enable and (support_enable or support_tree_enable)", "settable_per_mesh": true }, "minimum_bottom_area": { "label": "Minimum Support Floor Area", - "description": "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated.", + "description": "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support.", "unit": "mm²", "type": "float", "default_value": 1.0, @@ -4473,7 +4833,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 } } @@ -4522,13 +4882,51 @@ } } }, + "support_interface_angles": + { + "label": "Support Interface Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).", + "type": "[int]", + "default_value": "[ ]", + "limit_to_extruder": "support_interface_extruder_nr", + "enabled": "(support_enable or support_tree_enable) and support_interface_enable and support_interface_pattern != 'concentric'", + "settable_per_mesh": false, + "settable_per_extruder": true, + "children": + { + "support_roof_angles": + { + "label": "Support Roof Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).", + "type": "[int]", + "default_value": "[ ]", + "value": "support_interface_angles", + "limit_to_extruder": "support_roof_extruder_nr", + "enabled": "(support_enable or support_tree_enable) and support_roof_enable and support_roof_pattern != 'concentric'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "support_bottom_angles": + { + "label": "Support Floor Line Directions", + "description": "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees).", + "type": "[int]", + "default_value": "[ ]", + "value": "support_interface_angles", + "limit_to_extruder": "support_bottom_extruder_nr", + "enabled": "(support_enable or support_tree_enable) and support_bottom_enable and support_bottom_pattern != 'concentric'", + "settable_per_mesh": false, + "settable_per_extruder": true + } + } + }, "support_fan_enable": { "label": "Fan Speed Override", "description": "When enabled, the print cooling fan speed is altered for the skin regions immediately above the support.", "type": "bool", "default_value": false, - "enabled": "support_enable", + "enabled": "support_enable or support_tree_enable", "settable_per_mesh": false }, "support_supported_skin_fan_speed": @@ -4540,7 +4938,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": @@ -4567,10 +4965,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, @@ -4622,11 +5020,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": { @@ -4677,7 +5075,7 @@ "description": "The extruder train to use for printing the skirt/brim/raft. This is used in multi-extrusion.", "type": "extruder", "default_value": "0", - "value": "defaultExtruderPosition()", + "value": "int(defaultExtruderPosition())", "enabled": "extruders_enabled_count > 1 and (resolveOrValue('adhesion_type') != 'none' or resolveOrValue('prime_tower_brim_enable'))", "settable_per_mesh": false, "settable_per_extruder": false @@ -4756,13 +5154,27 @@ } } }, + "brim_gap": + { + "label": "Brim Distance", + "description": "The horizontal distance between the first brim line and the outline of the first layer of the print. A small gap can make the brim easier to remove while still providing the thermal benefits.", + "unit": "mm", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "maximum_value_warning": "skirt_brim_line_width", + "enabled": "resolveOrValue('adhesion_type') == 'brim'", + "settable_per_mesh": true, + "settable_per_extruder": true, + "limit_to_extruder": "adhesion_extruder_nr" + }, "brim_replaces_support": { "label": "Brim Replaces Support", "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" @@ -5268,17 +5680,6 @@ "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'))", - "settable_per_mesh": false, - "settable_per_extruder": false - }, "prime_tower_size": { "label": "Prime Tower Size", @@ -5303,7 +5704,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 @@ -5336,21 +5737,6 @@ "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", @@ -5494,9 +5880,47 @@ "description": "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle.", "type": "bool", "default_value": true, - "enabled": "not support_enable", + "enabled": "not (support_enable or support_tree_enable)", "settable_per_mesh": false, "settable_per_extruder": false + }, + "meshfix_maximum_resolution": + { + "label": "Maximum Resolution", + "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", + "type": "float", + "unit": "mm", + "default_value": 0.5, + "minimum_value": "0.001", + "minimum_value_warning": "0.01", + "maximum_value_warning": "3", + "settable_per_mesh": true + }, + "meshfix_maximum_travel_resolution": + { + "label": "Maximum Travel Resolution", + "description": "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate.", + "type": "float", + "unit": "mm", + "default_value": 1.0, + "value": "min(meshfix_maximum_resolution * speed_travel / speed_print, 2 * line_width)", + "minimum_value": "0.001", + "minimum_value_warning": "0.05", + "maximum_value_warning": "10", + "settable_per_mesh": false, + "settable_per_extruder": true + }, + "meshfix_maximum_deviation": + { + "label": "Maximum Deviation", + "description": "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true.", + "type": "float", + "unit": "mm", + "default_value": 0.05, + "minimum_value": "0.001", + "minimum_value_warning": "0.01", + "maximum_value_warning": "0.3", + "settable_per_mesh": true } } }, @@ -5654,7 +6078,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", @@ -5856,6 +6280,7 @@ "label": "Infill Travel Optimization", "description": "When enabled, the order in which the infill lines are printed is optimized to reduce the distance travelled. The reduction in travel time achieved very much depends on the model being sliced, infill pattern, density, etc. Note that, for some models that have many small areas of infill, the time to slice the model may be greatly increased.", "type": "bool", + "enabled": "resolveOrValue('retraction_combing') != 'off'", "default_value": false, "settable_per_mesh": true }, @@ -5887,50 +6312,12 @@ "unit": "mm", "type": "float", "default_value": 1.0, - "minimum_value": "0.001", + "minimum_value": "0", "minimum_value_warning": "0.05", "maximum_value_warning": "1.0", "settable_per_mesh": true, "settable_per_extruder": false }, - "meshfix_maximum_resolution": - { - "label": "Maximum Resolution", - "description": "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway.", - "type": "float", - "unit": "mm", - "default_value": 0.5, - "minimum_value": "0.001", - "minimum_value_warning": "0.01", - "maximum_value_warning": "3", - "settable_per_mesh": true - }, - "meshfix_maximum_travel_resolution": - { - "label": "Maximum Travel Resolution", - "description": "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate.", - "type": "float", - "unit": "mm", - "default_value": 1.0, - "value": "min(meshfix_maximum_resolution * speed_travel / speed_print, 2 * line_width)", - "minimum_value": "0.001", - "minimum_value_warning": "0.05", - "maximum_value_warning": "10", - "settable_per_mesh": false, - "settable_per_extruder": true - }, - "meshfix_maximum_deviation": - { - "label": "Maximum Deviation", - "description": "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller.", - "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", @@ -6093,16 +6480,6 @@ "settable_per_mesh": false, "settable_per_extruder": true }, - "skin_alternate_rotation": - { - "label": "Alternate Skin Rotation", - "description": "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions.", - "type": "bool", - "default_value": false, - "enabled": "(top_layers > 0 or bottom_layers > 0) and top_bottom_pattern != 'concentric'", - "limit_to_extruder": "top_bottom_extruder_nr", - "settable_per_mesh": true - }, "cross_infill_pocket_size": { "label": "Cross 3D Pocket Size", @@ -6227,7 +6604,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", @@ -6259,7 +6636,7 @@ "minimum_value_warning": "machine_nozzle_size * 3", "maximum_value_warning": "100.0", "type": "float", - "enabled": "support_conical_enabled and support_enable", + "enabled": "support_conical_enabled and support_enable and support_conical_angle > 0", "limit_to_extruder": "support_infill_extruder_nr", "settable_per_mesh": true }, @@ -6320,30 +6697,26 @@ }, "flow_rate_max_extrusion_offset": { - "label": "Flow rate compensation max extrusion offset", - "description": "The maximum distance in mm to compensate.", + "label": "Flow Rate Compensation Max Extrusion Offset", + "description": "The maximum distance in mm to move the filament to compensate for changes in flow rate.", "unit": "mm", "type": "float", "minimum_value": "0", "maximum_value_warning": "10", "default_value": 0, - "value": "0", - "enabled": true, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false }, "flow_rate_extrusion_offset_factor": { - "label": "Flow rate compensation factor", - "description": "The multiplication factor for the flow rate -> distance translation.", + "label": "Flow Rate Compensation Factor", + "description": "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion.", "unit": "%", "type": "float", "minimum_value": "0", "maximum_value_warning": "100", "default_value": 100, - "value": "100", - "enabled": true, "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6366,7 +6739,7 @@ "unit": "mm", "default_value": 3, "value": "machine_nozzle_head_distance", - "minimum_value": "0.0001", + "minimum_value": "0.001", "maximum_value_warning": "20", "enabled": "wireframe_enabled", "settable_per_mesh": false, @@ -6396,8 +6769,8 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)", + "minimum_value": "0.05", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", "settable_per_mesh": false, @@ -6412,11 +6785,11 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", + "minimum_value": "0.05", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", - "value": "wireframe_printspeed", + "value": "wireframe_printspeed_flat", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6428,8 +6801,8 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)", + "minimum_value": "0.05", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", "value": "wireframe_printspeed", @@ -6444,8 +6817,8 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", - "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + max(max_feedrate_z_override, machine_max_feedrate_z) ** 2)", + "minimum_value": "0.05", + "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2 + machine_max_feedrate_z ** 2)", "maximum_value_warning": "50", "enabled": "wireframe_enabled", "value": "wireframe_printspeed", @@ -6460,7 +6833,7 @@ "unit": "mm/s", "type": "float", "default_value": 5, - "minimum_value": "0.1", + "minimum_value": "0.05", "maximum_value": "math.sqrt(machine_max_feedrate_x ** 2 + machine_max_feedrate_y ** 2)", "maximum_value_warning": "100", "value": "wireframe_printspeed", @@ -6583,7 +6956,7 @@ "default_value": 0.6, "minimum_value": "0", "maximum_value_warning": "2.0", - "enabled": "wireframe_enabled", + "enabled": "wireframe_enabled and wireframe_strategy == 'knot'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6597,7 +6970,7 @@ "default_value": 0.5, "minimum_value": "0", "maximum_value_warning": "wireframe_height", - "enabled": "wireframe_enabled", + "enabled": "wireframe_enabled and wireframe_strategy == 'compensate'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6611,7 +6984,7 @@ "default_value": 0.6, "minimum_value": "0", "maximum_value_warning": "wireframe_height", - "enabled": "wireframe_enabled", + "enabled": "wireframe_enabled and wireframe_strategy == 'compensate'", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6734,17 +7107,18 @@ "default_value": 0.01, "unit": "mm", "settable_per_mesh": false, - "minimum_value": "0.0001", + "minimum_value": "0.001", "settable_per_extruder": false, "settable_per_meshgroup": false }, "adaptive_layer_height_threshold": { - "label": "Adaptive Layers Threshold", - "description": "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer.", + "label": "Adaptive Layers Topography Size", + "description": "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together.", "type": "float", "enabled": "adaptive_layer_height_enabled", - "default_value": 200.0, + "default_value": 0.2, + "unit": "mm", "settable_per_mesh": false, "settable_per_extruder": false, "settable_per_meshgroup": false @@ -6752,7 +7126,7 @@ "wall_overhang_angle": { "label": "Overhanging Wall Angle", - "description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging.", + "description": "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either.", "unit": "°", "type": "float", "minimum_value": "0", @@ -6806,6 +7180,17 @@ "enabled": "bridge_settings_enabled", "settable_per_mesh": true }, + "bridge_sparse_infill_max_density": + { + "label": "Bridge Sparse Infill Max Density", + "description": "Maximum density of infill considered to be sparse. Skin over sparse infill is considered to be unsupported and so may be treated as a bridge skin.", + "unit": "%", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "enabled": "bridge_settings_enabled", + "settable_per_mesh": true + }, "bridge_wall_coast": { "label": "Bridge Wall Coasting", @@ -7040,6 +7425,7 @@ "description": "Retract the filament when the nozzle is moving over a non-printed area.", "type": "bool", "default_value": true, + "value": "retraction_enable", "enabled": "clean_between_layers", "settable_per_mesh": false, "settable_per_extruder": true, @@ -7052,6 +7438,7 @@ "unit": "mm", "type": "float", "default_value": 1, + "value": "retraction_amount", "minimum_value_warning": "-0.0001", "maximum_value_warning": "10.0", "enabled": "wipe_retraction_enable and clean_between_layers", @@ -7066,6 +7453,7 @@ "unit": "mm³", "type": "float", "default_value": 0, + "value": "retraction_extra_prime_amount", "minimum_value_warning": "-0.0001", "maximum_value_warning": "10.0", "enabled": "wipe_retraction_enable and clean_between_layers", @@ -7079,6 +7467,7 @@ "unit": "mm/s", "type": "float", "default_value": 5, + "value": "retraction_speed", "minimum_value": "0", "minimum_value_warning": "1", "maximum_value": "machine_max_feedrate_e", @@ -7100,13 +7489,13 @@ "minimum_value_warning": "1", "maximum_value_warning": "70", "enabled": "wipe_retraction_enable and clean_between_layers", - "value": "retraction_speed", + "value": "wipe_retraction_speed", "settable_per_mesh": false, "settable_per_extruder": true }, "wipe_retraction_prime_speed": { - "label": "Retraction Prime Speed", + "label": "Wipe Retraction Prime Speed", "description": "The speed at which the filament is primed during a wipe retraction move.", "unit": "mm/s", "type": "float", @@ -7116,7 +7505,7 @@ "minimum_value_warning": "1", "maximum_value_warning": "70", "enabled": "wipe_retraction_enable and clean_between_layers", - "value": "retraction_speed", + "value": "wipe_retraction_speed", "settable_per_mesh": false, "settable_per_extruder": true } @@ -7137,10 +7526,11 @@ }, "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.", + "label": "Wipe Z Hop", + "description": "When wiping, the build plate is lowered to create clearance between the nozzle and the print. It prevents the nozzle from hitting the print during travel moves, reducing the chance to knock the print from the build plate.", "type": "bool", "default_value": true, + "value": "retraction_hop_enabled", "enabled": "clean_between_layers", "settable_per_mesh": false, "settable_per_extruder": true, @@ -7153,6 +7543,7 @@ "unit": "mm", "type": "float", "default_value": 1, + "value": "retraction_hop", "enabled": "wipe_hop_enable and clean_between_layers", "settable_per_mesh": false, "settable_per_extruder": true, @@ -7164,7 +7555,8 @@ "description": "Speed to move the z-axis during the hop.", "unit": "mm/s", "type": "float", - "default_value": 100, + "default_value": 10, + "value": "speed_z_hop", "minimum_value": "0", "minimum_value_warning": "1", "enabled": "wipe_hop_enable and clean_between_layers", @@ -7208,6 +7600,55 @@ "settable_per_mesh": false, "settable_per_extruder": true, "settable_per_meshgroup": false + }, + "small_hole_max_size": + { + "label": "Small Hole Max Size", + "description": "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "default_value": 0, + "settable_per_mesh": true, + "children": + { + "small_feature_max_length": + { + "label": "Small Feature Max Length", + "description": "Feature outlines that are shorter than this length will be printed using Small Feature Speed.", + "unit": "mm", + "type": "float", + "minimum_value": "0", + "default_value": 0, + "value": "small_hole_max_size * math.pi", + "settable_per_mesh": true + } + } + }, + "small_feature_speed_factor": + { + "label": "Small Feature Speed", + "description": "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.", + "unit": "%", + "type": "float", + "default_value": 50, + "minimum_value": "1", + "minimum_value_warning": "25", + "maximum_value": "100", + "settable_per_mesh": true + }, + "small_feature_speed_factor_0": + { + "label": "Small Feature Initial Layer Speed", + "description": "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy.", + "unit": "%", + "type": "float", + "default_value": 50, + "value": "small_feature_speed_factor", + "minimum_value": "1", + "minimum_value_warning": "25", + "maximum_value": "100", + "settable_per_mesh": true } } }, diff --git a/resources/definitions/felixpro2dual.def.json b/resources/definitions/felixpro2dual.def.json new file mode 100644 index 0000000000..fdd8a1b694 --- /dev/null +++ b/resources/definitions/felixpro2dual.def.json @@ -0,0 +1,71 @@ +{ + "version": 2, + "name": "Felix Pro 2 Dual", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "pnks", + "manufacturer": "Felix", + "platform": "FelixPro2_platform.obj", + "platform_offset": [-135, -0.5, 130], + "machine_extruder_trains": + { + "0": "felixpro2_dual_extruder_0", + "1": "felixpro2_dual_extruder_1" + }, + "file_formats": "text/x-gcode", + "has_variants": true, + "has_materials": true, + "preferred_variant_name": "0.35 mm", + "variants_name": "Nozzle diameter" + }, + "overrides": { + "machine_name": { "default_value": "FelixPro2Dual" }, + + "layer_height": { "default_value": 0.15 }, + "layer_height_0": { "default_value": 0.2 }, + + "infill_sparse_density": { "default_value": 20 }, + "wall_thickness": { "default_value": 1 }, + "top_bottom_thickness": { "default_value": 1 }, + + "machine_width": { "default_value": 240 }, + "machine_depth": { "default_value": 225 }, + "machine_height": { "default_value": 245 }, + + "machine_head_with_fans_polygon": + { + "default_value": [ + [ -60, 50 ], + [ -60, -50 ], + [ 70, 50 ], + [ 70, -50 ] + ] + }, + "gantry_height": { "value": "0" }, + "machine_extruder_count": { "default_value": 2 }, + "prime_tower_position_x": { "value": "250" }, + "prime_tower_position_y": { "value": "200" }, + + "machine_heated_bed": { "default_value": true }, + "machine_gcode_flavor": { "default_value": "Repetier" }, + "machine_center_is_zero": { "default_value": false }, + + "speed_print": { "default_value": 80 }, + + "retraction_amount": { "default_value": 1 }, + "retraction_speed": { "default_value": 50}, + "material_flow": { "default_value": 100 }, + "material_flow_layer_0": { "default_value" : 110, "value": "material_flow * 1.1" }, + "adhesion_type": { "default_value": "skirt" }, + "skirt_brim_minimal_length": { "default_value": 130 }, + "skirt_line_count": { "default_value": 3 }, + + "machine_start_gcode": { + "default_value": "G90 ;absolute positioning\r\nM82 ;set extruder to absolute mode\r\nM107 ;start with the fan off\r\nG28 X0 Y0 ;move X\/Y to min endstops\r\nG28 Z0 ;move Z to min endstops\r\nG1 Z15.0 F9000 ;move the platform down 15mm\r\n\r\nT0 ;Switch to the 1st extruder\r\nG92 E0 ;zero the extruded length\r\nG1 F200 E6 ;extrude 6 mm of feed stock\r\nG92 E0 ;zero the extruded length again\r\n;G1 F9000\r\nM117 FPro2 printing...\r\n" + }, + "machine_end_gcode": { + "default_value": "; Endcode FELIXprinters Pro series\r\n; =================================\t; Move extruder to park position\r\nG91 \t\t\t\t\t; Make coordinates relative\r\nG1 Z2 F5000 \t\t\t\t; Move z 2mm up\r\nG90 \t\t\t\t\t; Use absolute coordinates again\t\t\r\nG1 X220 Y243 F7800 \t\t\t; Move bed and printhead to ergonomic position\r\n\r\n; =================================\t; Turn off heaters\r\nT0\t\t\t\t\t; Select left extruder\r\nM104 T0 S0\t\t\t\t; Turn off heater and continue\t\t\t\t\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\nG1 E-8\t\t\t\t\t; Retract filament 8mm\r\nG1 E-5\t\t\t\t\t; Push back filament 3mm\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\n\r\nT1\t\t\t\t\t; Select right extruder\r\nM104 T1 S0\t\t\t\t; Turn off heater and continu\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\nG1 E-8\t\t\t\t\t; Retract filament 8mm\r\nG1 E-5\t\t\t\t\t; Push back filament 3mm\r\nG92 E0\t\t\t\t\t; Reset extruder position\r\nT0\t\t\t\t\t; Select left extruder\r\nM140 S0\t\t\t\t\t; Turn off bed heater\r\n\r\n; =================================\t; Turn the rest off\r\nM107 \t\t\t\t; Turn off fan\r\nM84\t\t\t\t\t; Disable steppers\r\nM117 Print Complete" + } + } +} diff --git a/resources/definitions/felixtec4dual.def.json b/resources/definitions/felixtec4dual.def.json index ba5bcfa112..efc13c1759 100644 --- a/resources/definitions/felixtec4dual.def.json +++ b/resources/definitions/felixtec4dual.def.json @@ -39,7 +39,6 @@ "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 1 }, "retraction_speed": { "default_value": 50}, diff --git a/resources/definitions/flsun_qq.def.json b/resources/definitions/flsun_qq.def.json index ce69317b33..02b3849c12 100644 --- a/resources/definitions/flsun_qq.def.json +++ b/resources/definitions/flsun_qq.def.json @@ -19,13 +19,13 @@ "default_value": true }, "machine_width": { - "default_value": 240 + "default_value": 260 }, "machine_height": { "default_value": 285 }, "machine_depth": { - "default_value": 240 + "default_value": 260 }, "machine_center_is_zero": { "default_value": true diff --git a/resources/definitions/flsun_qq_s.def.json b/resources/definitions/flsun_qq_s.def.json new file mode 100644 index 0000000000..9c3bf571ae --- /dev/null +++ b/resources/definitions/flsun_qq_s.def.json @@ -0,0 +1,71 @@ +{ + "version": 2, + "name": "FLSUN QQ-S", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Cataldo URSO", + "manufacturer": "FLSUN", + "file_formats": "text/x-gcode", + "has_materials": true, + "preferred_quality_type": "draft", + "machine_extruder_trains": { + "0": "flsun_qq_s_extruder_0" + } + }, + "overrides": { + "machine_center_is_zero": { + "default_value": true + }, + "machine_shape": { + "default_value": "elliptic" + }, + "machine_width": { + "default_value": 260 + }, + "machine_depth": { + "default_value": 260 + }, + "machine_height": { + "default_value": 370 + }, + "z_seam_type": { + "default_value": "back" + }, + "gantry_height": { + "value": "0" + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_start_gcode": { + "default_value": "G21\nG90\nM82\nM107 T0\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG28\nG92 E0\nG0 E3 F200\nG92 E0\n" + }, + "machine_end_gcode": { + "default_value": "M107 T0\nM104 S0\nM104 S0 T1\nM140 S0\nG92 E0\nG91\nG1 E-1 F300 \nG1 Z+0.5 E-5 X-20 Y-20 F9000\nG28 X0 Y0\nM84 ;steppers off\nG90 ;absolute positioning\n" + }, + "infill_sparse_density": { + "default_value": 10 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [0, 0], + [0, 0], + [0, 0], + [0, 0] + ] + }, + "retraction_enable": { + "default_value": true + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_gcode_flavor": { + "default_value": "Repetier" + } + } +} diff --git a/resources/definitions/geeetech_a30.def.json b/resources/definitions/geeetech_a30.def.json new file mode 100644 index 0000000000..1f08d37445 --- /dev/null +++ b/resources/definitions/geeetech_a30.def.json @@ -0,0 +1,113 @@ +{ + "version": 2, + "name": "Geeetech A30", + "inherits": "fdmprinter", + "metadata": { + "author": "William & Cataldo URSO", + "manufacturer": "Shenzhen Geeetech Technology", + "file_formats": "text/x-gcode", + "visible": true, + "has_materials": true, + "preferred_quality_type": "draft", + "machine_extruder_trains": { + "0": "geeetech_a30_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Geeetech A30" + }, + "machine_start_gcode": { + "default_value": "G28 ;Home\nM190 S{material_bed_temperature}\nM109 S{material_print_temperature} T0\nG1 Z15.0 F6000 ;Move the platform down 15mm\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0;Cooling the heat end\nM140 S0;Cooling the heat bed\nG92 E1\nG1 E-1 F300\nG28 X0 Y0;Home X axis and Y axis\nM84" + }, + "machine_width": { + "default_value": 320 + }, + "machine_height": { + "default_value": 420 + }, + "machine_depth": { + "default_value": 320 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "layer_height": { + "default_value": 0.1 + }, + "layer_height_0": { + "default_value": 0.3 + }, + "retraction_amount": { + "default_value": 2 + }, + "retraction_speed": { + "default_value": 25 + }, + "adhesion_type": { + "default_value": "skirt" + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-75, 35], + [18, 35], + [18, -18], + [-75, -18] + ] + }, + "gantry_height": { + "value": "55" + }, + "machine_max_feedrate_x": { + "default_value": 300 + }, + "machine_max_feedrate_y": { + "default_value": 300 + }, + "machine_max_feedrate_z": { + "default_value": 7 + }, + "machine_max_feedrate_e": { + "default_value": 50 + }, + "machine_max_acceleration_x": { + "default_value": 2000 + }, + "machine_max_acceleration_y": { + "default_value": 2000 + }, + "machine_max_acceleration_z": { + "default_value": 100 + }, + "machine_max_acceleration_e": { + "default_value": 10000 + }, + "machine_acceleration": { + "default_value": 2000 + }, + "machine_max_jerk_xy": { + "default_value": 10 + }, + "machine_max_jerk_z": { + "default_value": 1 + }, + "machine_max_jerk_e": { + "default_value": 5 + }, + "machine_gcode_flavor": { + "default_value": "Repetier" + } + } +} diff --git a/resources/definitions/gmax15plus.def.json b/resources/definitions/gmax15plus.def.json index eb576f0e19..e98d6c02fe 100644 --- a/resources/definitions/gmax15plus.def.json +++ b/resources/definitions/gmax15plus.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus", "version": 2, "name": "gMax 1.5 Plus", "inherits": "fdmprinter", @@ -39,7 +38,6 @@ "adhesion_type": { "default_value": "skirt" }, "gantry_height": { "value": "50" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 70 }, "machine_max_acceleration_x": { "default_value": 600 }, "machine_max_acceleration_y": { "default_value": 600 }, "machine_max_acceleration_z": { "default_value": 30 }, @@ -50,9 +48,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home X/Y/Z\nM104 S{material_print_temperature} ; Preheat\nM109 S{material_print_temperature} ; Preheat\nG91 ;relative positioning\nG90 ;absolute positioning\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/gmax15plus_dual.def.json b/resources/definitions/gmax15plus_dual.def.json index 40a3dde303..aaba2cc55b 100644 --- a/resources/definitions/gmax15plus_dual.def.json +++ b/resources/definitions/gmax15plus_dual.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual", "version": 2, "name": "gMax 1.5 Plus Dual Extruder", "inherits": "fdmprinter", @@ -37,7 +36,6 @@ "adhesion_type": { "default_value": "skirt" }, "gantry_height": { "value": "50" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 70 }, "machine_max_acceleration_x": { "default_value": 600 }, "machine_max_acceleration_y": { "default_value": 600 }, "machine_max_acceleration_z": { "default_value": 30 }, @@ -48,9 +46,7 @@ "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 ;Home X/Y/Z\nM104 S{material_print_temperature} T0 ; Preheat Left Extruder\nM104 S{material_print_temperature} T1 ; Preheat Right Extruder\nM109 S{material_print_temperature} T0 ; Preheat Left Extruder\nM109 S{material_print_temperature} T1 ; Preheat Right Extruder\nG91 ;relative positioning\nG90 ;absolute positioning\nM218 T1 X34.3 Y0; Set 2nd extruder offset. This can be changed later if needed\nG1 Z25.0 F9000 ;raise nozzle 25mm\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." }, "machine_end_gcode": { "default_value": "M104 S0 T0;Left extruder off\nM104 S0 T1; Right extruder off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" }, - "material_print_temperature": { "default_value": 202 }, "wall_thickness": { "default_value": 1 }, - "top_bottom_thickness": { "default_value": 1 }, - "bottom_thickness": { "default_value": 1 } + "top_bottom_thickness": { "default_value": 1 } } } diff --git a/resources/definitions/grr_neo.def.json b/resources/definitions/grr_neo.def.json index b3a558825a..774a3e614c 100644 --- a/resources/definitions/grr_neo.def.json +++ b/resources/definitions/grr_neo.def.json @@ -28,7 +28,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], diff --git a/resources/definitions/hellbot_adonis.def.json b/resources/definitions/hellbot_adonis.def.json new file mode 100644 index 0000000000..a73c66a611 --- /dev/null +++ b/resources/definitions/hellbot_adonis.def.json @@ -0,0 +1,32 @@ +{ + "version": 2, + "name": "Hellbot Adonis", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "MUX team", + "manufacturer": "Hellbot", + "file_formats": "text/x-gcode", + "platform": "hellbot_adonis.obj", + "platform_texture": "hellbot.png", + "platform_offset": [0, -1, 0], + "has_materials": true, + "machine_extruder_trains": { + "0": "hellbot_adonis_extruder" + } + }, + "overrides": { + "machine_name": { + "default_value": "Hellbot Adonis" + }, + "machine_width": { + "default_value": 160 + }, + "machine_depth": { + "default_value": 160 + }, + "machine_height": { + "default_value": 160 + } + } +} diff --git a/resources/definitions/hellbot_magna_I.def.json b/resources/definitions/hellbot_magna_I.def.json new file mode 100644 index 0000000000..453dcef718 --- /dev/null +++ b/resources/definitions/hellbot_magna_I.def.json @@ -0,0 +1,32 @@ +{ + "version": 2, + "name": "Hellbot Magna 1", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "MUX team", + "manufacturer": "Hellbot", + "file_formats": "text/x-gcode", + "platform": "hellbot_magna.obj", + "platform_texture": "hellbot.png", + "platform_offset": [0, -1, 0], + "has_materials": true, + "machine_extruder_trains": { + "0": "hellbot_magna_i_extruder" + } + }, + "overrides": { + "machine_name": { + "default_value": "Hellbot Magna 1" + }, + "machine_width": { + "default_value": 220 + }, + "machine_depth": { + "default_value": 220 + }, + "machine_height": { + "default_value": 260 + } + } +} diff --git a/resources/definitions/hellbot_magna_dual.def.json b/resources/definitions/hellbot_magna_dual.def.json new file mode 100644 index 0000000000..5ee36e0749 --- /dev/null +++ b/resources/definitions/hellbot_magna_dual.def.json @@ -0,0 +1,36 @@ +{ + "version": 2, + "name": "Hellbot Magna DUAL", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "MUX team", + "manufacturer": "Hellbot", + "file_formats": "text/x-gcode", + "platform": "hellbot_magna.obj", + "platform_texture": "hellbot.png", + "platform_offset": [0, -1, 0], + "has_materials": true, + "machine_extruder_trains": { + "0": "hellbot_magna_dual_extruder_1", + "1": "hellbot_magna_dual_extruder_2" + } + }, + "overrides": { + "machine_name": { + "default_value": "Hellbot Magna DUAL" + }, + "machine_width": { + "default_value": 220 + }, + "machine_depth": { + "default_value": 220 + }, + "machine_height": { + "default_value": 260 + }, + "machine_extruder_count": { + "default_value": 2 + } + } +} diff --git a/resources/definitions/helloBEEprusa.def.json b/resources/definitions/helloBEEprusa.def.json index 65716ac175..2c8c4839d0 100644 --- a/resources/definitions/helloBEEprusa.def.json +++ b/resources/definitions/helloBEEprusa.def.json @@ -26,28 +26,15 @@ "machine_height": { "default_value": 190 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, - "material_print_temperature": { "default_value": 200 }, - "material_bed_temperature": { "default_value": 60 }, - "line_width": { "default_value": 0.48 }, "layer_height": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { "default_value": 3 }, "wall_thickness": { "default_value": 1.2 }, "top_bottom_thickness": { "default_value": 1.2 }, "infill_sparse_density": { "default_value": 20 }, - "infill_overlap": { "default_value": 15 }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 160 }, - "speed_layer_0": { "default_value": 30 }, - "speed_wall_x": { "default_value": 35 }, - "speed_wall_0": { "default_value": 30 }, - "speed_infill": { "default_value": 60 }, - "speed_topbottom": { "default_value": 20 }, - "skirt_brim_speed": { "default_value": 35 }, "skirt_line_count": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 30 }, "skirt_gap": { "default_value": 6 }, - "cool_fan_full_at_height": { "default_value": 0.4 }, "retraction_speed": { "default_value": 15.0}, "retraction_amount": { "default_value": 1.5} } diff --git a/resources/definitions/hms434.def.json b/resources/definitions/hms434.def.json index 9a599f4fe7..be78df9daa 100644 --- a/resources/definitions/hms434.def.json +++ b/resources/definitions/hms434.def.json @@ -5,13 +5,28 @@ "metadata": { "visible": true, "author": "Scheepers", - "manufacturer": "MaukCC", + "manufacturer": "Hybrid AM Systems", "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" ], + "exclude_materials": [ + "chromatik_pla", + "dsm_arnitel2045_175", "dsm_novamid1070_175", + "emotiontech_abs", "emotiontech_petg", "emotiontech_pla", "emotiontech_pva-m", "emotiontech_pva-oks", "emotiontech_pva-s", "emotiontech_tpu98a", + "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", + "generic_abs", "generic_abs_175", "generic_cpe_175", "generic_hips_175", "generic_nylon_175", "generic_pc_175", "generic_petg_175", "generic_pla_175", "generic_pva_175", "generic_tpu_175", + "imade3d_petg_175", "imade3d_pla_175", + "innofill_innoflex60_175", + "leapfrog_abs_natural", "leapfrog_epla_natural","leapfrog_pva_natural", + "octofiber_pla", + "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", + "verbatim_bvoh_175", + "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_PLA_Glitter", "Vertex_Delta_PLA_Mat", "Vertex_Delta_PLA_Satin", "Vertex_Delta_PLA_Wood", "Vertex_Delta_TPU", + "tizyx_abs", "tizyx_flex", "tizyx_petg", "tizyx_pla", "tizyx_pla_bois", "tizyx_pva", + "zyyx_pro_flex", "zyyx_pro_pla" + ], "has_variants": true, "variants_name": "Tool", @@ -42,21 +57,18 @@ "machine_extruder_count": {"default_value": 2 }, "material_diameter": {"default_value": 1.75 }, "machine_heated_bed": {"default_value": true }, + "machine_heated_build_volume":{"default_value": true }, "machine_center_is_zero": {"default_value": false }, "gantry_height": {"value": "35" }, "machine_height": {"default_value": 400 }, "machine_depth": {"default_value": 325 }, "machine_width": {"default_value": 450 }, "machine_gcode_flavor": {"default_value": "RepRap (RepRap)" }, - "material_print_temp_wait": {"default_value": 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 X150 Y10 F9000\nG30 H0\nM340 P0 S1500\n\nG1 X-20 Y-100 F9000;go to wipe point\nG1 Z0 F900\nG1 Z0.2 F900\nG1 Y-50 F9000\nG1 X150 Y10 F9000\nM117 HMS434 Printing ...\n\n" }, + "material_print_temp_wait": {"default_value": false }, + "material_bed_temp_wait": {"default_value": false }, + "machine_max_feedrate_z": {"default_value": 10 }, + "machine_acceleration": {"default_value": 500 }, + "machine_start_gcode": {"default_value": "\n;Neither Hybrid AM Systems nor any of Hybrid AM Systems representatives has any liabilities or gives any warranties on this .gcode file, or on any or all objects made with this .gcode file.\n\nM140 S{material_bed_temperature_layer_0}\n\nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\n\nG1 Z10 F900\nG1 X-30 Y100 F12000\n\nM190 S{material_bed_temperature_layer_0}\nM117 HMS434 Printing ...\n\n" }, "machine_end_gcode": {"default_value": "" }, "retraction_extra_prime_amount": {"minimum_value_warning": "-2.0" }, @@ -67,7 +79,8 @@ "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)" }, + "line_width": {"value": "(machine_nozzle_size + 0.2)" }, + "wall_line_width_0": {"value": "(machine_nozzle_size - 0.05)" }, "infill_line_width": {"value": "(line_width)" }, "initial_layer_line_width_factor": {"value": 110 }, @@ -77,10 +90,20 @@ "top_layers": {"value": "4" }, "bottom_layers": {"value": "(top_layers)" }, "wall_0_inset": {"value": "0" }, + "outer_inset_first": {"value": true }, "alternate_extra_perimeter": {"value": false }, - "filter_out_tiny_gaps": {"value": false }, + "filter_out_tiny_gaps": {"value": true }, "fill_outline_gaps": {"value": true }, + "z_seam_type": {"value": "'back'"}, + "z_seam_x": {"value": "300"}, + "z_seam_y": {"value": "325"}, + "z_seam_corner": {"value": "'z_seam_corner_inner'"}, "skin_outline_count": {"value": "0"}, + "ironing_enabled": {"value": true }, + "ironing_line_spacing": {"value": "line_width / 4 * 3"}, + "ironing_flow": {"value": "0"}, + "ironing_inset": {"value": "ironing_line_spacing"}, + "speed_ironing": {"value": "150"}, "infill_sparse_density": {"value": 30}, "infill_pattern": {"value": "'lines'"}, @@ -89,12 +112,14 @@ "infill_wipe_dist": {"value": 0.0}, "infill_before_walls": {"value": false}, - "material_print_temperature_layer_0": {"value": "material_print_temperature + 5"}, + "material_print_temperature_layer_0": {"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": "120 if infill_sparse_density < 95 else 115"}, + "material_bed_temperature_layer_0": {"value": "material_bed_temperature"}, + "material_flow": {"value": "100"}, + "retraction_enable": {"value": true }, + "retract_at_layer_change": {"value": true }, "retraction_amount": {"value": "1"}, "retraction_speed": {"value": "20"}, "retraction_prime_speed": {"value": "8"}, @@ -109,15 +134,15 @@ "speed_wall_x": {"value": "speed_wall"}, "speed_layer_0": {"value": "(speed_print/5*4) if speed_print < 51 else speed_print"}, "speed_topbottom": {"value": "speed_layer_0"}, - "speed_travel": {"value": "100"}, + "speed_travel": {"value": "150"}, "speed_travel_layer_0": {"value": "speed_travel"}, "speed_support_interface": {"value": "speed_topbottom"}, - "max_feedrate_z_override": {"value": 10}, + "speed_z_hop": {"value": 10}, "speed_slowdown_layers": {"value": 1}, - "acceleration_print": {"value": 200}, - "acceleration_travel": {"value": 200}, - "jerk_print": {"value": 5}, - "jerk_travel": {"value": 5}, + "acceleration_print": {"value": 1000}, + "acceleration_travel": {"value": 1000}, + "jerk_print": {"value": 10}, + "jerk_travel": {"value": 10}, "retraction_hop_enabled": {"value": false}, "retraction_hop": {"value": 1}, @@ -130,12 +155,14 @@ "cool_min_speed": {"value": "10"}, "cool_lift_head": {"value": false}, + "support_infill_rate": {"value": 25}, "support_z_distance": {"value": 0}, - "support_xy_distance": {"value": 1}, + "support_xy_distance": {"value": 0.4}, "support_join_distance": {"value": 10}, + "support_interface_pattern": {"value": "'lines'"}, + "support_roof_pattern": {"value": "'concentric'"}, "support_interface_enable": {"value": true}, "support_interface_height": {"value": 0.5}, - "support_interface_pattern": {"value": "'lines'"}, "adhesion_type": {"value": "'skirt'"}, "skirt_gap": {"value": 1}, @@ -147,23 +174,29 @@ "prime_tower_position_y": {"value": 70 }, "prime_blob_enable": {"default_value": false }, - "coasting_enable": {"value": true}, - "coasting_volume": {"value": 0.1}, - "coasting_min_volume": {"value": 0.17}, - "coasting_speed": {"value": 90}, - "bridge_settings_enabled": {"value": true}, - "bridge_wall_min_length": {"value": 3}, - "bridge_skin_support_threshold": {"value": 90}, - "bridge_wall_speed": {"value": 15}, - "bridge_wall_material_flow": {"value": 130}, - "bridge_skin_speed": {"value": 15}, - "bridge_skin_material_flow": {"value": 130}, - "bridge_fan_speed": {"value": 0}, - "bridge_skin_density_2": {"value": 100}, - "bridge_skin_density_3": {"value": 100}, - "bridge_skin_material_flow_2": {"value": 110}, - "bridge_skin_material_flow_3": {"value": 100}, - "bridge_skin_speed_2": {"value": 20}, - "bridge_skin_speed_3": {"value": 30} + "meshfix_maximum_resolution": {"value": 0.01 }, + "meshfix_maximum_travel_resolution":{"value": 0.1 }, + "meshfix_maximum_deviation": {"value": 0.01 }, + + "minimum_polygon_circumference": {"value": 0.05 }, + "coasting_enable": {"value": true}, + "coasting_volume": {"value": 0.1}, + "coasting_min_volume": {"value": 0.17}, + "coasting_speed": {"value": 90}, + "wall_overhang_angle": {"value": 60}, + "bridge_settings_enabled": {"value": true}, + "bridge_wall_min_length": {"value": 3}, + "bridge_skin_support_threshold": {"value": 90}, + "bridge_wall_speed": {"value": 15}, + "bridge_wall_material_flow": {"value": 130}, + "bridge_skin_speed": {"value": 15}, + "bridge_skin_material_flow": {"value": 130}, + "bridge_fan_speed": {"value": 0}, + "bridge_skin_density_2": {"value": 100}, + "bridge_skin_density_3": {"value": 100}, + "bridge_skin_material_flow_2": {"value": 110}, + "bridge_skin_material_flow_3": {"value": 100}, + "bridge_skin_speed_2": {"value": 20}, + "bridge_skin_speed_3": {"value": 30} } } diff --git a/resources/definitions/imade3d_jellybox.def.json b/resources/definitions/imade3d_jellybox.def.json index ae9ca176f5..87f9155974 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,19 @@ "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;_______________________________________" + }, + + "retraction_prime_speed": { + "value": "max(retraction_speed - 30, 5)" } } } diff --git a/resources/definitions/imade3d_jellybox_2.def.json b/resources/definitions/imade3d_jellybox_2.def.json new file mode 100644 index 0000000000..5fddf4e80d --- /dev/null +++ b/resources/definitions/imade3d_jellybox_2.def.json @@ -0,0 +1,40 @@ +{ + "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;_______________________________________" + }, + + "retraction_prime_speed": { + "value": "max(retraction_speed - 30, 5)" + } + } +} 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 72a9ec3edb..df839b0fe4 100644 --- a/resources/definitions/innovo_inventor.def.json +++ b/resources/definitions/innovo_inventor.def.json @@ -32,7 +32,7 @@ "machine_center_is_zero": { "default_value": true }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-43.7, -19.2], [-43.7, 55], @@ -61,36 +61,10 @@ "top_bottom_thickness": { "default_value": 1.2 }, - "material_print_temperature": { - "default_value": 205 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 50 }, - "speed_wall_0": { - "default_value": 25 - }, - "speed_wall_x": { - "default_value": 40 - }, - "speed_infill": { - "default_value": 80 - }, - "speed_topbottom": { - "default_value": 30 - }, - "speed_support_interface": - { - "default_value": 20 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 30.0, "minimum_value": 0.1 } } diff --git a/resources/definitions/jgaurora_a1.def.json b/resources/definitions/jgaurora_a1.def.json index 3c9f9c61e9..1c910f0d95 100644 --- a/resources/definitions/jgaurora_a1.def.json +++ b/resources/definitions/jgaurora_a1.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 215 - }, - "material_bed_temperature": { - "default_value": 67 - }, "layer_height_0": { "default_value": 0.12 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_a3s.def.json b/resources/definitions/jgaurora_a3s.def.json new file mode 100644 index 0000000000..ead0a5f9e7 --- /dev/null +++ b/resources/definitions/jgaurora_a3s.def.json @@ -0,0 +1,72 @@ +{ + "name": "JGAurora A3S", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Samuel Pinches", + "manufacturer": "JGAurora", + "file_formats": "text/x-gcode", + "preferred_quality_type": "normal", + "machine_extruder_trains": + { + "0": "jgaurora_a3s_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "JGAurora A3S" + }, + "machine_start_gcode": { + "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" + }, + "machine_end_gcode": { + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y200 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, + "machine_width": { + "default_value": 205 + }, + "machine_height": { + "default_value": 205 + }, + "machine_depth": { + "default_value": 205 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_center_is_zero": { + "default_value": false + }, + "gantry_height": { + "value": "10" + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "material_diameter": { + "default_value": 1.75 + }, + "layer_height_0": { + "default_value": 0.12 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "speed_print": { + "default_value": 35 + }, + "support_enable": { + "default_value": true + }, + "retraction_enable": { + "default_value": true + }, + "retraction_amount": { + "default_value": 8 + }, + "retraction_speed": { + "default_value": 45 + } + } +} diff --git a/resources/definitions/jgaurora_a5.def.json b/resources/definitions/jgaurora_a5.def.json index e02fca881b..b9f179d38e 100644 --- a/resources/definitions/jgaurora_a5.def.json +++ b/resources/definitions/jgaurora_a5.def.json @@ -49,12 +49,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 215 - }, - "material_bed_temperature": { - "default_value": 67 - }, "layer_height_0": { "default_value": 0.12 }, @@ -64,21 +58,6 @@ "speed_print": { "default_value": 40 }, - "speed_infill": { - "default_value": 40 - }, - "speed_wall": { - "default_value": 35 - }, - "speed_topbottom": { - "default_value": 35 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 12 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_jgmaker_magic.def.json b/resources/definitions/jgaurora_jgmaker_magic.def.json index 703305151a..8d0349a48c 100644 --- a/resources/definitions/jgaurora_jgmaker_magic.def.json +++ b/resources/definitions/jgaurora_jgmaker_magic.def.json @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 200 - }, - "material_bed_temperature": { - "default_value": 60 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 60 - }, - "speed_wall": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 45 - }, - "speed_travel": { - "default_value": 125 - }, - "speed_layer_0": { - "default_value": 30 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/jgaurora_z_603s.def.json b/resources/definitions/jgaurora_z_603s.def.json index cf92f2fc71..8dbf5a82bb 100644 --- a/resources/definitions/jgaurora_z_603s.def.json +++ b/resources/definitions/jgaurora_z_603s.def.json @@ -21,8 +21,8 @@ "default_value": "; -- START GCODE --\nG21 ;set units to millimetres\nG90 ;set to absolute positioning\nM106 S0 ;set fan speed to zero (turned off)\nG28 ;home all axis\nM420 S1 ;turn on mesh bed levelling if enabled in firmware\nG92 E0 ;zero the extruded length\nG1 Z1 F1000 ;move up slightly\nG1 X60.0 Z0 E9.0 F1000.0;intro line\nG1 X100.0 E21.5 F1000.0 ;continue line\nG92 E0 ;zero the extruded length again\n; -- end of START GCODE --" }, "machine_end_gcode": { - "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 ;move to the X-axis origin (Home)\nG0 Y280 F600 ;bring the bed to the front for easy print removal\nM84 ;turn off stepper motors\n; -- end of END GCODE --" - }, + "default_value": "; -- END GCODE --\nM104 S0 ;turn off nozzle heater\nM140 S0 ;turn off bed heater\nG91 ;set to relative positioning\nG1 E-10 F300 ;retract the filament slightly\nG90 ;set to absolute positioning\nG28 X0 Y0 F600 ;move to the X/Y-axis origin (Home)\nM84 ;turn off stepper motors\n; -- end of END GCODE --" + }, "machine_width": { "default_value": 280 }, @@ -47,12 +47,6 @@ "material_diameter": { "default_value": 1.75 }, - "material_print_temperature": { - "default_value": 210 - }, - "material_bed_temperature": { - "default_value": 55 - }, "layer_height_0": { "default_value": 0.2 }, @@ -62,21 +56,6 @@ "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 60 - }, - "speed_wall": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 45 - }, - "speed_travel": { - "default_value": 125 - }, - "speed_layer_0": { - "default_value": 20 - }, "support_enable": { "default_value": true }, diff --git a/resources/definitions/julia.def.json b/resources/definitions/julia.def.json index 62e4170c1f..15e5057a55 100644 --- a/resources/definitions/julia.def.json +++ b/resources/definitions/julia.def.json @@ -21,25 +21,14 @@ "machine_end_gcode": { "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" }, - "material_bed_temperature": { "default_value": 100 }, "layer_height": { "default_value": 0.2 }, "support_angle": { "default_value": 30 }, - "infill_overlap": { "default_value": 30 }, "layer_height_0": { "default_value": 0.2 }, "speed_print": { "default_value": 80 }, - "speed_wall_0": { "default_value": 30 }, - "speed_travel": { "default_value": 150 }, - "brim_line_count": { "default_value": 15 }, - "skin_overlap": { "default_value": 30 }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "bottom_thickness": { "default_value": 0.8 }, "retraction_amount": { "default_value": 3 }, - "speed_topbottom": { "default_value": 80 }, - "material_print_temperature": { "default_value": 230 }, "support_pattern": { "default_value": "grid" }, - "speed_infill": { "default_value": 80 }, "infill_sparse_density": { "default_value": 10 }, - "top_thickness": { "default_value": 0.8 }, "machine_extruder_count": { "default_value": 1 }, "retraction_combing": { "default_value": "off" }, "machine_heated_bed": { "default_value": true }, diff --git a/resources/definitions/key3d_tyro.def.json b/resources/definitions/key3d_tyro.def.json new file mode 100644 index 0000000000..0bfc78c115 --- /dev/null +++ b/resources/definitions/key3d_tyro.def.json @@ -0,0 +1,65 @@ +{ + "name": "Tyro", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "DragonJe", + "manufacturer": "Key3D", + "file_formats": "text/x-gcode", + "platform_offset": [0, 0, 0], + "has_materials": true, + "has_variants": false, + "preferred_quality_type": "normal", + "has_machine_quality": true, + "preferred_material": "generic_pla", + "machine_extruder_trains": + { + "0": "key3d_tyro_extruder_0" + } + }, + + "overrides": { + "machine_name": { + "default_value": "Tyro" + }, + "machine_width": { + "default_value": 150 + }, + "machine_height": { + "default_value": 150 + }, + "machine_depth": { + "default_value": 150 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-30, 34], + [-30, -32], + [30, -32], + [30, 34] + ] + }, + "gantry_height": { + "value": "30" + }, + "machine_heated_bed": { + "default_value": false + }, + "machine_heated_build_volume": { + "default_value": false + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + } + } +} diff --git a/resources/definitions/kossel_mini.def.json b/resources/definitions/kossel_mini.def.json index 91f374fb6d..d9c3b3d37f 100644 --- a/resources/definitions/kossel_mini.def.json +++ b/resources/definitions/kossel_mini.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Claudio Sampaio (Patola)", - "manufacturer": "Other", + "manufacturer": "Johann", "file_formats": "text/x-gcode", "platform": "kossel_platform.stl", "platform_offset": [0, -0.25, 0], diff --git a/resources/definitions/kossel_pro.def.json b/resources/definitions/kossel_pro.def.json index e104538b2c..f26c6ed068 100644 --- a/resources/definitions/kossel_pro.def.json +++ b/resources/definitions/kossel_pro.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Chris Petersen", - "manufacturer": "OpenBeam", + "manufacturer": "Johann", "file_formats": "text/x-gcode", "platform": "kossel_pro_build_platform.stl", "platform_offset": [0, -0.25, 0], diff --git a/resources/definitions/kupido.def.json b/resources/definitions/kupido.def.json index a81a40542b..ad0182a5f6 100644 --- a/resources/definitions/kupido.def.json +++ b/resources/definitions/kupido.def.json @@ -18,12 +18,12 @@ "supports_usb_connection": false, "machine_extruder_trains": { - "0": "alya3dp_extruder_0" + "0": "kupido_extruder_0" } }, "overrides": { - "machine_name": { "default_value": "ALYA 3DP" }, + "machine_name": { "default_value": "KUPIDO" }, "machine_heated_bed": { "default_value": true }, "machine_width": { "default_value": 195 }, "machine_height": { "default_value": 190 }, diff --git a/resources/definitions/leapfrog_bolt_pro.def.json b/resources/definitions/leapfrog_bolt_pro.def.json new file mode 100644 index 0000000000..09b9ecded5 --- /dev/null +++ b/resources/definitions/leapfrog_bolt_pro.def.json @@ -0,0 +1,115 @@ +{ + "version": 2, + "name": "Leapfrog Bolt Pro", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Karan and Vincent 20191104", + "manufacturer": "Leapfrog B.V.", + "category": "Other", + "platform": "leapfrog_bolt_pro_platform.stl", + "platform_offset": [0, 0, -14], + "file_formats": "text/x-gcode", + "supports_usb_connection": false, + "supports_network_connection": false, + "has_materials": true, + "has_machine_quality": true, + "has_variants": true, + "preferred_variant_name": "Brass 0.4", + "preferred_material": "leapfrog_epla_natural", + "variants_name": "Hot end", + "exclude_materials": [ + "generic_pla_175", + "generic_abs_175", + "generic_cpe_175", + "generic_hips_175", + "generic_nylon_175", + "generic_pc_175", + "generic_petg_175", + "generic_pva_175", + "generic_tpu_175", + "chromatik_pla", + "dsm_arnitel2045_175", + "dsm_novamid1070_175", + "emotiontech_abs", + "emotiontech_petg", + "emotiontech_pla", + "emotiontech_pva-m", + "emotiontech_pva-oks", + "emotiontech_pva-s", + "emotiontech_tpu98a", + "fabtotum_abs", + "fabtotum_nylon", + "fabtotum_pla", + "fabtotum_tpu", + "fiberlogy_hd_pla", + "filo3d_pla", + "filo3d_pla_green", + "filo3d_pla_red", + "imade3d_petg_175", + "imade3d_pla_175", + "innofill_innoflex60_175", + "octofiber_pla", + "polyflex_pla", + "polymax_pla", + "polyplus_pla", + "polywood_pla", + "tizyx_abs", + "tizyx_pla", + "tizyx_flex", + "tizyx_petg", + "tizyx_pva", + "tizyx_pla_bois", + "verbatim_bvoh_175", + "Vertex_Delta_ABS", + "Vertex_Delta_PET", + "Vertex_Delta_PLA_Glitter", + "Vertex_Delta_PLA_Mat", + "Vertex_Delta_PLA_Satin", + "Vertex_Delta_PLA_Wood", + "Vertex_Delta_PLA", + "Vertex_Delta_TPU", + "zyyx_pro_flex", + "zyyx_pro_pla" + ], + "machine_extruder_trains": + { + "0": "leapfrog_bolt_pro_extruder_right", + "1": "leapfrog_bolt_pro_extruder_left" + } + }, + "overrides": { + "machine_name": {"default_value": "Leapfrog Bolt Pro" }, + "machine_extruder_count": {"default_value": 2}, + "machine_center_is_zero": {"default_value": false}, + "machine_width": {"default_value": 302}, + "machine_height": {"default_value": 205}, + "machine_depth": {"default_value": 322}, + "machine_heated_bed": {"default_value": true}, + "machine_head_with_fans_polygon": {"default_value": [[-60, 110 ], [-60, -45], [60, -45 ], [60, 110]]}, + "machine_max_feedrate_z": {"default_value": 16.7 }, + "machine_max_feedrate_e": {"default_value": 50 }, + "machine_max_acceleration_z": {"default_value": 100 }, + "machine_acceleration": {"default_value": 400 }, + "machine_max_jerk_xy": {"default_value": 20 }, + "machine_max_jerk_z": {"default_value": 0.4 }, + "machine_max_jerk_e": {"default_value": 5 }, + "machine_gcode_flavor": {"default_value": "RepRap (Marlin/Sprinter)"}, + "material_final_print_temperature": {"value": "default_material_print_temperature" }, + "material_initial_print_temperature": {"value": "default_material_print_temperature" }, + "gantry_height": {"value": "20"}, + "retraction_combing": { "default_value": "all" }, + "retraction_amount": {"default_value": 2}, + "adhesion_type": {"default_value": "skirt"}, + "skirt_line_count": {"default_value": 3}, + "machine_use_extruder_offset_to_offset_coords": {"default_value": true}, + "machine_start_gcode": {"default_value": "G90\nG28 X0 Y0 Z0\nG1 Z5 F1000\nG92 E0\nG1 Y-32 F12000\nG1 E15 F1000\nG1 E45 F150\nG4 S5"}, + "machine_end_gcode": {"default_value": "G92 E0\nG1 E-3 F300\nM104 S0 T0\nM104 S0 T1\nM140 S0\nG28 X0 Y0\nM84"}, + "prime_tower_enable": { "resolve": "extruders_enabled_count > 1"}, + "prime_tower_position_x": {"value": "169" }, + "prime_tower_position_y": {"value": "25" }, + "speed_travel": { "value": "200" }, + "build_volume_temperature": {"enabled": false}, + "material_standby_temperature": {"enabled": false } + } +} diff --git a/resources/definitions/makeR_pegasus.def.json b/resources/definitions/makeR_pegasus.def.json index 6b19544612..63f76194a4 100644 --- a/resources/definitions/makeR_pegasus.def.json +++ b/resources/definitions/makeR_pegasus.def.json @@ -32,7 +32,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], diff --git a/resources/definitions/makeR_prusa_tairona_i3.def.json b/resources/definitions/makeR_prusa_tairona_i3.def.json index c7e7f4079d..3c57c0cbc8 100644 --- a/resources/definitions/makeR_prusa_tairona_i3.def.json +++ b/resources/definitions/makeR_prusa_tairona_i3.def.json @@ -32,7 +32,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], diff --git a/resources/definitions/makeblock_mcreate.def.json b/resources/definitions/makeblock_mcreate.def.json new file mode 100644 index 0000000000..7a2d575395 --- /dev/null +++ b/resources/definitions/makeblock_mcreate.def.json @@ -0,0 +1,68 @@ +{ + "version": 2, + "name": "Makeblock mCreate", + "inherits": "fdmprinter", + "metadata": { + "author": "Makeblock", + "manufacturer": "Makeblock", + "visible": true, + "file_formats": "application/gzip;text/x-gcode", + "has_machine_quality": true, + "preferred_quality_type": "normal", + "machine_extruder_trains": { + "0": "makeblock_mcreate_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Makeblock mCreate" + }, + "machine_width": { + "default_value": 225 + }, + "machine_depth": { + "default_value": 225 + }, + "machine_height": { + "default_value": 300 + }, + "machine_heated_bed": { + "default_value": true + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ], + [ + 0, + 0 + ] + ] + }, + "machine_gcode_flavor": { + "default_value": "Marlin" + }, + "gantry_height": { + "value": 15.0 + }, + "machine_extruder_count": { + "default_value": 1 + }, + "machine_start_gcode": { + "default_value": "; Mcreate Start Gcode \nG28 ; Home all axes \nG92 E0 ; Reset Extruder\nG1 X0 Y0 Z15 F3000.0 ; Move to start position \nG1 E10 F400 ;load filament \nG1 E2 F400 ;retarct filament \nG92 E0 ; Reset Extruder \nG1 X0 Y130 Z15 F3000.0 \nG12 ; clean nozzle \nG1 X0 Y0 Z0.3 F3000.0 ; Move to start position \nG1 E9.0 F400 ;loadsome filament \nG92 E0 ; Reset Extruder \n; End of start GCode" + }, + "machine_end_gcode": { + "default_value": "; Mcreate end Gcode \nG4 ; Wait command in buffer have finished \nG92 E0 \nG1 E-2 F300; retract filament \nG28 X Z; home x z axis \nG1 F3000 Y220;Move Heat Bed to the front for easy print removal \nM104 S0; Turn off the nozzle heat \nM140 S0; Turn off the bed heat \nM107 ; Turn off the Fan \nM84 ; Disable stepper motors \n; End of GCode" + } + } +} diff --git a/resources/definitions/makeit_pro_l.def.json b/resources/definitions/makeit_pro_l.def.json index 92f98241da..d601a5c309 100644 --- a/resources/definitions/makeit_pro_l.def.json +++ b/resources/definitions/makeit_pro_l.def.json @@ -4,8 +4,8 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "NA", - "manufacturer": "NA", + "author": "unknown", + "manufacturer": "MAKEiT 3D", "file_formats": "text/x-gcode", "has_materials": false, "machine_extruder_trains": @@ -77,27 +77,12 @@ "retraction_amount": { "default_value": 6 }, - "retraction_min_travel": { - "default_value": 1.5 - }, - "speed_travel": { - "default_value": 150 - }, "speed_print": { "default_value": 60 }, "wall_thickness": { "default_value": 1.2 }, - "bottom_thickness": { - "default_value": 0.2 - }, - "speed_layer_0": { - "default_value": 20 - }, - "speed_print_layer_0": { - "default_value": 20 - }, "cool_min_layer_time_fan_speed_max": { "default_value": 5 }, diff --git a/resources/definitions/makeit_pro_m.def.json b/resources/definitions/makeit_pro_m.def.json index 1b3ae8098c..267646b647 100644 --- a/resources/definitions/makeit_pro_m.def.json +++ b/resources/definitions/makeit_pro_m.def.json @@ -4,8 +4,8 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "author": "NA", - "manufacturer": "NA", + "author": "unknown", + "manufacturer": "MAKEiT 3D", "file_formats": "text/x-gcode", "has_materials": false, "machine_extruder_trains": @@ -77,27 +77,12 @@ "retraction_amount": { "default_value": 6 }, - "retraction_min_travel": { - "default_value": 1.5 - }, - "speed_travel": { - "default_value": 150 - }, "speed_print": { "default_value": 60 }, "wall_thickness": { "default_value": 1.2 }, - "bottom_thickness": { - "default_value": 0.2 - }, - "speed_layer_0": { - "default_value": 20 - }, - "speed_print_layer_0": { - "default_value": 20 - }, "cool_min_layer_time_fan_speed_max": { "default_value": 5 }, diff --git a/resources/definitions/maker_starter.def.json b/resources/definitions/maker_starter.def.json index 560e53ccb9..96dca118af 100644 --- a/resources/definitions/maker_starter.def.json +++ b/resources/definitions/maker_starter.def.json @@ -53,57 +53,15 @@ "layer_height_0": { "default_value": 0.2 }, - "wall_line_count": { - "default_value": 2 - }, - "top_layers": { - "default_value": 4 - }, - "bottom_layers": { - "default_value": 4 - }, "speed_print": { "default_value": 50 }, - "speed_wall": { - "default_value": 30 - }, - "speed_wall_0": { - "default_value": 30 - }, - "speed_wall_x": { - "default_value": 30 - }, - "speed_topbottom": { - "default_value": 50 - }, - "speed_support": { - "default_value": 50 - }, - "speed_travel": { - "default_value": 120 - }, - "speed_layer_0": { - "default_value": 20 - }, - "skirt_brim_speed": { - "default_value": 15 - }, "speed_slowdown_layers": { "default_value": 4 }, "infill_sparse_density": { "default_value": 20 }, - "cool_fan_speed_min": { - "default_value": 50 - }, - "cool_fan_speed_max": { - "default_value": 100 - }, - "cool_fan_full_layer": { - "default_value": 4 - }, "cool_min_layer_time": { "default_value": 5 }, @@ -122,12 +80,6 @@ "support_z_distance": { "default_value": 0.2 }, - "support_top_distance": { - "default_value": 0.2 - }, - "support_bottom_distance": { - "default_value": 0.24 - }, "support_pattern": { "default_value": "ZigZag" }, @@ -140,24 +92,6 @@ "skirt_brim_minimal_length": { "default_value": 100 }, - "raft_base_line_spacing": { - "default_value": 2 - }, - "raft_base_thickness": { - "default_value": 0.3 - }, - "raft_base_line_width": { - "default_value": 2 - }, - "raft_base_speed": { - "default_value": 15 - }, - "raft_interface_thickness": { - "default_value": 0.24 - }, - "raft_interface_line_width": { - "default_value": 0.6 - }, "raft_airgap": { "default_value": 0.2 }, diff --git a/resources/definitions/makerbotreplicator.def.json b/resources/definitions/makerbotreplicator.def.json index 3b02215e74..24b556e1ee 100644 --- a/resources/definitions/makerbotreplicator.def.json +++ b/resources/definitions/makerbotreplicator.def.json @@ -18,9 +18,7 @@ "overrides": { "prime_tower_size": { "default_value": 10.0 }, "infill_sparse_density": { "default_value": 10 }, - "speed_travel": { "default_value": 150 }, "layer_height": { "default_value": 0.15 }, - "material_print_temperature": { "default_value": 220 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/malyan_m180.def.json b/resources/definitions/malyan_m180.def.json index cd3a068134..bb812b6dd6 100644 --- a/resources/definitions/malyan_m180.def.json +++ b/resources/definitions/malyan_m180.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m180", "version": 2, "name": "Malyan M180", "inherits": "fdmprinter", diff --git a/resources/definitions/malyan_m200.def.json b/resources/definitions/malyan_m200.def.json index f2c01b3831..fc8756ff6a 100644 --- a/resources/definitions/malyan_m200.def.json +++ b/resources/definitions/malyan_m200.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m200", "version": 2, "name": "Malyan M200", "inherits": "fdmprinter", @@ -30,8 +29,6 @@ "speed_wall_x": { "value": "speed_print" }, "speed_support": { "value": "speed_wall_0" }, "speed_layer_0": { "value": "round(speed_print / 2.0, 2)" }, - "speed_travel": { "default_value": 50 }, - "speed_travel_layer_0": { "default_value": 40 }, "speed_infill": { "value": "speed_print" }, "speed_topbottom": {"value": "speed_print / 2"}, @@ -80,7 +77,6 @@ "raft_surface_layers": { "default_value": 1 }, "skirt_line_count": { "default_value": 2}, "brim_width" : { "default_value": 5}, - "start_layers_at_same_position": { "default_value": true}, "retraction_combing": { "default_value": "noskin" }, "retraction_amount" : { "default_value": 4.5}, "retraction_speed" : { "default_value": 40}, diff --git a/resources/definitions/mankati_fullscale_xt_plus.def.json b/resources/definitions/mankati_fullscale_xt_plus.def.json index 104be7091b..b6fa040750 100644 --- a/resources/definitions/mankati_fullscale_xt_plus.def.json +++ b/resources/definitions/mankati_fullscale_xt_plus.def.json @@ -41,23 +41,15 @@ "layer_height": { "default_value": 0.2 }, "wall_thickness": { "default_value": 0.8 }, "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { "default_value": 195 }, - "material_bed_temperature": { "default_value": 60 }, "retraction_enable": { "default_value": true }, "retraction_speed": { "default_value": 50 }, "retraction_amount": { "default_value": 0.8 }, "retraction_hop": { "default_value": 0.075 }, "speed_print": { "default_value": 60 }, - "speed_infill": { "default_value": 100 }, - "speed_topbottom": { "default_value": 15 }, - "speed_travel": { "default_value": 150 }, "speed_layer_0": { - "minimum_value": "0.1", - "default_value": 15.0 + "minimum_value": "0.1" }, - "infill_overlap": { "default_value": 10 }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { "default_value": 0 }, "skirt_line_count": { "default_value": 3 }, "skirt_gap": { "default_value": 4 }, "skirt_brim_minimal_length": { "default_value": 200 } diff --git a/resources/definitions/monoprice_select_mini_v1.def.json b/resources/definitions/monoprice_select_mini_v1.def.json index a516d54b18..4fe67fc92e 100644 --- a/resources/definitions/monoprice_select_mini_v1.def.json +++ b/resources/definitions/monoprice_select_mini_v1.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v1", "version": 2, "name": "Monoprice Select Mini V1", "inherits": "malyan_m200", diff --git a/resources/definitions/monoprice_select_mini_v2.def.json b/resources/definitions/monoprice_select_mini_v2.def.json index bed4fb1adb..2364e49383 100644 --- a/resources/definitions/monoprice_select_mini_v2.def.json +++ b/resources/definitions/monoprice_select_mini_v2.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v2", "version": 2, "name": "Monoprice Select Mini V2 (E3D)", "inherits": "malyan_m200", diff --git a/resources/definitions/monoprice_ultimate.def.json b/resources/definitions/monoprice_ultimate.def.json index 48290f0941..445347b54e 100644 --- a/resources/definitions/monoprice_ultimate.def.json +++ b/resources/definitions/monoprice_ultimate.def.json @@ -1,52 +1,48 @@ { - "version": 2, - "name": "Monoprice Ultimate", - "inherits": "wanhao_d6", - "metadata": { - "visible": true, - "author": "Danny Tuppeny", - "manufacturer": "monoprice", - "file_formats": "text/x-gcode", - "icon": "wanhao-icon.png", - "has_materials": true, - "platform": "wanhao_200_200_platform.obj", - "platform_texture": "Wanhaobackplate.png", - "machine_extruder_trains": { - "0": "wanhao_d6_extruder_0" + "version": 2, + "name": "Monoprice Ultimate", + "inherits": "wanhao_d6", + "metadata": { + "visible": true, + "author": "Danny Tuppeny", + "manufacturer": "Monoprice", + "file_formats": "text/x-gcode", + "icon": "wanhao-icon.png", + "has_materials": true, + "platform": "wanhao_200_200_platform.obj", + "platform_texture": "Wanhaobackplate.png", + "machine_extruder_trains": { + "0": "wanhao_d6_extruder_0" + }, + "platform_offset": [0, -28, 0] }, - "platform_offset": [ - 0, - -28, - 0 - ] - }, - "overrides": { - "machine_name": { - "default_value": "Monoprice Ultimate" - }, - "machine_max_acceleration_x": { - "default_value": 3000 - }, - "machine_max_acceleration_y": { - "default_value": 3000 - }, - "machine_max_acceleration_z": { - "default_value": 100 - }, - "machine_max_acceleration_e": { - "default_value": 500 - }, - "machine_acceleration": { - "default_value": 800 - }, - "machine_max_jerk_xy": { - "default_value": 10.0 - }, - "machine_max_jerk_z": { - "default_value": 0.4 - }, - "machine_max_jerk_e": { - "default_value": 1.0 + "overrides": { + "machine_name": { + "default_value": "Monoprice Ultimate" + }, + "machine_max_acceleration_x": { + "default_value": 3000 + }, + "machine_max_acceleration_y": { + "default_value": 3000 + }, + "machine_max_acceleration_z": { + "default_value": 100 + }, + "machine_max_acceleration_e": { + "default_value": 500 + }, + "machine_acceleration": { + "default_value": 800 + }, + "machine_max_jerk_xy": { + "default_value": 10.0 + }, + "machine_max_jerk_z": { + "default_value": 0.4 + }, + "machine_max_jerk_e": { + "default_value": 1.0 + } } - } } diff --git a/resources/definitions/nwa3d_a31.def.json b/resources/definitions/nwa3d_a31.def.json new file mode 100644 index 0000000000..1cfd02fe7f --- /dev/null +++ b/resources/definitions/nwa3d_a31.def.json @@ -0,0 +1,64 @@ +{ + "name": "NWA3D A31", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "DragonJe", + "manufacturer": "NWA 3D LLC", + "file_formats": "text/x-gcode", + "platform_offset": [0, 0, 0], + "has_materials": true, + "has_variants": true, + "variants_name": "Nozzle Size", + "preferred_variant_name": "Standard 0.4mm", + "preferred_quality_type": "normal", + "has_machine_quality": true, + "preferred_material": "generic_pla", + "machine_extruder_trains": + { + "0": "nwa3d_a31_extruder_0" + } + }, + + "overrides": { + "machine_name": { + "default_value": "NWA3D A31" + }, + "machine_width": { + "default_value": 300 + }, + "machine_height": { + "default_value": 400 + }, + "machine_depth": { + "default_value": 300 + }, + "machine_head_with_fans_polygon": { + "default_value": [ + [-30, 34], + [-30, -32], + [30, -32], + [30, 34] + ] + }, + "gantry_height": { + "value": "30" + }, + "machine_heated_bed": { + "default_value": true + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "G28 ; Home\nG1 Z15.0 F6000 ; Move Z axis up 15mm\n ; Prime the extruder\nG92 E0\nG1 F200 E3\nG92 E0" + }, + "machine_end_gcode": { + "default_value": "M104 S0\nM140 S0\n ; Retract the filament\nG92 E1\nG1 E-1 F300\nG28 X0 Y0\nM84" + } + } +} diff --git a/resources/definitions/nwa3d_a5.def.json b/resources/definitions/nwa3d_a5.def.json index 2829b06927..1631860d47 100644 --- a/resources/definitions/nwa3d_a5.def.json +++ b/resources/definitions/nwa3d_a5.def.json @@ -10,8 +10,6 @@ "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", @@ -34,7 +32,7 @@ "machine_depth": { "default_value": 150 }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-30, 34], [-30, -32], diff --git a/resources/definitions/ord.def.json b/resources/definitions/ord.def.json index de410b0d58..4a550602f2 100644 --- a/resources/definitions/ord.def.json +++ b/resources/definitions/ord.def.json @@ -19,12 +19,9 @@ }, "overrides": { - "material_bed_temperature": { "default_value": 60 }, "prime_tower_size": { "default_value": 7.0710678118654755 }, "infill_sparse_density": { "default_value": 15 }, - "speed_travel": { "default_value": 150 }, "layer_height": { "default_value": 0.3 }, - "material_print_temperature": { "default_value": 240 }, "machine_extruder_count": { "default_value": 5 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/peopoly_moai.def.json b/resources/definitions/peopoly_moai.def.json index 177a6a801e..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 }, @@ -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 b8879e825c..bf52363800 100644 --- a/resources/definitions/printrbot_play.def.json +++ b/resources/definitions/printrbot_play.def.json @@ -29,7 +29,6 @@ "machine_head_with_fans_polygon": { "default_value": [[-32,999],[37,999],[37,-32],[-32,-32]] }, "gantry_height": { "value": "55" }, "speed_print": { "default_value": 50 }, - "speed_travel": { "default_value": 55 }, "machine_max_feedrate_x": {"default_value": 125}, "machine_max_feedrate_y": {"default_value": 125}, "machine_max_feedrate_z": { "default_value": 5 }, diff --git a/resources/definitions/printrbot_simple.def.json b/resources/definitions/printrbot_simple.def.json index 4d1f368b6d..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", diff --git a/resources/definitions/printrbot_simple_extended.def.json b/resources/definitions/printrbot_simple_extended.def.json index c4cab54386..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", diff --git a/resources/definitions/prusa_i3.def.json b/resources/definitions/prusa_i3.def.json index dd6c87c046..267a7ba4e6 100644 --- a/resources/definitions/prusa_i3.def.json +++ b/resources/definitions/prusa_i3.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Quillford", - "manufacturer": "Prusajr", + "manufacturer": "Prusa3D", "file_formats": "text/x-gcode", "platform": "prusai3_platform.stl", "machine_extruder_trains": @@ -31,14 +31,6 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { - "default_value": [ - [-75, -18], - [-75, 35], - [18, 35], - [18, -18] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], diff --git a/resources/definitions/prusa_i3_mk2.def.json b/resources/definitions/prusa_i3_mk2.def.json index 29407b0afd..5ae541049d 100644 --- a/resources/definitions/prusa_i3_mk2.def.json +++ b/resources/definitions/prusa_i3_mk2.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Apsu, Nounours2099", - "manufacturer": "Prusa Research", + "manufacturer": "Prusa3D", "file_formats": "text/x-gcode", "platform": "prusai3_platform.stl", "has_materials": true, @@ -22,13 +22,10 @@ "machine_height": { "default_value": 200 }, "machine_depth": { "default_value": 210 }, "machine_center_is_zero": { "default_value": false }, - "material_bed_temperature": { "default_value": 55 }, "layer_height": { "default_value": 0.1 }, "layer_height_0": { "default_value": 0.15 }, "retraction_amount": { "default_value": 0.8 }, "retraction_speed": { "default_value": 35 }, - "retraction_retract_speed": { "default_value": 35 }, - "retraction_prime_speed": { "default_value": 35 }, "adhesion_type": { "default_value": "skirt" }, "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, "gantry_height": { "value": "28" }, diff --git a/resources/definitions/prusa_i3_mk3.def.json b/resources/definitions/prusa_i3_mk3.def.json new file mode 100644 index 0000000000..eddc1d88df --- /dev/null +++ b/resources/definitions/prusa_i3_mk3.def.json @@ -0,0 +1,50 @@ +{ + "version": 2, + "name": "Prusa i3 Mk3/Mk3s", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Prusa Research", + "manufacturer": "Prusa3D", + "file_formats": "text/x-gcode", + "icon": "icon_ultimaker2", + "platform": "Original_Prusa_i3_MK3S_MK3_platform.stl", + "has_materials": true, + "machine_extruder_trains": + { + "0": "prusa_i3_mk3_extruder_0" + } + }, + + "overrides": { + "machine_name": { "default_value": "Prusa i3 Mk3/Mk3s" }, + "machine_heated_bed": { "default_value": true }, + "machine_width": { "default_value": 250 }, + "machine_height": { "default_value": 210 }, + "machine_depth": { "default_value": 210 }, + "machine_center_is_zero": { "default_value": false }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "layer_height": { "default_value": 0.15 }, + "layer_height_0": { "default_value": 0.2 }, + "retraction_amount": { "default_value": 0.8 }, + "retraction_speed": { "default_value": 35 }, + "adhesion_type": { "default_value": "skirt" }, + "machine_head_with_fans_polygon": { "default_value": [[-31,31],[34,31],[34,-40],[-31,-40]] }, + "gantry_height": { "value": 28 }, + "machine_max_feedrate_z": { "default_value": 12 }, + "machine_max_feedrate_e": { "default_value": 120 }, + "machine_max_acceleration_z": { "default_value": 500 }, + "machine_acceleration": { "default_value": 1000 }, + "machine_max_jerk_xy": { "default_value": 10 }, + "machine_max_jerk_z": { "default_value": 0.2 }, + "machine_max_jerk_e": { "default_value": 2.5 }, + "machine_gcode_flavor": { "default_value": "RepRap (Marlin/Sprinter)" }, + "machine_start_gcode": { + "default_value": "G21 ; set units to millimeters\nG90 ; use absolute positioning\nM82 ; absolute extrusion mode\nM104 S{material_print_temperature_layer_0} ; set extruder temp\nM140 S{material_bed_temperature_layer_0} ; set bed temp\nM190 S{material_bed_temperature_layer_0} ; wait for bed temp\nM109 S{material_print_temperature_layer_0} ; wait for extruder temp\nG28 W ; home all without mesh bed level\nG80 ; mesh bed leveling\nG92 E0.0 ; reset extruder distance position\nG1 Y-3.0 F1000.0 ; go outside print area\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E21.5 F1000.0 ; intro line\nG92 E0.0 ; reset extruder distance position" + }, + "machine_end_gcode": { + "default_value": "M104 S0 ; turn off extruder\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nG1 X0 Y210; home X axis and push Y forward\nM84 ; disable motors" + } + } +} diff --git a/resources/definitions/prusa_i3_xl.def.json b/resources/definitions/prusa_i3_xl.def.json index aa5fcf6df9..dae1bdce4f 100644 --- a/resources/definitions/prusa_i3_xl.def.json +++ b/resources/definitions/prusa_i3_xl.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "guigashm", - "manufacturer": "Prusajr", + "manufacturer": "Prusa3D", "file_formats": "text/x-gcode", "platform": "prusai3_xl_platform.stl", "machine_extruder_trains": @@ -31,7 +31,7 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-75, -18], [-75, 35], diff --git a/resources/definitions/punchtec_connect_xl.def.json b/resources/definitions/punchtec_connect_xl.def.json index 1efdd226fd..9bae80b0ac 100644 --- a/resources/definitions/punchtec_connect_xl.def.json +++ b/resources/definitions/punchtec_connect_xl.def.json @@ -16,16 +16,10 @@ }, "overrides": { - "machine_head_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] }, - "speed_travel": { "default_value": 150 }, + "machine_head_with_fans_polygon": { "default_value": [[ 0, 0], [ 0, 0], [ 0, 0], [ 0, 0]] }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "speed_wall_x": { "default_value": 40 }, - "speed_wall_0": { "default_value": 40 }, - "speed_topbottom": { "default_value": 40 }, "layer_height": { "default_value": 0.2 }, - "material_print_temperature": { "default_value": 195 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 40 }, "machine_extruder_count": { "default_value": 2 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/raise3D_N2_dual.def.json b/resources/definitions/raise3D_N2_dual.def.json index 1994cc2bcb..530ad79d19 100644 --- a/resources/definitions/raise3D_N2_dual.def.json +++ b/resources/definitions/raise3D_N2_dual.def.json @@ -76,10 +76,10 @@ "default_value": 2 }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/raise3D_N2_plus_dual.def.json b/resources/definitions/raise3D_N2_plus_dual.def.json index 23ad1fbd09..ffc4afec16 100644 --- a/resources/definitions/raise3D_N2_plus_dual.def.json +++ b/resources/definitions/raise3D_N2_plus_dual.def.json @@ -76,10 +76,10 @@ "default_value": 2 }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/raise3D_N2_plus_single.def.json b/resources/definitions/raise3D_N2_plus_single.def.json index f8a1a7e0fb..ccb169efb1 100644 --- a/resources/definitions/raise3D_N2_plus_single.def.json +++ b/resources/definitions/raise3D_N2_plus_single.def.json @@ -72,10 +72,10 @@ "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/raise3D_N2_single.def.json b/resources/definitions/raise3D_N2_single.def.json index c69823466b..f0915d1a31 100644 --- a/resources/definitions/raise3D_N2_single.def.json +++ b/resources/definitions/raise3D_N2_single.def.json @@ -72,10 +72,10 @@ "default_value": "M107\nM1002\nM104 S0 T1\nM104 S0 T0\nM140 S0\nM117 Print Complete.\nG28 X0 Y0\nG91\nG1 Z10\nG90\nM84" }, "prime_tower_position_x": { - "default_value": 195 + "value": "195" }, "prime_tower_position_y": { - "default_value": 149 + "value": "149" } } } diff --git a/resources/definitions/rigid3d.def.json b/resources/definitions/rigid3d.def.json index 43ffd6924a..ba90894f7d 100644 --- a/resources/definitions/rigid3d.def.json +++ b/resources/definitions/rigid3d.def.json @@ -21,27 +21,17 @@ "machine_end_gcode": { "default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn ectruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n" }, - "machine_head_polygon": { "default_value": [[ 22, 67], [ 22, 51], [ 36, 51], [ 36, 67]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 22, 67], [ 22, 51], [ 36, 51], [ 36, 67]] }, "skirt_gap": { "default_value": 5.0 }, "cool_min_layer_time": { "default_value": 10 }, "prime_tower_size": { "default_value": 7.745966692414834 }, - "speed_wall_x": { "default_value": 40 }, - "speed_travel": { "default_value": 100 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, "support_angle": { "default_value": 45 }, - "material_bed_temperature": { "default_value": 100 }, - "top_thickness": { "default_value": 0.75 }, - "material_print_temperature": { "default_value": 235 }, "retraction_speed": { "default_value": 60.0 }, "wall_thickness": { "default_value": 0.8 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, "retraction_amount": { "default_value": 1 }, - "speed_topbottom": { "default_value": 30 }, "layer_height": { "default_value": 0.25 }, "speed_print": { "default_value": 40 }, - "speed_infill": { "default_value": 40 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_3rdgen.def.json b/resources/definitions/rigid3d_3rdgen.def.json index bb3414b75d..6e1a93fb40 100644 --- a/resources/definitions/rigid3d_3rdgen.def.json +++ b/resources/definitions/rigid3d_3rdgen.def.json @@ -21,24 +21,16 @@ "machine_end_gcode": { "default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn extruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n" }, - "machine_head_polygon": { "default_value": [[ 18, 0], [ 18, 65], [ 32, 65], [ 32, 0]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 18, 0], [ 18, 65], [ 32, 65], [ 32, 0]] }, "cool_min_layer_time": { "default_value": 10 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "skirt_gap": { "default_value": 5.0 }, - "speed_travel": { "default_value": 120 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, "support_angle": { "default_value": 45 }, - "material_bed_temperature": { "default_value": 100 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 30 }, "retraction_speed": { "default_value": 60.0 }, "wall_thickness": { "default_value": 0.8 }, - "material_print_temperature": { "default_value": 235 }, "retraction_amount": { "default_value": 1 }, - "speed_topbottom": { "default_value": 25 }, "layer_height": { "default_value": 0.25 }, - "top_thickness": { "default_value": 0.75 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_hobby.def.json b/resources/definitions/rigid3d_hobby.def.json index db48195fe0..d89c1aeaff 100644 --- a/resources/definitions/rigid3d_hobby.def.json +++ b/resources/definitions/rigid3d_hobby.def.json @@ -15,27 +15,19 @@ }, "overrides": { - "machine_head_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 16, 30], [ 16, 45], [ 16, 45], [ 16, 30]] }, "prime_tower_size": { "default_value": 8.660254037844387 }, - "speed_travel": { "default_value": 40 }, "skirt_gap": { "default_value": 5.0 }, "cool_min_layer_time": { "default_value": 15 }, "support_pattern": { "default_value": "grid" }, "layer_height_0": { "default_value": 0.25 }, - "speed_wall_x": { "default_value": 30 }, "skirt_line_count": { "default_value": 2 }, "support_angle": { "default_value": 45 }, - "speed_topbottom": { "default_value": 20 }, - "material_print_temperature": { "default_value": 205 }, "retraction_speed": { "default_value": 80 }, "wall_thickness": { "default_value": 0.8 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 20 }, "retraction_amount": { "default_value": 2 }, - "speed_layer_0": { "default_value": 15 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, - "speed_infill": { "default_value": 30 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": false }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/definitions/rigid3d_mucit.def.json b/resources/definitions/rigid3d_mucit.def.json index 42cd99a3bd..75853fab8b 100644 --- a/resources/definitions/rigid3d_mucit.def.json +++ b/resources/definitions/rigid3d_mucit.def.json @@ -76,14 +76,9 @@ "default_value": true }, "cool_fan_speed": { - "default_value": 100, "value": "100" }, - "cool_fan_speed_min": { - "default_value": 0 - }, "cool_fan_full_at_height": { - "default_value": 0.5, "value": "0.5" }, "support_z_distance": { diff --git a/resources/definitions/rigid3d_zero.def.json b/resources/definitions/rigid3d_zero.def.json index f55f913a56..54bd2c3dca 100644 --- a/resources/definitions/rigid3d_zero.def.json +++ b/resources/definitions/rigid3d_zero.def.json @@ -21,24 +21,14 @@ "machine_end_gcode": { "default_value": " ; -- END GCODE --\n G1 X0 Y230 ; Get extruder out of way.\n M107 ; Turn off fan\n G91 ; Relative positioning\n G0 Z20 ; Lift extruder up\n T0\n G1 E-1 ; Reduce filament pressure\n M104 T0 S0 ; Turn ectruder heater off\n G90 ; Absolute positioning\n G92 E0 ; Reset extruder position\n M140 S0 ; Disable heated bed\n M84 ; Turn steppers off\n ; -- end of END GCODE --\n" }, - "machine_head_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] }, + "machine_head_with_fans_polygon": { "default_value": [[ 40, 15], [ 40, 60], [ 30, 60], [ 30, 15]] }, "support_pattern": { "default_value": "grid" }, "cool_min_layer_time": { "default_value": 10 }, - "speed_travel": { "default_value": 80 }, "support_angle": { "default_value": 45 }, - "retraction_min_travel": { "default_value": 2 }, - "speed_wall_0": { "default_value": 20 }, - "speed_layer_0": { "default_value": 15 }, - "speed_infill": { "default_value": 30 }, - "speed_topbottom": { "default_value": 30 }, "prime_tower_size": { "default_value": 7.745966692414834 }, "skirt_line_count": { "default_value": 2 }, - "speed_wall_x": { "default_value": 30 }, - "bottom_thickness": { "default_value": 0.75 }, "layer_height_0": { "default_value": 0.25 }, - "top_thickness": { "default_value": 0.75 }, "wall_thickness": { "default_value": 0.8 }, - "material_print_temperature": { "default_value": 195 }, "retraction_amount": { "default_value": 1.5 }, "skirt_gap": { "default_value": 5.0 }, "layer_height": { "default_value": 0.25 }, diff --git a/resources/definitions/rigid3d_zero2.def.json b/resources/definitions/rigid3d_zero2.def.json index f24c869636..cc922769f7 100644 --- a/resources/definitions/rigid3d_zero2.def.json +++ b/resources/definitions/rigid3d_zero2.def.json @@ -44,9 +44,6 @@ "material_print_temperature": { "value": 235 }, - "material_bed_temperature": { - "default_value": 100 - }, "speed_print": { "default_value": 40 }, @@ -55,7 +52,7 @@ }, "speed_travel": { "value": 100 - }, + }, "support_enable": { "default_value": false }, @@ -90,14 +87,9 @@ "default_value": false }, "cool_fan_speed": { - "default_value": 50, "value": 50 }, - "cool_fan_speed_min": { - "default_value": 0 - }, "cool_fan_full_at_height": { - "default_value": 1.0, "value": 1.0 }, "support_z_distance": { diff --git a/resources/definitions/rigidbot.def.json b/resources/definitions/rigidbot.def.json index c04cd7c5e6..d6fb4f1651 100644 --- a/resources/definitions/rigidbot.def.json +++ b/resources/definitions/rigidbot.def.json @@ -49,37 +49,15 @@ "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { - "default_value": 195 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 100 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 15, "minimum_value": "0.1" }, - "infill_overlap": { - "default_value": 10 - }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { - "default_value": 0 - }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/rigidbot_big.def.json b/resources/definitions/rigidbot_big.def.json index c97c6df9f3..9568417acc 100644 --- a/resources/definitions/rigidbot_big.def.json +++ b/resources/definitions/rigidbot_big.def.json @@ -49,37 +49,15 @@ "top_bottom_thickness": { "default_value": 0.3 }, - "material_print_temperature": { - "default_value": 195 - }, - "material_bed_temperature": { - "default_value": 60 - }, "speed_print": { "default_value": 60 }, - "speed_infill": { - "default_value": 100 - }, - "speed_topbottom": { - "default_value": 15 - }, - "speed_travel": { - "default_value": 150 - }, "speed_layer_0": { - "default_value": 15, "minimum_value": "0.1" }, - "infill_overlap": { - "default_value": 10 - }, "cool_fan_enabled": { "default_value": false }, - "cool_fan_speed": { - "default_value": 0 - }, "skirt_line_count": { "default_value": 3 }, diff --git a/resources/definitions/robo_3d_r1.def.json b/resources/definitions/robo_3d_r1.def.json index 8d7698e198..36b8addd27 100644 --- a/resources/definitions/robo_3d_r1.def.json +++ b/resources/definitions/robo_3d_r1.def.json @@ -22,28 +22,16 @@ "default_value": " M104 S0 ;extruder heater off\n M140 S0 ;heated bed heater off (if you have it)\n G91 ;relative positioning\n G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\n G1 Z+0.5 E-5 X-20 Y-20 F{speed_travel} ;move Z up a bit and retract filament even more\n G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\n M84 ;steppers off\n G90 ;absolute positioning\n" }, "cool_min_layer_time": { "default_value": 7 }, - "speed_topbottom": { "default_value": 40 }, "retraction_speed": { "default_value": 50 }, - "layer_0_z_overlap": { "default_value": 0.2 }, "cool_min_speed": { "default_value": 19 }, - "material_bed_temperature": { "default_value": 60 }, "support_angle": { "default_value": 50 }, - "speed_layer_0": { "default_value": 30 }, - "line_width": { "default_value": 0.4 }, - "speed_infill": { "default_value": 60 }, "prime_tower_size": { "default_value": 8.660254037844387 }, "support_enable": { "default_value": true }, - "cool_fan_full_at_height": { "default_value": 0.1 }, - "bottom_thickness": { "default_value": 1.2 }, "raft_airgap": { "default_value": 0.2 }, "layer_height_0": { "default_value": 0.15 }, - "top_thickness": { "default_value": 1.2 }, - "speed_wall_0": { "default_value": 40 }, - "retraction_min_travel": { "default_value": 5 }, "material_flow": { "default_value": 100 }, "infill_sparse_density": { "default_value": 10 }, "wall_thickness": { "default_value": 1.2 }, - "material_print_temperature": { "default_value": 190 }, "retraction_amount": { "default_value": 3 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 40 }, diff --git a/resources/definitions/seemecnc_artemis.def.json b/resources/definitions/seemecnc_artemis.def.json index ec92f528d7..88c1d84b3d 100644 --- a/resources/definitions/seemecnc_artemis.def.json +++ b/resources/definitions/seemecnc_artemis.def.json @@ -27,13 +27,11 @@ "machine_name": { "default_value": "Artemis" }, "machine_shape": { "default_value": "elliptic" }, "machine_width": { "default_value": 290 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_amount": { "default_value": 3.2 }, "retraction_combing": { "default_value": "off" }, "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_prime_speed": { "default_value": 45 }, - "retraction_retract_speed": { "default_value": 45 }, "retraction_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G28\nG1 Z15.0 F10000\nG92 E0" diff --git a/resources/definitions/seemecnc_v32.def.json b/resources/definitions/seemecnc_v32.def.json index d4316c25d9..0f49410116 100644 --- a/resources/definitions/seemecnc_v32.def.json +++ b/resources/definitions/seemecnc_v32.def.json @@ -27,13 +27,11 @@ "machine_name": { "default_value": "Rostock Max V3.2" }, "machine_shape": { "default_value": "elliptic" }, "machine_width": { "default_value": 265 }, - "relative_extrusion": { "default_value": false }, + "relative_extrusion": { "value": "False" }, "retraction_amount": { "default_value": 3.2 }, "retraction_combing": { "default_value": "off" }, "retraction_hop_enabled": { "default_value": true }, "retraction_hop_only_when_collides": { "default_value": false }, - "retraction_prime_speed": { "default_value": 45 }, - "retraction_retract_speed": { "default_value": 45 }, "retraction_speed": { "default_value": 45 }, "machine_start_gcode": { "default_value": "G28\nG1 Z15.0 F10000\nG92 E0" diff --git a/resources/definitions/skriware_2.def.json b/resources/definitions/skriware_2.def.json new file mode 100644 index 0000000000..584cdd1708 --- /dev/null +++ b/resources/definitions/skriware_2.def.json @@ -0,0 +1,598 @@ +{ + "name": "Skriware 2", + "version": 2, + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "author": "Skriware", + "manufacturer": "Skriware", + "category": "Other", + "file_formats": "text/x-gcode", + "platform_offset": [ + 0, + 0, + 0 + ], + "supports_usb_connection": false, + "platform": "skriware_2_platform.stl", + "machine_extruder_trains": { + "0": "skriware_2_extruder_0", + "1": "skriware_2_extruder_1" + } + }, + "overrides": { + "jerk_print_layer_0": { + "value": "5" + }, + "jerk_prime_tower": { + "value": "5" + }, + "expand_skins_expand_distance": { + "value": "1.2" + }, + "jerk_support_interface": { + "value": "5" + }, + "jerk_travel_layer_0": { + "value": "5.0" + }, + "wipe_retraction_prime_speed": { + "value": "30" + }, + "material_standby_temperature": { + "default_value": 195 + }, + "acceleration_support_bottom": { + "value": "250" + }, + "raft_base_line_width": { + "value": "0.5" + }, + "raft_speed": { + "value": "30.0" + }, + "jerk_topbottom": { + "value": "5" + }, + "ironing_inset": { + "value": "0.2" + }, + "acceleration_wall": { + "value": "250" + }, + "cross_infill_pocket_size": { + "value": "5.333333333333333" + }, + "jerk_support_roof": { + "value": "5" + }, + "acceleration_print": { + "default_value": 250 + }, + "meshfix_maximum_travel_resolution": { + "value": "0.8" + }, + "support_top_distance": { + "value": "0.22" + }, + "acceleration_enabled": { + "default_value": true + }, + "optimize_wall_printing_order": { + "default_value": true + }, + "jerk_layer_0": { + "value": "5" + }, + "infill_line_distance": { + "value": "5.333333333333333" + }, + "acceleration_ironing": { + "value": "250" + }, + "material_print_temperature_layer_0": { + "value": "195" + }, + "bridge_skin_speed_2": { + "value": "15" + }, + "acceleration_travel": { + "value": "250" + }, + "switch_extruder_retraction_speed": { + "value": "30" + }, + "jerk_print": { + "default_value": 5 + }, + "material_guid": { + "default_value": "0ff92885-617b-4144-a03c-9989872454bc" + }, + "raft_interface_acceleration": { + "value": "250" + }, + "acceleration_support_interface": { + "value": "250" + }, + "cool_fan_full_layer": { + "value": "1" + }, + "skirt_brim_minimal_length": { + "default_value": 50 + }, + "material_bed_temperature": { + "value": "50" + }, + "speed_slowdown_layers": { + "default_value": 1 + }, + "speed_travel": { + "value": "150" + }, + "skin_overlap": { + "value": "15" + }, + "acceleration_infill": { + "value": "250" + }, + "support_roof_material_flow": { + "value": "99" + }, + "raft_base_jerk": { + "value": "5" + }, + "retraction_retract_speed": { + "value": "30" + }, + "infill_wipe_dist": { + "value": "0.1" + }, + "jerk_wall_x": { + "value": "5" + }, + "layer_height": { + "default_value": 0.2 + }, + "bottom_skin_expand_distance": { + "value": "1.2000000000000002" + }, + "machine_start_gcode": { + "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nG28 X0 Y0;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nM420 S1 Z0.9 ;enable bed levelling\nG1 Z10 F250 ;move the platform down 10mm\nM107 ;fan off\nM42 P11 S255 ;turn on front fan\nM140 S{material_bed_temperature}\nM104 T0 S{material_print_temperature}\nM104 T1 S{material_print_temperature}\nG1 F2500 Y260\nM190 S{material_bed_temperature}\nM109 T0 S{material_print_temperature}\nM109 T1 S{material_print_temperature}\nM60 ;enable E-FADE Algorithm\nM62 A ;filament sensor off\nG92 E0 ;zero the extruded length\nT1\nG92 E0;zero the extruded length\nG1 F300 Z0.3\nG1 F1200 X20\nG1 F1200 X180 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 F300 Z1.5\nG92 E0 ;zero the extruded length again\nT0\nG92 E0 ;zero the extruded length\nG1 F1200 Y258\nG1 F300 Z0.3\nG1 F1200 X40 E21 ;extrude 21 mm of feed stock\nG1 F1200 E15 ;retracting 6 mm\nG1 F2000 E21\nG1 F2000 E15\nG1 Z1.5\nM61 A\nM63 A ;filament sensor on\nG92 E0 ;zero the extruded length again\nM58 ;end of Start G-Code and signal retract management" + }, + "travel_retract_before_outer_wall": { + "default_value": true + }, + "xy_offset_layer_0": { + "value": "-0.16" + }, + "adhesion_type": { + "default_value": "raft" + }, + "min_skin_width_for_expansion": { + "value": "0.671279704941824" + }, + "support_bottom_material_flow": { + "value": "99" + }, + "prime_tower_position_x": { + "value": "1" + }, + "machine_depth": { + "default_value": 260 + }, + "retraction_speed": { + "default_value": 30 + }, + "support_skip_some_zags": { + "default_value": true + }, + "remove_empty_first_layers": { + "default_value": false + }, + "z_seam_x": { + "value": "115" + }, + "support_xy_distance_overhang": { + "value": "0.5" + }, + "support_tree_wall_thickness": { + "value": "0.4" + }, + "acceleration_print_layer_0": { + "value": "250" + }, + "support_xy_distance": { + "default_value": 0.8 + }, + "support_roof_line_distance": { + "value": "0.5714285714285714" + }, + "jerk_enabled": { + "default_value": true + }, + "min_infill_area": { + "default_value": 1 + }, + "travel_avoid_supports": { + "default_value": true + }, + "bottom_layers": { + "value": "3" + }, + "multiple_mesh_overlap": { + "default_value": 0 + }, + "retraction_hop_enabled": { + "default_value": true + }, + "acceleration_topbottom": { + "value": "250" + }, + "jerk_wall": { + "value": "5" + }, + "jerk_wall_0": { + "value": "5" + }, + "skin_overlap_mm": { + "value": "0.06" + }, + "retraction_min_travel": { + "value": "1" + }, + "support_interface_material_flow": { + "value": "99" + }, + "material_diameter": { + "default_value": 1.75 + }, + "speed_roofing": { + "value": "30.0" + }, + "skin_outline_count": { + "default_value": 0 + }, + "skin_no_small_gaps_heuristic": { + "default_value": true + }, + "top_bottom_pattern_0": { + "value": "'zigzag'" + }, + "top_skin_expand_distance": { + "value": "1.2000000000000002" + }, + "acceleration_travel_layer_0": { + "value": "250.0" + }, + "prime_tower_min_volume": { + "default_value": 4 + }, + "switch_extruder_retraction_speeds": { + "default_value": 30 + }, + "skin_preshrink": { + "value": "1.2000000000000002" + }, + "material_bed_temperature_layer_0": { + "value": "50" + }, + "support_tree_collision_resolution": { + "value": "0.2" + }, + "machine_height": { + "default_value": 210 + }, + "raft_acceleration": { + "value": "250" + }, + "fill_outline_gaps": { + "default_value": true + }, + "wall_x_material_flow": { + "value": "99" + }, + "jerk_support_bottom": { + "value": "5" + }, + "machine_end_gcode": { + "default_value": "M59\nG92 E1\nG1 E-1 F300\nM104 T0 S0\nM104 T1 S0\nM140 S0\nG28 X0 Y0\nM84\nM106 S0\nM107" + }, + "infill_sparse_density": { + "default_value": 15 + }, + "meshfix_maximum_deviation": { + "default_value": 0.005 + }, + "wall_0_material_flow": { + "value": "99" + }, + "material_adhesion_tendency": { + "default_value": 0 + }, + "prime_tower_flow": { + "value": "99" + }, + "prime_tower_position_y": { + "value": "1" + }, + "support_material_flow": { + "value": "99" + }, + "retract_at_layer_change": { + "default_value": true + }, + "machine_extruder_count": { + "default_value": 2 + }, + "wall_thickness": { + "default_value": 1.2 + }, + "support_infill_sparse_thickness": { + "value": "0.2" + }, + "raft_surface_acceleration": { + "value": "250" + }, + "roofing_layer_count": { + "value": "1" + }, + "skirt_brim_line_width": { + "value": "0.5" + }, + "jerk_support": { + "value": "5" + }, + "raft_surface_jerk": { + "value": "5" + }, + "speed_equalize_flow_max": { + "default_value": 40 + }, + "raft_surface_speed": { + "value": "30.0" + }, + "jerk_travel": { + "value": "5" + }, + "support_zag_skip_count": { + "value": "8" + }, + "retraction_combing": { + "default_value": "infill" + }, + "raft_interface_line_spacing": { + "value": "0.4" + }, + "layer_height_0": { + "default_value": 0.2 + }, + "extruders_enabled_count": { + "value": "2" + }, + "support_line_distance": { + "value": "1.3333333333333333" + }, + "support_roof_density": { + "value": "70" + }, + "raft_base_line_spacing": { + "value": "0.8" + }, + "acceleration_prime_tower": { + "value": "250" + }, + "skin_material_flow": { + "value": "99" + }, + "support_z_distance": { + "default_value": 0.22 + }, + "bottom_skin_preshrink": { + "value": "1.2000000000000002" + }, + "jerk_skirt_brim": { + "value": "5" + }, + "z_seam_y": { + "value": "180" + }, + "skirt_line_count": { + "default_value": 2 + }, + "raft_margin": { + "default_value": 4 + }, + "infill_material_flow": { + "value": "99" + }, + "wipe_retraction_retract_speed": { + "value": "30" + }, + "z_seam_corner": { + "default_value": "z_seam_corner_weighted" + }, + "support_roof_height": { + "value": "0.4" + }, + "top_layers": { + "value": "4" + }, + "support_infill_rate": { + "value": "30" + }, + "raft_interface_speed": { + "value": "35" + }, + "default_material_print_temperature": { + "default_value": 195 + }, + "acceleration_layer_0": { + "value": "250" + }, + "support_skip_zag_per_mm": { + "default_value": 10 + }, + "material_initial_print_temperature": { + "value": "195" + }, + "raft_interface_jerk": { + "value": "5" + }, + "machine_width": { + "default_value": 210 + }, + "wall_line_count": { + "value": "3" + }, + "retraction_amount": { + "default_value": 3 + }, + "infill_sparse_thickness": { + "value": "0.2" + }, + "support_initial_layer_line_distance": { + "value": "1.3333333333333333" + }, + "jerk_support_infill": { + "value": "5" + }, + "acceleration_roofing": { + "value": "250" + }, + "retraction_extrusion_window": { + "value": "3" + }, + "raft_interface_line_width": { + "value": "0.4" + }, + "acceleration_support_roof": { + "value": "250" + }, + "support_brim_line_count": { + "value": "16" + }, + "layer_0_z_overlap": { + "value": "0.1" + }, + "support_angle": { + "default_value": 60 + }, + "machine_heated_bed": { + "default_value": true + }, + "raft_surface_thickness": { + "value": "0.2" + }, + "cool_min_layer_time": { + "default_value": 10 + }, + "gantry_height": { + "value": "210" + }, + "raft_airgap": { + "default_value": 0.2 + }, + "acceleration_skirt_brim": { + "value": "250" + }, + "skirt_brim_material_flow": { + "value": "99" + }, + "jerk_infill": { + "value": "5" + }, + "roofing_material_flow": { + "value": "99" + }, + "support_use_towers": { + "default_value": false + }, + "ooze_shield_angle": { + "default_value": 50 + }, + "material_flow": { + "default_value": 99 + }, + "speed_travel_layer_0": { + "value": "75.0" + }, + "raft_base_acceleration": { + "value": "250" + }, + "retraction_count_max": { + "default_value": 40 + }, + "ooze_shield_dist": { + "default_value": 4 + }, + "acceleration_support": { + "value": "250" + }, + "max_skin_angle_for_expansion": { + "default_value": 50 + }, + "coasting_enable": { + "default_value": true + }, + "brim_width": { + "default_value": 10 + }, + "acceleration_support_infill": { + "value": "250" + }, + "retraction_prime_speed": { + "value": "30" + }, + "raft_base_speed": { + "value": "35" + }, + "acceleration_wall_0": { + "value": "250" + }, + "xy_offset": { + "default_value": -0.16 + }, + "prime_tower_size": { + "default_value": 1 + }, + "jerk_ironing": { + "value": "5" + }, + "switch_extruder_prime_speed": { + "value": "30" + }, + "raft_jerk": { + "value": "5" + }, + "top_skin_preshrink": { + "value": "1.2000000000000002" + }, + "material_print_temperature": { + "value": "195" + }, + "wall_material_flow": { + "value": "99" + }, + "jerk_roofing": { + "value": "5" + }, + "cool_fan_full_at_height": { + "value": "0" + }, + "acceleration_wall_x": { + "value": "250" + }, + "support_bottom_distance": { + "value": "0.23" + }, + "cool_min_speed": { + "default_value": 15 + }, + "default_material_bed_temperature": { + "default_value": 50 + }, + "raft_interface_thickness": { + "value": "0.2" + } + } +} diff --git a/resources/definitions/stereotech_start.def.json b/resources/definitions/stereotech_start.def.json index 26c4b6a3a2..e85893d811 100644 --- a/resources/definitions/stereotech_start.def.json +++ b/resources/definitions/stereotech_start.def.json @@ -5,12 +5,12 @@ "metadata": { "visible": true, "author": "Stereotech", - "manufacturer": "Other", + "manufacturer": "Stereotech LLC.", "file_formats": "text/x-gcode", "platform": "stereotech_start.stl", "icon": "icon_ultimaker2", - "platform_offset": [0, 0, 0], - "machine_extruder_trains": + "platform_offset": [0, 0, 0], + "machine_extruder_trains": { "0": "stereotech_start_extruder_0" } diff --git a/resources/definitions/strateo3d.def.json b/resources/definitions/strateo3d.def.json index d0ef38fb77..2ee3650404 100644 --- a/resources/definitions/strateo3d.def.json +++ b/resources/definitions/strateo3d.def.json @@ -11,7 +11,6 @@ "file_formats": "text/x-gcode", "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variants": true, "preferred_variant_name": "Standard 0.6", "preferred_material": "emotiontech_pla", @@ -34,7 +33,7 @@ "machine_heated_build_volume": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, "machine_head_with_fans_polygon": { "default_value": [ [ -76, -51.8 ] , [ 25, -51.8 ] , [ 25, 38.2 ] , [ -76, 38.2 ] ] }, - "gantry_height": { "default_value": 40 }, + "gantry_height": { "value": "40" }, "machine_extruder_count": { "default_value": 2 }, "machine_gcode_flavor": { "default_value": "Marlin" }, "machine_start_gcode": { "default_value": "G28 \nG90 G1 X300 Y210 Z15 F6000 \nG92 E0" }, diff --git a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json index b4f91d68d1..e4893cacac 100644 --- a/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json +++ b/resources/definitions/structur3d_discov3ry1_complete_um2plus.def.json @@ -1,6 +1,6 @@ { "version": 2, - "name": "Discov3ry Complete (Ultimaker 2+)", + "name": "Discov3ry Complete", "inherits": "fdmprinter", "metadata": { "author": "Andrew Finkle, CTO", @@ -14,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": [], @@ -57,9 +55,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 10 - }, "speed_support": { "value": "speed_wall_0" }, diff --git a/resources/definitions/tam.def.json b/resources/definitions/tam.def.json index 2a23688eb8..211049ca3d 100644 --- a/resources/definitions/tam.def.json +++ b/resources/definitions/tam.def.json @@ -1,6 +1,6 @@ { "version": 2, - "name": "Type A Machines Series 1 2014", + "name": "Series 1 2014", "inherits": "fdmprinter", "metadata": { "visible": true, @@ -37,7 +37,6 @@ "machine_center_is_zero": { "default_value": false }, "speed_print": { "default_value": 60 }, - "speed_travel": { "default_value": 200 }, "retraction_amount": { "default_value": 0.4 }, "retraction_speed": { "default_value": 35}, diff --git a/resources/definitions/tevo_tarantula.def.json b/resources/definitions/tevo_tarantula.def.json index 038cc3a318..f4bf2b901e 100644 --- a/resources/definitions/tevo_tarantula.def.json +++ b/resources/definitions/tevo_tarantula.def.json @@ -23,7 +23,7 @@ "machine_height": { "default_value": 200 }, "machine_depth": { "default_value": 200 }, "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": + "machine_head_with_fans_polygon": { "default_value": [ diff --git a/resources/definitions/tevo_tornado.def.json b/resources/definitions/tevo_tornado.def.json index 871856e004..3b6c431feb 100644 --- a/resources/definitions/tevo_tornado.def.json +++ b/resources/definitions/tevo_tornado.def.json @@ -13,7 +13,7 @@ } }, "overrides": { - "machine_name": { + "machine_name": { "default_value": "Tevo Tornado" }, "machine_width": { @@ -25,10 +25,10 @@ "machine_depth": { "default_value": 300 }, - "machine_center_is_zero": { - "default_value": false + "machine_center_is_zero": { + "default_value": false }, - "machine_head_polygon": { + "machine_head_with_fans_polygon": { "default_value": [ [-30, 34], [-30, -32], @@ -73,18 +73,36 @@ "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 c90433d85a..57c7337196 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", @@ -51,13 +50,8 @@ "fill_outline_gaps": { "default_value": true}, "infill_sparse_density": { "default_value": 15}, "retraction_amount": { "default_value": 2.5}, - "retraction_min_travel": { "default_value": 2}, "retraction_speed": { "default_value": 30}, "speed_print": { "default_value": 60}, - "speed_topbottom": { "default_value": 50}, - "speed_wall_0": { "default_value": 40}, - "top_layers": { "default_value": 4}, - "wall_line_count": { "default_value": 2}, "cool_min_layer_time": { "default_value": 11}, "layer_height": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, "layer_height_0": { "maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" }, @@ -69,6 +63,13 @@ "machine_end_gcode": { "default_value": "M104 S0\nM140 S0\nG91\nG1 E-5 F300\nG1 Z+3 F3000\nG1 Y245 F3000\nM84" - } + }, + + "acceleration_enabled": {"value": "False"}, + "acceleration_print": {"value": "1500"}, + "z_seam_type": {"default_value": "back"}, + "z_seam_x": {"value": "127.5"}, + "z_seam_y": {"value": "250"}, + "retraction_combing": {"default_value": "off"} } } diff --git a/resources/definitions/tizyx_evy_dual.def.json b/resources/definitions/tizyx_evy_dual.def.json index aaa2756181..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", @@ -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 28b4857d89..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": { "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 060752387b..255d8f032b 100644 --- a/resources/definitions/ubuild-3d_mr_bot_280.def.json +++ b/resources/definitions/ubuild-3d_mr_bot_280.def.json @@ -1,5 +1,4 @@ { - "id": "ubuild-3d_mr_bot_280", "version": 2, "name": "uBuild-3D Mr Bot 280", "inherits": "fdmprinter", @@ -24,12 +23,9 @@ "machine_height": { "default_value": 275 }, "machine_depth": { "default_value": 275 }, "machine_center_is_zero": { "default_value": false }, - "material_bed_temperature": { "default_value": 70 }, "layer_height_0": { "default_value": 0.1 }, "retraction_amount": { "default_value": 2 }, "retraction_speed": { "default_value": 50 }, - "retraction_retract_speed": { "default_value": 50 }, - "retraction_prime_speed": { "default_value": 30 }, "adhesion_type": { "default_value": "skirt" }, "machine_nozzle_heat_up_speed": { "default_value": 2 }, "machine_nozzle_cool_down_speed": { "default_value": 2 }, diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index 285f5bed08..40fbdaf709 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -14,8 +14,6 @@ "has_materials": false, "has_machine_quality": true, "preferred_variant_name": "0.4 mm", - "first_start_actions": ["UM2UpgradeSelection"], - "supported_actions":["UM2UpgradeSelection"], "machine_extruder_trains": { "0": "ultimaker2_extruder_0" @@ -90,9 +88,6 @@ }, "machine_acceleration": { "default_value": 3000 - }, - "machine_nozzle_temp_enabled": { - "default_value": false } } } diff --git a/resources/definitions/ultimaker2_extended_olsson.def.json b/resources/definitions/ultimaker2_extended_olsson.def.json new file mode 100644 index 0000000000..d2eb7f9a5d --- /dev/null +++ b/resources/definitions/ultimaker2_extended_olsson.def.json @@ -0,0 +1,12 @@ +{ + "version": 2, + "name": "Ultimaker 2 Extended with Olsson", + "inherits": "ultimaker2_extended", + "metadata": { + "has_variants": true + }, + + "overrides": { + "machine_name": { "default_value": "Ultimaker 2 Extended with Olsson" } + } +} diff --git a/resources/definitions/ultimaker2_go.def.json b/resources/definitions/ultimaker2_go.def.json index 9e374b2c88..774d215bef 100644 --- a/resources/definitions/ultimaker2_go.def.json +++ b/resources/definitions/ultimaker2_go.def.json @@ -11,7 +11,6 @@ "platform": "ultimaker2go_platform.obj", "platform_texture": "Ultimaker2Gobackplate.png", "platform_offset": [0, 0, 0], - "first_start_actions": [], "machine_extruder_trains": { "0": "ultimaker2_go_extruder_0" diff --git a/resources/definitions/ultimaker2_olsson.def.json b/resources/definitions/ultimaker2_olsson.def.json new file mode 100644 index 0000000000..2f8b877942 --- /dev/null +++ b/resources/definitions/ultimaker2_olsson.def.json @@ -0,0 +1,13 @@ +{ + "version": 2, + "name": "Ultimaker 2 with Olsson Block", + "inherits": "ultimaker2", + "metadata": { + "has_variants": true, + "quality_definition": "ultimaker2" + }, + + "overrides": { + "machine_name": { "default_value": "Ultimaker 2 with Olsson Block" } + } +} diff --git a/resources/definitions/ultimaker2_plus.def.json b/resources/definitions/ultimaker2_plus.def.json index f95d29c684..633e50bdba 100644 --- a/resources/definitions/ultimaker2_plus.def.json +++ b/resources/definitions/ultimaker2_plus.def.json @@ -12,7 +12,6 @@ "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": [], @@ -38,9 +37,6 @@ "line_width": { "value": "round(machine_nozzle_size * 0.875, 2)" }, - "speed_layer_0": { - "default_value": 20 - }, "speed_support": { "value": "speed_wall_0" }, diff --git a/resources/definitions/ultimaker3.def.json b/resources/definitions/ultimaker3.def.json index d2cd0376d3..b34ff3bdba 100644 --- a/resources/definitions/ultimaker3.def.json +++ b/resources/definitions/ultimaker3.def.json @@ -12,7 +12,6 @@ "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", @@ -31,10 +30,13 @@ "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 + ] }, @@ -79,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" }, diff --git a/resources/definitions/ultimaker3_extended.def.json b/resources/definitions/ultimaker3_extended.def.json index 43f7b94e61..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,10 +27,13 @@ "id": 9511, "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": [ + 9511 + ] }, "overrides": { diff --git a/resources/definitions/ultimaker_s3.def.json b/resources/definitions/ultimaker_s3.def.json new file mode 100644 index 0000000000..efdc7cca0a --- /dev/null +++ b/resources/definitions/ultimaker_s3.def.json @@ -0,0 +1,165 @@ +{ + "version": 2, + "name": "Ultimaker S3", + "inherits": "ultimaker", + "metadata": { + "author": "Ultimaker", + "manufacturer": "Ultimaker B.V.", + "category": "Ultimaker", + "visible": true, + "file_formats": "application/x-ufp;text/x-gcode", + "platform": "ultimaker_s3_platform.obj", + "platform_texture": "UltimakerS3backplate.png", + "platform_offset": [0, 0, 0], + "has_machine_quality": true, + "has_materials": true, + "has_variant_buildplates": false, + "has_variants": true, + "exclude_materials": [ "generic_hips", "generic_petg", "structur3d_dap100silicone" ], + "preferred_variant_name": "AA 0.4", + "preferred_quality_type": "normal", + "variants_name": "Print core", + "nozzle_offsetting_for_disallowed_areas": false, + "machine_extruder_trains": + { + "0": "ultimaker_s3_extruder_left", + "1": "ultimaker_s3_extruder_right" + }, + "first_start_actions": [ "DiscoverUM3Action" ], + "supported_actions": [ "DiscoverUM3Action" ], + "supports_usb_connection": false, + "weight": -1, + "firmware_update_info": { + "id": 213482, + "check_urls": ["https://software.ultimaker.com/releases/firmware/213482/stable/um-update.swu.version"], + "update_url": "https://ultimaker.com/firmware" + }, + "bom_numbers": [ + 213482 + ] + }, + + "overrides": { + "machine_name": { "default_value": "Ultimaker S3" }, + "machine_width": { "default_value": 230 }, + "machine_depth": { "default_value": 190 }, + "machine_height": { "default_value": 200 }, + "machine_heated_bed": { "default_value": true }, + "machine_nozzle_heat_up_speed": { "default_value": 1.4 }, + "machine_nozzle_cool_down_speed": { "default_value": 0.8 }, + "machine_head_with_fans_polygon": + { + "default_value": + [ + [ -41.4, -45.8 ], + [ -41.4, 36.0 ], + [ 63.3, 36.0 ], + [ 63.3, -45.8 ] + ] + }, + "machine_gcode_flavor": { "default_value": "Griffin" }, + "machine_max_feedrate_x": { "default_value": 300 }, + "machine_max_feedrate_y": { "default_value": 300 }, + "machine_max_feedrate_z": { "default_value": 40 }, + "machine_acceleration": { "default_value": 3000 }, + "gantry_height": { "value": "60" }, + "machine_extruder_count": { "default_value": 2 }, + "extruder_prime_pos_abs": { "default_value": true }, + "machine_start_gcode": { "default_value": "" }, + "machine_end_gcode": { "default_value": "" }, + "prime_blob_enable": { "enabled": true, "default_value": false }, + + "speed_travel": + { + "maximum_value": "150", + "value": "150" + }, + + "acceleration_enabled": { "value": "True" }, + "acceleration_layer_0": { "value": "acceleration_topbottom" }, + "acceleration_prime_tower": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_print": { "value": "4000" }, + "acceleration_support": { "value": "math.ceil(acceleration_print * 2000 / 4000)" }, + "acceleration_support_interface": { "value": "acceleration_topbottom" }, + "acceleration_topbottom": { "value": "math.ceil(acceleration_print * 500 / 4000)" }, + "acceleration_wall": { "value": "math.ceil(acceleration_print * 1000 / 4000)" }, + "acceleration_wall_0": { "value": "math.ceil(acceleration_wall * 500 / 1000)" }, + "brim_width": { "value": "3" }, + "cool_fan_full_at_height": { "value": "layer_height_0 + 4 * layer_height" }, + "cool_fan_speed": { "value": "50" }, + "cool_fan_speed_max": { "value": "100" }, + "cool_min_speed": { "value": "5" }, + "infill_line_width": { "value": "round(line_width * 0.5 / 0.35, 2)" }, + "infill_overlap": { "value": "0" }, + "infill_pattern": { "value": "'triangles'" }, + "infill_wipe_dist": { "value": "0" }, + "jerk_enabled": { "value": "True" }, + "jerk_layer_0": { "value": "jerk_topbottom" }, + "jerk_prime_tower": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_print": { "value": "25" }, + "jerk_support": { "value": "math.ceil(jerk_print * 15 / 25)" }, + "jerk_support_interface": { "value": "jerk_topbottom" }, + "jerk_topbottom": { "value": "math.ceil(jerk_print * 5 / 25)" }, + "jerk_wall": { "value": "math.ceil(jerk_print * 10 / 25)" }, + "jerk_wall_0": { "value": "math.ceil(jerk_wall * 5 / 10)" }, + "layer_height_0": { "value": "round(machine_nozzle_size / 1.5, 2)" }, + "layer_start_x": { "value": "sum(extruderValues('machine_extruder_start_pos_x')) / len(extruderValues('machine_extruder_start_pos_x'))" }, + "layer_start_y": { "value": "sum(extruderValues('machine_extruder_start_pos_y')) / len(extruderValues('machine_extruder_start_pos_y'))" }, + "line_width": { "value": "machine_nozzle_size * 0.875" }, + "machine_min_cool_heat_time_window": { "value": "15" }, + "default_material_print_temperature": { "value": "200" }, + "material_standby_temperature": { "value": "100" }, + "multiple_mesh_overlap": { "value": "0" }, + "prime_tower_enable": { "value": "True" }, + "raft_airgap": { "value": "0" }, + "raft_base_speed": { "value": "20" }, + "raft_base_thickness": { "value": "0.3" }, + "raft_interface_line_spacing": { "value": "0.5" }, + "raft_interface_line_width": { "value": "0.5" }, + "raft_interface_speed": { "value": "20" }, + "raft_interface_thickness": { "value": "0.2" }, + "raft_jerk": { "value": "jerk_layer_0" }, + "raft_margin": { "value": "10" }, + "raft_speed": { "value": "25" }, + "raft_surface_layers": { "value": "1" }, + "retraction_amount": { "value": "6.5" }, + "retraction_count_max": { "value": "10" }, + "retraction_extrusion_window": { "value": "1" }, + "retraction_hop": { "value": "2" }, + "retraction_hop_enabled": { "value": "extruders_enabled_count > 1" }, + "retraction_hop_only_when_collides": { "value": "True" }, + "retraction_min_travel": { "value": "5" }, + "retraction_prime_speed": { "value": "15" }, + "skin_overlap": { "value": "10" }, + "speed_equalize_flow_enabled": { "value": "True" }, + "speed_layer_0": { "value": "20" }, + "speed_prime_tower": { "value": "speed_topbottom" }, + "speed_print": { "value": "35" }, + "speed_support": { "value": "speed_wall_0" }, + "speed_support_interface": { "value": "speed_topbottom" }, + "speed_topbottom": { "value": "math.ceil(speed_print * 20 / 35)" }, + "speed_wall": { "value": "math.ceil(speed_print * 30 / 35)" }, + "speed_wall_0": { "value": "math.ceil(speed_wall * 20 / 30)" }, + "speed_wall_x": { "value": "speed_wall" }, + "support_angle": { "value": "45" }, + "support_pattern": { "value": "'triangles'" }, + "support_use_towers": { "value": "False" }, + "support_xy_distance": { "value": "wall_line_width_0 * 2.5" }, + "support_xy_distance_overhang": { "value": "wall_line_width_0" }, + "support_z_distance": { "value": "0" }, + "switch_extruder_prime_speed": { "value": "15" }, + "switch_extruder_retraction_amount": { "value": "8" }, + "top_bottom_thickness": { "value": "1" }, + "travel_avoid_supports": { "value": "True" }, + "travel_avoid_distance": { "value": "3 if extruders_enabled_count > 1 else machine_nozzle_tip_outer_diameter / 2 * 1.5" }, + "wall_0_inset": { "value": "0" }, + "wall_line_width_x": { "value": "round(line_width * 0.3 / 0.35, 2)" }, + "wall_thickness": { "value": "1" }, + "meshfix_maximum_resolution": { "value": "(speed_wall_0 + speed_wall_x) / 60" }, + "meshfix_maximum_deviation": { "value": "layer_height / 2" }, + "optimize_wall_printing_order": { "value": "True" }, + "retraction_combing": { "default_value": "all" }, + "initial_layer_line_width_factor": { "value": "120" }, + "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" } + } +} diff --git a/resources/definitions/ultimaker_s5.def.json b/resources/definitions/ultimaker_s5.def.json index 0ebd956aa1..dcd44a371a 100644 --- a/resources/definitions/ultimaker_s5.def.json +++ b/resources/definitions/ultimaker_s5.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5", "version": 2, "name": "Ultimaker S5", "inherits": "ultimaker", @@ -14,7 +13,6 @@ "platform_offset": [0, -30, -10], "has_machine_quality": true, "has_materials": true, - "has_machine_materials": true, "has_variant_buildplates": true, "has_variants": true, "preferred_variant_name": "AA 0.4", @@ -34,9 +32,12 @@ "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": { @@ -45,6 +46,7 @@ "machine_depth": { "default_value": 240 }, "machine_height": { "default_value": 300 }, "machine_heated_bed": { "default_value": true }, + "machine_heated_build_volume": { "default_value": true }, "machine_nozzle_heat_up_speed": { "default_value": 1.4 }, "machine_nozzle_cool_down_speed": { "default_value": 0.8 }, "machine_head_with_fans_polygon": @@ -67,8 +69,6 @@ "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": @@ -162,6 +162,7 @@ "optimize_wall_printing_order": { "value": "True" }, "retraction_combing": { "default_value": "all" }, "initial_layer_line_width_factor": { "value": "120" }, - "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" } + "zig_zaggify_infill": { "value": "gradual_infill_steps == 0" }, + "build_volume_temperature": { "maximum_value": 50 } } } diff --git a/resources/definitions/uni_print_3d.def.json b/resources/definitions/uni_print_3d.def.json index 427177176a..99d9eab1e0 100644 --- a/resources/definitions/uni_print_3d.def.json +++ b/resources/definitions/uni_print_3d.def.json @@ -1,5 +1,4 @@ { - "id": "uni_print_3d", "name": "UNI-PRINT-3D", "version": 2, "inherits": "fdmprinter", diff --git a/resources/definitions/vertex_delta_k8800.def.json b/resources/definitions/vertex_delta_k8800.def.json index 51c745a841..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": diff --git a/resources/definitions/vertex_k8400.def.json b/resources/definitions/vertex_k8400.def.json index b43751cadc..bbeb8510ba 100644 --- a/resources/definitions/vertex_k8400.def.json +++ b/resources/definitions/vertex_k8400.def.json @@ -4,7 +4,7 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "manufacturer": "Velleman", + "manufacturer": "Velleman N.V.", "file_formats": "text/x-gcode", "platform": "Vertex_build_panel.stl", "platform_offset": [0, -3, 0], @@ -20,12 +20,6 @@ "machine_heated_bed": { "default_value": true }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 200 }, @@ -41,14 +35,6 @@ "machine_center_is_zero": { "default_value": false }, - "machine_head_polygon": { - "default_value": [ - [-60, -18], - [-60, 40], - [18, 40], - [18, -18] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ [-60, -40], @@ -64,10 +50,10 @@ "default_value": "RepRap (Marlin/Sprinter)" }, "machine_start_gcode": { - "default_value": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 ;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 ;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n;Put printing message on LCD screen\nM117 Printing..." + "default_value": "M104 T0 S{material_print_temperature_layer_0}\nG28 ;Home extruder\nG90 ;Absolute positioning\nM82 ;Extruder in absolute mode\nG1 Z1 F100\nG92 E0 ;Reset extruder position\nM109 T0 S{material_print_temperature_layer_0}\nG1 E20 F100\nG92 E0 ;Reset extruder position" }, "machine_end_gcode": { - "default_value": "M104 S0 ;extruder heater off\nM140 S0 ;heated bed heater off (if you have it)\nG91 ;relative positioning\nG1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure\nG1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more\nG28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way\nM84 ;steppers off\nG90 ;absolute positioning" + "default_value": "G1 X0 Y0 Z130 ;Get extruder out of way\nM107 ;Turn off fan\n;Disable all extruders\nG91 ;Relative positioning\nT0\nG1 E-1 ;Reduce filament pressure\nM104 T0 S0\nG90 ;Absolute positioning\nG92 E0 ;Reset extruder position\nM140 S0 ;Disable heated bed\nM84 ;Turn steppers off" } } } \ No newline at end of file diff --git a/resources/definitions/vertex_k8400_dual.def.json b/resources/definitions/vertex_k8400_dual.def.json index 145cb7abec..498d550429 100644 --- a/resources/definitions/vertex_k8400_dual.def.json +++ b/resources/definitions/vertex_k8400_dual.def.json @@ -4,7 +4,7 @@ "inherits": "fdmprinter", "metadata": { "visible": true, - "manufacturer": "Velleman", + "manufacturer": "Velleman N.V.", "file_formats": "text/x-gcode", "platform": "Vertex_build_panel.stl", "platform_offset": [0, -3, 0], @@ -18,12 +18,6 @@ "machine_heated_bed": { "default_value": true }, - "material_bed_temperature": { - "default_value": 0 - }, - "material_bed_temperature_layer_0": { - "default_value": 0 - }, "machine_width": { "default_value": 223.7 }, @@ -42,14 +36,6 @@ "machine_use_extruder_offset_to_offset_coords": { "default_value": true }, - "machine_head_polygon": { - "default_value": [ - [-60, -18], - [-60, 40], - [18, 40], - [18, -18] - ] - }, "machine_head_with_fans_polygon": { "default_value": [ [-60, -40], diff --git a/resources/definitions/vertex_nano_k8600.def.json b/resources/definitions/vertex_nano_k8600.def.json new file mode 100644 index 0000000000..ef9552caf3 --- /dev/null +++ b/resources/definitions/vertex_nano_k8600.def.json @@ -0,0 +1,77 @@ +{ + "version": 2, + "name": "Vertex K8600", + "inherits": "fdmprinter", + "metadata": { + "visible": true, + "manufacturer": "Velleman N.V.", + "file_formats": "text/x-gcode", + "supports_usb_connection": true, + "supported_actions": ["MachineSettingsAction"], + "machine_extruder_trains": { + "0": "vertex_nano_k8600_extruder_0" + } + }, + "overrides": { + "machine_name": { + "default_value": "Vertex K8600" + }, + "machine_heated_bed": { + "default_value": false + }, + "machine_width": { + "default_value": 80 + }, + "machine_height": { + "default_value": 75 + }, + "machine_depth": { + "default_value": 80 + }, + "machine_center_is_zero": { + "default_value": false + }, + "machine_gcode_flavor": { + "default_value": "RepRap (Marlin/Sprinter)" + }, + "machine_start_gcode": { + "default_value": "; Vertex Nano Start G-code M0 is my nozzle clean M400 G28 ; Home extruder G90 ; Absolute positioning M82 ; Extruder in absolute mode M104 T0 S{material_print_temperature} G92 E0 ; Reset extruder position G1 Z1 F800 M109 T0 S{material_print_temperature} M117 Priming nozzle... M83 G1 E20 F100 ; purge/prime nozzle M82 G92 E0 ; Reset extruder position G4 S3 ; Wait 3 seconds G1 Z5 F2000 M117 Vertex Nano is printing" + }, + "machine_end_gcode": { + "default_value": "; Vertex Nano end G-Code G91 ; Relative positioning T0 G1 E-1 F1500; Reduce filament pressure M104 T0 S0 G90 ; Absolute positioning G92 E0 ; Reset extruder position G28 M84 ; Turn steppers off" + }, + "line_width": { + "value": 0.35 + }, + "infill_line_width": { + "value": 0.35 + }, + "wall_thickness": { + "value": 0.7 + }, + "top_bottom_thickness": { + "value": 0.6 + }, + "infill_sparse_density": { + "value": 40 + }, + "infill_overlap": { + "value": 5 + }, + "min_infill_area": { + "value": 0.1 + }, + "retract_at_layer_change": { + "value": true + }, + "retraction_min_travel": { + "value": 1 + }, + "retraction_count_max": { + "value": 15 + }, + "retraction_extrusion_window": { + "value": 1 + } + } +} diff --git a/resources/definitions/wanhao_d9.def.json b/resources/definitions/wanhao_d9.def.json index 39ad139ff8..ac4d41fa40 100644 --- a/resources/definitions/wanhao_d9.def.json +++ b/resources/definitions/wanhao_d9.def.json @@ -31,8 +31,6 @@ "support_angle": { "default_value": 60 }, "support_enable": { "default_value": true }, "layer_height_0": { "default_value": 0.15 }, - "top_thickness": { "default_value": 0.6 }, - "material_print_temperature": { "default_value": 190 }, "layer_height": { "default_value": 0.2 }, "speed_print": { "default_value": 30 }, "adhesion_type": { "default_value": "raft" }, diff --git a/resources/definitions/zone3d_printer.def.json b/resources/definitions/zone3d_printer.def.json index 328505e18a..4c72422788 100644 --- a/resources/definitions/zone3d_printer.def.json +++ b/resources/definitions/zone3d_printer.def.json @@ -5,7 +5,7 @@ "metadata": { "visible": true, "author": "Ultimaker", - "manufacturer": "Unknown", + "manufacturer": "Zone3D", "file_formats": "text/x-gcode", "platform_offset": [ 0, 0, 0], "machine_extruder_trains": @@ -16,9 +16,7 @@ "overrides": { "prime_tower_size": { "default_value": 10.350983390135314 }, - "material_print_temperature": { "default_value": 260 }, "layer_height": { "default_value": 0.14 }, - "speed_travel": { "default_value": 150 }, "machine_extruder_count": { "default_value": 1 }, "machine_heated_bed": { "default_value": true }, "machine_center_is_zero": { "default_value": false }, diff --git a/resources/extruders/101Hero_extruder_0.def.json b/resources/extruders/101Hero_extruder_0.def.json index 82c06e40d6..21c892133c 100644 --- a/resources/extruders/101Hero_extruder_0.def.json +++ b/resources/extruders/101Hero_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "101Hero_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/3dator_extruder_0.def.json b/resources/extruders/3dator_extruder_0.def.json index 6749eb7bb4..97b03518f7 100644 --- a/resources/extruders/3dator_extruder_0.def.json +++ b/resources/extruders/3dator_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "3dator_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/Mark2_extruder1.def.json b/resources/extruders/Mark2_extruder1.def.json index 915c331083..27becf88ff 100644 --- a/resources/extruders/Mark2_extruder1.def.json +++ b/resources/extruders/Mark2_extruder1.def.json @@ -1,5 +1,4 @@ { - "id": "Mark2_extruder1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/Mark2_extruder2.def.json b/resources/extruders/Mark2_extruder2.def.json index 2c05a09391..ac654d9c00 100644 --- a/resources/extruders/Mark2_extruder2.def.json +++ b/resources/extruders/Mark2_extruder2.def.json @@ -1,5 +1,4 @@ { - "id": "Mark2_extruder2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_pri3_extruder_0.def.json b/resources/extruders/abax_pri3_extruder_0.def.json index 27e86d6042..618ca7f596 100644 --- a/resources/extruders/abax_pri3_extruder_0.def.json +++ b/resources/extruders/abax_pri3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_pri3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_pri5_extruder_0.def.json b/resources/extruders/abax_pri5_extruder_0.def.json index 842e76e5f3..4a96b5e12e 100644 --- a/resources/extruders/abax_pri5_extruder_0.def.json +++ b/resources/extruders/abax_pri5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_pri5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/abax_titan_extruder_0.def.json b/resources/extruders/abax_titan_extruder_0.def.json index 79e1974def..078b9f0470 100644 --- a/resources/extruders/abax_titan_extruder_0.def.json +++ b/resources/extruders/abax_titan_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "abax_titan_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alfawise_u20_extruder_0.def.json b/resources/extruders/alfawise_u20_extruder_0.def.json index 2fbe3f1772..6bb2bde534 100644 --- a/resources/extruders/alfawise_u20_extruder_0.def.json +++ b/resources/extruders/alfawise_u20_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alfawise_u20_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alfawise_u30_extruder_0.def.json b/resources/extruders/alfawise_u30_extruder_0.def.json index 37f59eb567..4014b5ab62 100644 --- a/resources/extruders/alfawise_u30_extruder_0.def.json +++ b/resources/extruders/alfawise_u30_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alfawise_u30_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/alya3dp_extruder_0.def.json b/resources/extruders/alya3dp_extruder_0.def.json index 3676f01ad2..5e05210e2c 100644 --- a/resources/extruders/alya3dp_extruder_0.def.json +++ b/resources/extruders/alya3dp_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "alya3dp_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anet_a6_extruder_0.def.json b/resources/extruders/anet_a6_extruder_0.def.json index 704d3a55ca..c87160a542 100644 --- a/resources/extruders/anet_a6_extruder_0.def.json +++ b/resources/extruders/anet_a6_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anet_a6_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anycubic_4max_extruder_0.def.json b/resources/extruders/anycubic_4max_extruder_0.def.json index 5c2ab8d479..9ea55928b8 100644 --- a/resources/extruders/anycubic_4max_extruder_0.def.json +++ b/resources/extruders/anycubic_4max_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_4max_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anycubic_chiron_extruder_0.def.json b/resources/extruders/anycubic_chiron_extruder_0.def.json index cc48df08bb..b4117c755a 100644 --- a/resources/extruders/anycubic_chiron_extruder_0.def.json +++ b/resources/extruders/anycubic_chiron_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_chiron_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/anycubic_i3_mega_extruder_0.def.json b/resources/extruders/anycubic_i3_mega_extruder_0.def.json index 6d9c330536..f15eab4829 100644 --- a/resources/extruders/anycubic_i3_mega_extruder_0.def.json +++ b/resources/extruders/anycubic_i3_mega_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "anycubic_i3_mega_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bfb_extruder_0.def.json b/resources/extruders/bfb_extruder_0.def.json index 88c81ee03e..6dd995d098 100644 --- a/resources/extruders/bfb_extruder_0.def.json +++ b/resources/extruders/bfb_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bfb_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bibo2_dual_extruder_0.def.json b/resources/extruders/bibo2_dual_extruder_0.def.json index f83801fa0c..91508ecc6d 100644 --- a/resources/extruders/bibo2_dual_extruder_0.def.json +++ b/resources/extruders/bibo2_dual_extruder_0.def.json @@ -1,46 +1,45 @@ { - "id": "BIBO1", - "version": 2, - "name": "Extruder 1", - "inherits": "fdmextruder", - "metadata": { - "machine": "BIBO2 dual", - "position": "0" - }, - "overrides": { - "extruder_nr": { - "default_value": 0, - "maximum_value": "1" - }, - "material_diameter": { - "default_value": 1.75 - }, - "machine_nozzle_size": { - "default_value": 0.4 - }, - "machine_nozzle_offset_x": { - "default_value": 0.0 - }, - "machine_nozzle_offset_y": { - "default_value": 0.0 - }, - "machine_extruder_start_pos_abs": { - "default_value": true - }, - "machine_extruder_start_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_start_pos_y": { - "value": "prime_tower_position_y" - }, - "machine_extruder_end_pos_abs": { - "default_value": true - }, - "machine_extruder_end_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_end_pos_y": { - "value": "prime_tower_position_y" - } - } + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "bibo2_dual", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } } diff --git a/resources/extruders/bibo2_dual_extruder_1.def.json b/resources/extruders/bibo2_dual_extruder_1.def.json index 5f479ba54b..129ad27273 100644 --- a/resources/extruders/bibo2_dual_extruder_1.def.json +++ b/resources/extruders/bibo2_dual_extruder_1.def.json @@ -1,46 +1,45 @@ { - "id": "BIBO2", - "version": 2, - "name": "Extruder 2", - "inherits": "fdmextruder", - "metadata": { - "machine": "BIBO2 dual", - "position": "1" - }, - "overrides": { - "extruder_nr": { - "default_value": 1, - "maximum_value": "1" - }, - "material_diameter": { - "default_value": 1.75 - }, - "machine_nozzle_size": { - "default_value": 0.4 - }, - "machine_nozzle_offset_x": { - "default_value": 0.0 - }, - "machine_nozzle_offset_y": { - "default_value": 0.0 - }, - "machine_extruder_start_pos_abs": { - "default_value": true - }, - "machine_extruder_start_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_start_pos_y": { - "value": "prime_tower_position_y" - }, - "machine_extruder_end_pos_abs": { - "default_value": true - }, - "machine_extruder_end_pos_x": { - "value": "prime_tower_position_x" - }, - "machine_extruder_end_pos_y": { - "value": "prime_tower_position_y" - } - } + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "bibo2_dual", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "material_diameter": { + "default_value": 1.75 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": 0.0 + }, + "machine_nozzle_offset_y": { + "default_value": 0.0 + }, + "machine_extruder_start_pos_abs": { + "default_value": true + }, + "machine_extruder_start_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_start_pos_y": { + "value": "prime_tower_position_y" + }, + "machine_extruder_end_pos_abs": { + "default_value": true + }, + "machine_extruder_end_pos_x": { + "value": "prime_tower_position_x" + }, + "machine_extruder_end_pos_y": { + "value": "prime_tower_position_y" + } + } } diff --git a/resources/extruders/bq_hephestos_2_extruder_0.def.json b/resources/extruders/bq_hephestos_2_extruder_0.def.json index 833907937d..d58d8d755a 100644 --- a/resources/extruders/bq_hephestos_2_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_extruder_0.def.json b/resources/extruders/bq_hephestos_extruder_0.def.json index 753778f399..dc9b42d66d 100644 --- a/resources/extruders/bq_hephestos_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_hephestos_xl_extruder_0.def.json b/resources/extruders/bq_hephestos_xl_extruder_0.def.json index 91cac04dc9..a52032f129 100644 --- a/resources/extruders/bq_hephestos_xl_extruder_0.def.json +++ b/resources/extruders/bq_hephestos_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_hephestos_xl_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_witbox_2_extruder_0.def.json b/resources/extruders/bq_witbox_2_extruder_0.def.json index 04107f4471..62fe62ad0b 100644 --- a/resources/extruders/bq_witbox_2_extruder_0.def.json +++ b/resources/extruders/bq_witbox_2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/bq_witbox_extruder_0.def.json b/resources/extruders/bq_witbox_extruder_0.def.json index d3a5c677af..37b1492676 100644 --- a/resources/extruders/bq_witbox_extruder_0.def.json +++ b/resources/extruders/bq_witbox_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "bq_witbox_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_large_front.def.json b/resources/extruders/builder_premium_large_front.def.json index 4834bc8fd9..dc1c557304 100644 --- a/resources/extruders/builder_premium_large_front.def.json +++ b/resources/extruders/builder_premium_large_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_large_rear.def.json b/resources/extruders/builder_premium_large_rear.def.json index f257749ea4..5dbe6d30c9 100644 --- a/resources/extruders/builder_premium_large_rear.def.json +++ b/resources/extruders/builder_premium_large_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_large_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_medium_front.def.json b/resources/extruders/builder_premium_medium_front.def.json index 05dcb3d49f..2d38e48aab 100644 --- a/resources/extruders/builder_premium_medium_front.def.json +++ b/resources/extruders/builder_premium_medium_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_medium_rear.def.json b/resources/extruders/builder_premium_medium_rear.def.json index 3461e07f09..0a789c38f1 100644 --- a/resources/extruders/builder_premium_medium_rear.def.json +++ b/resources/extruders/builder_premium_medium_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_medium_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_small_front.def.json b/resources/extruders/builder_premium_small_front.def.json index 7a1c352c73..b36c535aeb 100644 --- a/resources/extruders/builder_premium_small_front.def.json +++ b/resources/extruders/builder_premium_small_front.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small_front", "version": 2, "name": "Front Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/builder_premium_small_rear.def.json b/resources/extruders/builder_premium_small_rear.def.json index 7085236a5c..8e00d0cc39 100644 --- a/resources/extruders/builder_premium_small_rear.def.json +++ b/resources/extruders/builder_premium_small_rear.def.json @@ -1,5 +1,4 @@ { - "id": "builder_premium_small_rear", "version": 2, "name": "Rear Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_0.def.json b/resources/extruders/cartesio_extruder_0.def.json index 6d2b5f634e..ad27d4854c 100644 --- a/resources/extruders/cartesio_extruder_0.def.json +++ b/resources/extruders/cartesio_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_1.def.json b/resources/extruders/cartesio_extruder_1.def.json index 3d49a220c0..1699a9c6a8 100644 --- a/resources/extruders/cartesio_extruder_1.def.json +++ b/resources/extruders/cartesio_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_1", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_2.def.json b/resources/extruders/cartesio_extruder_2.def.json index 1f8f8b9ca9..2521ada681 100644 --- a/resources/extruders/cartesio_extruder_2.def.json +++ b/resources/extruders/cartesio_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_2", "version": 2, "name": "Extruder 3", "inherits": "fdmextruder", diff --git a/resources/extruders/cartesio_extruder_3.def.json b/resources/extruders/cartesio_extruder_3.def.json index 0b1cfe493e..c844e7ce54 100644 --- a/resources/extruders/cartesio_extruder_3.def.json +++ b/resources/extruders/cartesio_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "cartesio_extruder_3", "version": 2, "name": "Extruder 4", "inherits": "fdmextruder", diff --git a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json index 26d847483d..dfa06c776a 100644 --- a/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json +++ b/resources/extruders/cocoon_create_modelmaker_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cocoon_create_modelmaker_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cr-x_extruder_0.def.json b/resources/extruders/cr-x_extruder_0.def.json index 8135815afb..d9b7b03021 100644 --- a/resources/extruders/cr-x_extruder_0.def.json +++ b/resources/extruders/cr-x_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "cr-x_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", "metadata": { - "machine": "Creality CR-X", + "machine": "creality_cr-x", "position": "0" }, diff --git a/resources/extruders/cr-x_extruder_1.def.json b/resources/extruders/cr-x_extruder_1.def.json index 9313f2ea78..8e763df64f 100644 --- a/resources/extruders/cr-x_extruder_1.def.json +++ b/resources/extruders/cr-x_extruder_1.def.json @@ -1,10 +1,9 @@ { - "id": "cr-x_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", "metadata": { - "machine": "Creality CR-X", + "machine": "creality_cr-x", "position": "1" }, diff --git a/resources/extruders/creality_cr10_extruder_0.def.json b/resources/extruders/creality_base_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10_extruder_0.def.json rename to resources/extruders/creality_base_extruder_0.def.json index 3a259b672b..a173d1c2fa 100644 --- a/resources/extruders/creality_cr10_extruder_0.def.json +++ b/resources/extruders/creality_base_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_cr10_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10", + "machine": "creality_base", "position": "0" }, @@ -12,5 +11,6 @@ "extruder_nr": { "default_value": 0 }, "machine_nozzle_size": { "default_value": 0.4 }, "material_diameter": { "default_value": 1.75 } + } } diff --git a/resources/extruders/creatable_d3_extruder_0.def.json b/resources/extruders/creatable_d3_extruder_0.def.json index 7d45bb8e8a..95883d0f69 100644 --- a/resources/extruders/creatable_d3_extruder_0.def.json +++ b/resources/extruders/creatable_d3_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creatable_d3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "Creatable_D3", + "machine": "creatable_d3", "position": "0" }, diff --git a/resources/extruders/cubicon_3dp_110f_extruder_0.def.json b/resources/extruders/cubicon_3dp_110f_extruder_0.def.json index 9c854fd2a1..048c12b992 100644 --- a/resources/extruders/cubicon_3dp_110f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_110f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_110f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_210f_extruder_0.def.json b/resources/extruders/cubicon_3dp_210f_extruder_0.def.json index 8a8573760a..07fe7f3769 100644 --- a/resources/extruders/cubicon_3dp_210f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_210f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_210f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_3dp_310f_extruder_0.def.json b/resources/extruders/cubicon_3dp_310f_extruder_0.def.json index 4edbbd5a6c..8dc336877f 100644 --- a/resources/extruders/cubicon_3dp_310f_extruder_0.def.json +++ b/resources/extruders/cubicon_3dp_310f_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "cubicon_3dp_310f_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json b/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json new file mode 100644 index 0000000000..6c8993e799 --- /dev/null +++ b/resources/extruders/cubicon_dual_pro_a30_extruder_0.def.json @@ -0,0 +1,26 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "cubicon_dual_pro_a30", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": -27.3 + }, + "machine_nozzle_offset_y": { + "default_value": -19.9 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json b/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json new file mode 100644 index 0000000000..ccdfdee1f7 --- /dev/null +++ b/resources/extruders/cubicon_dual_pro_a30_extruder_1.def.json @@ -0,0 +1,26 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "cubicon_dual_pro_a30", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": -27.3 + }, + "machine_nozzle_offset_y": { + "default_value": -19.9 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json b/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json new file mode 100644 index 0000000000..12d022cd1e --- /dev/null +++ b/resources/extruders/cubicon_style_plus_a15_extruder_0.def.json @@ -0,0 +1,26 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "cubicon_style_plus_a15", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "machine_nozzle_offset_x": { + "default_value": -4.00 + }, + "machine_nozzle_offset_y": { + "default_value": -7.00 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/custom_extruder_1.def.json b/resources/extruders/custom_extruder_1.def.json index 859c6a2f22..942f3e96b9 100644 --- a/resources/extruders/custom_extruder_1.def.json +++ b/resources/extruders/custom_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_1", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_2.def.json b/resources/extruders/custom_extruder_2.def.json index eecda5dfcd..cd43efa994 100644 --- a/resources/extruders/custom_extruder_2.def.json +++ b/resources/extruders/custom_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_2", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_3.def.json b/resources/extruders/custom_extruder_3.def.json index 77909ec05d..be5bdd0e6a 100644 --- a/resources/extruders/custom_extruder_3.def.json +++ b/resources/extruders/custom_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_3", "version": 2, "name": "Extruder 3", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_4.def.json b/resources/extruders/custom_extruder_4.def.json index be792c3a8e..ce1df0a5f5 100644 --- a/resources/extruders/custom_extruder_4.def.json +++ b/resources/extruders/custom_extruder_4.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_4", "version": 2, "name": "Extruder 4", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_5.def.json b/resources/extruders/custom_extruder_5.def.json index ea64605041..beb4786505 100644 --- a/resources/extruders/custom_extruder_5.def.json +++ b/resources/extruders/custom_extruder_5.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_5", "version": 2, "name": "Extruder 5", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_6.def.json b/resources/extruders/custom_extruder_6.def.json index fd27fadace..7f1e1a1343 100644 --- a/resources/extruders/custom_extruder_6.def.json +++ b/resources/extruders/custom_extruder_6.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_6", "version": 2, "name": "Extruder 6", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_7.def.json b/resources/extruders/custom_extruder_7.def.json index cf003d1a6b..e4239f35f0 100644 --- a/resources/extruders/custom_extruder_7.def.json +++ b/resources/extruders/custom_extruder_7.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_7", "version": 2, "name": "Extruder 7", "inherits": "fdmextruder", diff --git a/resources/extruders/custom_extruder_8.def.json b/resources/extruders/custom_extruder_8.def.json index f418a55186..7671825792 100644 --- a/resources/extruders/custom_extruder_8.def.json +++ b/resources/extruders/custom_extruder_8.def.json @@ -1,5 +1,4 @@ { - "id": "custom_extruder_8", "version": 2, "name": "Extruder 8", "inherits": "fdmextruder", diff --git a/resources/extruders/delta_go_extruder_0.def.json b/resources/extruders/delta_go_extruder_0.def.json index 2262270dfb..330cde08bf 100644 --- a/resources/extruders/delta_go_extruder_0.def.json +++ b/resources/extruders/delta_go_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "delta_go_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltabot_extruder_0.def.json b/resources/extruders/deltabot_extruder_0.def.json index e13d6a6ee3..d4773ccf9f 100644 --- a/resources/extruders/deltabot_extruder_0.def.json +++ b/resources/extruders/deltabot_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "deltabot_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltacomb_extruder_0.def.json b/resources/extruders/deltacomb_extruder_0.def.json index 64c512b7fe..875655d5c7 100755 --- a/resources/extruders/deltacomb_extruder_0.def.json +++ b/resources/extruders/deltacomb_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "deltacomb_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/deltacomb_extruder_1.def.json b/resources/extruders/deltacomb_extruder_1.def.json index 1657688482..b1f30f4624 100755 --- a/resources/extruders/deltacomb_extruder_1.def.json +++ b/resources/extruders/deltacomb_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "deltacomb_extruder_1", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/easyarts_ares_extruder_0.def.json b/resources/extruders/easyarts_ares_extruder_0.def.json index ec7ba81c57..4ddd476dbb 100644 --- a/resources/extruders/easyarts_ares_extruder_0.def.json +++ b/resources/extruders/easyarts_ares_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "easyarts_ares_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/creality_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..a9cea62897 100644 --- a/resources/extruders/creality_cr10s5_extruder_0.def.json +++ b/resources/extruders/erzay3d_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_cr10s5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_cr10s5", + "machine": "erzay3d", "position": "0" }, diff --git a/resources/extruders/fabtotum_extruder_0.def.json b/resources/extruders/fabtotum_extruder_0.def.json index 5ed4da6256..a763fbcc15 100644 --- a/resources/extruders/fabtotum_extruder_0.def.json +++ b/resources/extruders/fabtotum_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "fabtotum_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/felixpro2_dual_extruder_0.def.json b/resources/extruders/felixpro2_dual_extruder_0.def.json new file mode 100644 index 0000000000..4278a532f9 --- /dev/null +++ b/resources/extruders/felixpro2_dual_extruder_0.def.json @@ -0,0 +1,27 @@ +{ + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "felixpro2dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.35 }, + "material_diameter": { "default_value": 1.75 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/felixpro2_dual_extruder_1.def.json b/resources/extruders/felixpro2_dual_extruder_1.def.json new file mode 100644 index 0000000000..195aad474d --- /dev/null +++ b/resources/extruders/felixpro2_dual_extruder_1.def.json @@ -0,0 +1,27 @@ +{ + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "felixpro2dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "2" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.35 }, + "material_diameter": { "default_value": 1.75 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_start_pos_y": { "value": "prime_tower_position_y" }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "value": "prime_tower_position_x" }, + "machine_extruder_end_pos_y": { "value": "prime_tower_position_y" } + } +} diff --git a/resources/extruders/felixtec4_dual_extruder_0.def.json b/resources/extruders/felixtec4_dual_extruder_0.def.json index 2a2d0468e1..1821b0e601 100644 --- a/resources/extruders/felixtec4_dual_extruder_0.def.json +++ b/resources/extruders/felixtec4_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "felixtec4_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/felixtec4_dual_extruder_1.def.json b/resources/extruders/felixtec4_dual_extruder_1.def.json index 5d7e9c74a3..37a99c5fb4 100644 --- a/resources/extruders/felixtec4_dual_extruder_1.def.json +++ b/resources/extruders/felixtec4_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "felixtec4_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/flsun_qq_extruder.def.json b/resources/extruders/flsun_qq_extruder.def.json index 7c93776836..c7ca0ed6eb 100644 --- a/resources/extruders/flsun_qq_extruder.def.json +++ b/resources/extruders/flsun_qq_extruder.def.json @@ -1,5 +1,4 @@ { - "id": "flsun_qq_extruder", "version": 2, "name": "Extruder", "inherits": "fdmextruder", 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..e61056fcd3 100644 --- a/resources/extruders/creality_ender3_extruder_0.def.json +++ b/resources/extruders/flsun_qq_s_extruder_0.def.json @@ -1,10 +1,9 @@ { - "id": "creality_ender3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", "metadata": { - "machine": "creality_ender3", + "machine": "flsun_qq_s", "position": "0" }, diff --git a/resources/extruders/folgertech_FT-5_extruder_0.def.json b/resources/extruders/folgertech_FT-5_extruder_0.def.json index 8ba9d130c6..861b0e7a7e 100644 --- a/resources/extruders/folgertech_FT-5_extruder_0.def.json +++ b/resources/extruders/folgertech_FT-5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "folgertech_FT-5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/creality_cr10s4_extruder_0.def.json b/resources/extruders/geeetech_a30_extruder_0.def.json similarity index 80% rename from resources/extruders/creality_cr10s4_extruder_0.def.json rename to resources/extruders/geeetech_a30_extruder_0.def.json index 8a40c6431f..90cb496877 100644 --- a/resources/extruders/creality_cr10s4_extruder_0.def.json +++ b/resources/extruders/geeetech_a30_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": "geeetech_a30", "position": "0" }, diff --git a/resources/extruders/gmax15plus_dual_extruder_0.def.json b/resources/extruders/gmax15plus_dual_extruder_0.def.json index d3146a0576..45f35dee1f 100644 --- a/resources/extruders/gmax15plus_dual_extruder_0.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_dual_extruder_1.def.json b/resources/extruders/gmax15plus_dual_extruder_1.def.json index 7b7354d794..6d0d5db06f 100644 --- a/resources/extruders/gmax15plus_dual_extruder_1.def.json +++ b/resources/extruders/gmax15plus_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/gmax15plus_extruder_0.def.json b/resources/extruders/gmax15plus_extruder_0.def.json index 70389745b3..5b0889d46d 100644 --- a/resources/extruders/gmax15plus_extruder_0.def.json +++ b/resources/extruders/gmax15plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "gmax15plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/grr_neo_extruder_0.def.json b/resources/extruders/grr_neo_extruder_0.def.json index 6d76c90796..a9f1fa4faa 100644 --- a/resources/extruders/grr_neo_extruder_0.def.json +++ b/resources/extruders/grr_neo_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "grr_neo_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hBp_extruder_left.def.json b/resources/extruders/hBp_extruder_left.def.json index 7e71ca27a8..ce23f27c29 100644 --- a/resources/extruders/hBp_extruder_left.def.json +++ b/resources/extruders/hBp_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "hBp_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/hBp_extruder_right.def.json b/resources/extruders/hBp_extruder_right.def.json index acd2312268..170556a1fd 100644 --- a/resources/extruders/hBp_extruder_right.def.json +++ b/resources/extruders/hBp_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "hBp_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/hellbot_adonis_extruder.def.json b/resources/extruders/hellbot_adonis_extruder.def.json new file mode 100644 index 0000000000..4201f6b393 --- /dev/null +++ b/resources/extruders/hellbot_adonis_extruder.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_adonis", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hellbot_magna_dual_extruder_1.def.json b/resources/extruders/hellbot_magna_dual_extruder_1.def.json new file mode 100644 index 0000000000..a31a3fdd70 --- /dev/null +++ b/resources/extruders/hellbot_magna_dual_extruder_1.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_magna_dual", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hellbot_magna_dual_extruder_2.def.json b/resources/extruders/hellbot_magna_dual_extruder_2.def.json new file mode 100644 index 0000000000..651c39d53b --- /dev/null +++ b/resources/extruders/hellbot_magna_dual_extruder_2.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_magna_dual", + "position": "1" + }, + + "overrides": { + "extruder_nr": { "default_value": 1 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hellbot_magna_i_extruder.def.json b/resources/extruders/hellbot_magna_i_extruder.def.json new file mode 100644 index 0000000000..70117c2aed --- /dev/null +++ b/resources/extruders/hellbot_magna_i_extruder.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "hellbot_magna_I", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/hms434_tool_1.def.json b/resources/extruders/hms434_tool_1.def.json index bf5cefe5b3..ddd46e60f3 100644 --- a/resources/extruders/hms434_tool_1.def.json +++ b/resources/extruders/hms434_tool_1.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_1", "version": 2, "name": "Tool 1", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "\nM109 T0 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n" + "default_value": "\n;changing to tool1\nM109 T0 S{material_print_temperature}\nG1 Y120 F3000\nG1 X10 F12000\n\n" }, "machine_extruder_end_code": { - "default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n\n" + "default_value": "\nG1 X10 Y120 F12000\nG1 X-40 F12000\nM109 T0 R{material_standby_temperature}\nG1 Y100 F3000\n; ending tool1\n\n" } } } diff --git a/resources/extruders/hms434_tool_2.def.json b/resources/extruders/hms434_tool_2.def.json index 06e6ff98b7..aec54238f3 100644 --- a/resources/extruders/hms434_tool_2.def.json +++ b/resources/extruders/hms434_tool_2.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_2", "version": 2, "name": "Tool 2", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "\nM109 T1 S{material_print_temperature}\nG1 X-18 Y-50 F9000\nG1 X150 Y10 F9000\n\n" + "default_value": "\n;changing to tool2\nM109 T1 S{material_print_temperature}\nG1 Y120 F3000\nG1 X10 F12000\n\n" }, "machine_extruder_end_code": { - "default_value": "\nG1 X150 Y10 F9000\nG1 X-20 Y-50 F9000\nG1 Y-100 F3000\n\n" + "default_value": "\nG1 X10 Y120 F12000\nG1 X-40 F12000\nM109 T1 R{material_standby_temperature}\nG1 Y100 F3000\n; ending tool2\n\n" } } } diff --git a/resources/extruders/hms434_tool_3.def.json b/resources/extruders/hms434_tool_3.def.json index df0024c4ac..e1e237d332 100644 --- a/resources/extruders/hms434_tool_3.def.json +++ b/resources/extruders/hms434_tool_3.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_3", "version": 2, "name": "Tool 3", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "" + "default_value": "\n;changing to tool3" }, "machine_extruder_end_code": { - "default_value": "" + "default_value": "\n;ending tool3" } } } diff --git a/resources/extruders/hms434_tool_4.def.json b/resources/extruders/hms434_tool_4.def.json index 351f37dd7b..1a68d5aff5 100644 --- a/resources/extruders/hms434_tool_4.def.json +++ b/resources/extruders/hms434_tool_4.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_4", "version": 2, "name": "Tool 4", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "" + "default_value": "\n;changing to tool4" }, "machine_extruder_end_code": { - "default_value": "" + "default_value": "\n;ending tool4" } } } diff --git a/resources/extruders/hms434_tool_5.def.json b/resources/extruders/hms434_tool_5.def.json index 4e27173223..b56e8be84e 100644 --- a/resources/extruders/hms434_tool_5.def.json +++ b/resources/extruders/hms434_tool_5.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_5", "version": 2, "name": "Tool 5", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "" + "default_value": "\n;changing to tool5" }, "machine_extruder_end_code": { - "default_value": "" + "default_value": "\n;ending tool5" } } } diff --git a/resources/extruders/hms434_tool_6.def.json b/resources/extruders/hms434_tool_6.def.json index 80abc23f0d..b8c8cdf062 100644 --- a/resources/extruders/hms434_tool_6.def.json +++ b/resources/extruders/hms434_tool_6.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_6", "version": 2, "name": "Tool 6", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "" + "default_value": "\n;changing to tool6" }, "machine_extruder_end_code": { - "default_value": "" + "default_value": "\n;ending tool6" } } } diff --git a/resources/extruders/hms434_tool_7.def.json b/resources/extruders/hms434_tool_7.def.json index 9806a29fae..3fc04078fa 100644 --- a/resources/extruders/hms434_tool_7.def.json +++ b/resources/extruders/hms434_tool_7.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_7", "version": 2, "name": "Tool 7", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "" + "default_value": "\n;changing to tool7" }, "machine_extruder_end_code": { - "default_value": "" + "default_value": "\n;ending tool7" } } } diff --git a/resources/extruders/hms434_tool_8.def.json b/resources/extruders/hms434_tool_8.def.json index 612d670b5d..faa6f36871 100644 --- a/resources/extruders/hms434_tool_8.def.json +++ b/resources/extruders/hms434_tool_8.def.json @@ -1,5 +1,4 @@ { - "id": "hms434_tool_8", "version": 2, "name": "Tool 8", "inherits": "fdmextruder", @@ -17,10 +16,10 @@ "machine_nozzle_offset_y": { "default_value": 0.0 }, "material_diameter": { "default_value": 1.75 }, "machine_extruder_start_code": { - "default_value": "" + "default_value": "\n;changing to tool8" }, "machine_extruder_end_code": { - "default_value": "" + "default_value": "\n;ending tool8" } } } diff --git a/resources/extruders/imade3d_jellybox_2_extruder_0.def.json b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json new file mode 100644 index 0000000000..ca25b62286 --- /dev/null +++ b/resources/extruders/imade3d_jellybox_2_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "imade3d_jellybox_2", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/imade3d_jellybox_extruder_0.def.json b/resources/extruders/imade3d_jellybox_extruder_0.def.json index feaa717ee6..69c6d87d79 100644 --- a/resources/extruders/imade3d_jellybox_extruder_0.def.json +++ b/resources/extruders/imade3d_jellybox_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "imade3d_jellybox_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/innovo_inventor_extruder_0.def.json b/resources/extruders/innovo_inventor_extruder_0.def.json index ed599463f2..8758f3d516 100644 --- a/resources/extruders/innovo_inventor_extruder_0.def.json +++ b/resources/extruders/innovo_inventor_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "innovo_inventor_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a1_extruder_0.def.json b/resources/extruders/jgaurora_a1_extruder_0.def.json index 71742b734a..f67d8d553e 100644 --- a/resources/extruders/jgaurora_a1_extruder_0.def.json +++ b/resources/extruders/jgaurora_a1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_a3s_extruder_0.def.json b/resources/extruders/jgaurora_a3s_extruder_0.def.json new file mode 100644 index 0000000000..9a42d0da04 --- /dev/null +++ b/resources/extruders/jgaurora_a3s_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "jgaurora_a3s", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/jgaurora_a5_extruder_0.def.json b/resources/extruders/jgaurora_a5_extruder_0.def.json index fbc6ba77e6..5308c57934 100644 --- a/resources/extruders/jgaurora_a5_extruder_0.def.json +++ b/resources/extruders/jgaurora_a5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_a5_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json b/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json index 41593a4821..58beaa4cc8 100644 --- a/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json +++ b/resources/extruders/jgaurora_jgmaker_magic_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_jgmaker_magic_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/jgaurora_z_603s_extruder_0.def.json b/resources/extruders/jgaurora_z_603s_extruder_0.def.json index 987425b28a..647016d5ff 100644 --- a/resources/extruders/jgaurora_z_603s_extruder_0.def.json +++ b/resources/extruders/jgaurora_z_603s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "jgaurora_z_603s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/julia_extruder_0.def.json b/resources/extruders/julia_extruder_0.def.json index 53a569ccd8..ef0ca83ac4 100644 --- a/resources/extruders/julia_extruder_0.def.json +++ b/resources/extruders/julia_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "julia_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kemiq_q2_beta_extruder_0.def.json b/resources/extruders/kemiq_q2_beta_extruder_0.def.json index 0c7d1b7b50..79d55223f3 100644 --- a/resources/extruders/kemiq_q2_beta_extruder_0.def.json +++ b/resources/extruders/kemiq_q2_beta_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_beta_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kemiq_q2_gama_extruder_0.def.json b/resources/extruders/kemiq_q2_gama_extruder_0.def.json index bb165ca35e..ad6e6372ee 100644 --- a/resources/extruders/kemiq_q2_gama_extruder_0.def.json +++ b/resources/extruders/kemiq_q2_gama_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kemiq_q2_gama_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/key3d_tyro_extruder_0.def.json b/resources/extruders/key3d_tyro_extruder_0.def.json new file mode 100644 index 0000000000..f08ae351ab --- /dev/null +++ b/resources/extruders/key3d_tyro_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "0.4mm Nozzle", + "inherits": "fdmextruder", + "metadata": { + "machine": "key3d_tyro", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/kossel_mini_extruder_0.def.json b/resources/extruders/kossel_mini_extruder_0.def.json index f57154e1a3..7da2cff3b1 100644 --- a/resources/extruders/kossel_mini_extruder_0.def.json +++ b/resources/extruders/kossel_mini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_mini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kossel_pro_extruder_0.def.json b/resources/extruders/kossel_pro_extruder_0.def.json index 921e1d8bb4..48c1180f84 100644 --- a/resources/extruders/kossel_pro_extruder_0.def.json +++ b/resources/extruders/kossel_pro_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kossel_pro_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/kupido_extruder_0.def.json b/resources/extruders/kupido_extruder_0.def.json index ef988d4fde..784e453bd1 100644 --- a/resources/extruders/kupido_extruder_0.def.json +++ b/resources/extruders/kupido_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "kupido_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/leapfrog_bolt_pro_extruder_left.def.json b/resources/extruders/leapfrog_bolt_pro_extruder_left.def.json new file mode 100644 index 0000000000..4ec859a60c --- /dev/null +++ b/resources/extruders/leapfrog_bolt_pro_extruder_left.def.json @@ -0,0 +1,21 @@ +{ + "version": 2, + "name": "Left extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "leapfrog_bolt_pro", + "position": "1" + }, + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_head_distance": { "default_value": 22 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_extruder_start_code": { "default_value": "G1 Y-32 F12000\nG1 X6 F1000\nG1 X-32 F4000\nG1 X6" } + } +} diff --git a/resources/extruders/leapfrog_bolt_pro_extruder_right.def.json b/resources/extruders/leapfrog_bolt_pro_extruder_right.def.json new file mode 100644 index 0000000000..fe27106afd --- /dev/null +++ b/resources/extruders/leapfrog_bolt_pro_extruder_right.def.json @@ -0,0 +1,21 @@ +{ + "version": 2, + "name": "Right extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "leapfrog_bolt_pro", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 }, + "machine_nozzle_head_distance": { "default_value": 22 }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0.0 }, + "machine_extruder_start_code": { "default_value": "G1 Y-32 F12000\nG1 X296 F1000\nG1 X334 F4000\nG1 X296"} + } +} diff --git a/resources/extruders/makeR_pegasus_extruder_0.def.json b/resources/extruders/makeR_pegasus_extruder_0.def.json index e37891abde..c17c51d599 100644 --- a/resources/extruders/makeR_pegasus_extruder_0.def.json +++ b/resources/extruders/makeR_pegasus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_pegasus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json b/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json index a80d4079cb..278981f355 100644 --- a/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json +++ b/resources/extruders/makeR_prusa_tairona_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makeR_prusa_tairona_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makeblock_mcreate_extruder_0.def.json b/resources/extruders/makeblock_mcreate_extruder_0.def.json new file mode 100644 index 0000000000..060ea634f8 --- /dev/null +++ b/resources/extruders/makeblock_mcreate_extruder_0.def.json @@ -0,0 +1,20 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "makeblock_mcreate", + "position": "0" + }, + "overrides": { + "extruder_nr": { + "default_value": 0 + }, + "machine_nozzle_size": { + "default_value": 0.4 + }, + "material_diameter": { + "default_value": 1.75 + } + } +} diff --git a/resources/extruders/makeit_dual_1st.def.json b/resources/extruders/makeit_dual_1st.def.json index 0f5a716e16..16374b40d1 100644 --- a/resources/extruders/makeit_dual_1st.def.json +++ b/resources/extruders/makeit_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_dual_1st", "version": 2, "name": "1st Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_dual_2nd.def.json b/resources/extruders/makeit_dual_2nd.def.json index f93d670c85..562cfcbc40 100644 --- a/resources/extruders/makeit_dual_2nd.def.json +++ b/resources/extruders/makeit_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_dual_2nd", "version": 2, "name": "2nd Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_l_dual_1st.def.json b/resources/extruders/makeit_l_dual_1st.def.json index 6a9e8e3fc1..8fbc2944b1 100644 --- a/resources/extruders/makeit_l_dual_1st.def.json +++ b/resources/extruders/makeit_l_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_l_dual_1st", "version": 2, "name": "1st Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/makeit_l_dual_2nd.def.json b/resources/extruders/makeit_l_dual_2nd.def.json index 72b86b22e4..e163e9565a 100644 --- a/resources/extruders/makeit_l_dual_2nd.def.json +++ b/resources/extruders/makeit_l_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "makeit_l_dual_2nd", "version": 2, "name": "2nd Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/maker_starter_extruder_0.def.json b/resources/extruders/maker_starter_extruder_0.def.json index ee94250248..76e2f74a4c 100644 --- a/resources/extruders/maker_starter_extruder_0.def.json +++ b/resources/extruders/maker_starter_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "maker_starter_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/makerbotreplicator_extruder_0.def.json b/resources/extruders/makerbotreplicator_extruder_0.def.json index 36a975ace1..595134d788 100644 --- a/resources/extruders/makerbotreplicator_extruder_0.def.json +++ b/resources/extruders/makerbotreplicator_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "makerbotreplicator_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/malyan_m180_extruder_0.def.json b/resources/extruders/malyan_m180_extruder_0.def.json index bdf5350b26..04bc70ce55 100644 --- a/resources/extruders/malyan_m180_extruder_0.def.json +++ b/resources/extruders/malyan_m180_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m180_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/malyan_m200_extruder_0.def.json b/resources/extruders/malyan_m200_extruder_0.def.json index 4a135aa72d..88d99fb426 100644 --- a/resources/extruders/malyan_m200_extruder_0.def.json +++ b/resources/extruders/malyan_m200_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "malyan_m200_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json b/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json index 032a577022..4cb893336e 100644 --- a/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json +++ b/resources/extruders/mankati_fullscale_xt_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "mankati_fullscale_xt_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/mendel90_extruder_0.def.json b/resources/extruders/mendel90_extruder_0.def.json index 3ee2fd2b10..2ea4d9a7de 100644 --- a/resources/extruders/mendel90_extruder_0.def.json +++ b/resources/extruders/mendel90_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "mendel90_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json b/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json index e4a899d7af..023bd6b27c 100644 --- a/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json +++ b/resources/extruders/monoprice_select_mini_v1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json b/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json index b727cfce1f..79ba110701 100644 --- a/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json +++ b/resources/extruders/monoprice_select_mini_v2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "monoprice_select_mini_v2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/nwa3d_a31_extruder_0.def.json b/resources/extruders/nwa3d_a31_extruder_0.def.json new file mode 100644 index 0000000000..de1938956a --- /dev/null +++ b/resources/extruders/nwa3d_a31_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Standard 0.4mm", + "inherits": "fdmextruder", + "metadata": { + "machine": "nwa3d_a31", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/nwa3d_a5_extruder_0.def.json b/resources/extruders/nwa3d_a5_extruder_0.def.json index 5c3cc6a127..9131480732 100644 --- a/resources/extruders/nwa3d_a5_extruder_0.def.json +++ b/resources/extruders/nwa3d_a5_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "nwa3d_a5_extruder_0", "version": 2, "name": "Regular 0.4mm Nozzle", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_0.def.json b/resources/extruders/ord_extruder_0.def.json index 317ad70a3c..61317c4a17 100644 --- a/resources/extruders/ord_extruder_0.def.json +++ b/resources/extruders/ord_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_0", "version": 2, "name": "0", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_1.def.json b/resources/extruders/ord_extruder_1.def.json index 6e29ad2f2b..43bc11fa71 100644 --- a/resources/extruders/ord_extruder_1.def.json +++ b/resources/extruders/ord_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_1", "version": 2, "name": "1", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_2.def.json b/resources/extruders/ord_extruder_2.def.json index 849930c988..84bcbd5332 100644 --- a/resources/extruders/ord_extruder_2.def.json +++ b/resources/extruders/ord_extruder_2.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_2", "version": 2, "name": "2", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_3.def.json b/resources/extruders/ord_extruder_3.def.json index eb3676c14f..db81f82b78 100644 --- a/resources/extruders/ord_extruder_3.def.json +++ b/resources/extruders/ord_extruder_3.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_3", "version": 2, "name": "3", "inherits": "fdmextruder", diff --git a/resources/extruders/ord_extruder_4.def.json b/resources/extruders/ord_extruder_4.def.json index 291e9e5501..2ca7609e06 100644 --- a/resources/extruders/ord_extruder_4.def.json +++ b/resources/extruders/ord_extruder_4.def.json @@ -1,5 +1,4 @@ { - "id": "ord_extruder_4", "version": 2, "name": "4", "inherits": "fdmextruder", diff --git a/resources/extruders/peopoly_moai_extruder_0.def.json b/resources/extruders/peopoly_moai_extruder_0.def.json index bbffd4ac4d..1acf5b499f 100644 --- a/resources/extruders/peopoly_moai_extruder_0.def.json +++ b/resources/extruders/peopoly_moai_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "peopoly_moai_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_play_extruder_0.def.json b/resources/extruders/printrbot_play_extruder_0.def.json index ef1284758b..682810c8d8 100644 --- a/resources/extruders/printrbot_play_extruder_0.def.json +++ b/resources/extruders/printrbot_play_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_play_heated_extruder_0.def.json b/resources/extruders/printrbot_play_heated_extruder_0.def.json index 0a3eeb3d06..72335e82d6 100644 --- a/resources/extruders/printrbot_play_heated_extruder_0.def.json +++ b/resources/extruders/printrbot_play_heated_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_play_heated_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_extended_extruder_0.def.json b/resources/extruders/printrbot_simple_extended_extruder_0.def.json index 71c8863552..b50a142d2e 100644 --- a/resources/extruders/printrbot_simple_extended_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_extended_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extended_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_extruder_0.def.json b/resources/extruders/printrbot_simple_extruder_0.def.json index e97977e07e..4fa5d7fbf2 100644 --- a/resources/extruders/printrbot_simple_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json b/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json index f002bb9cf5..a58195fdfb 100644 --- a/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json +++ b/resources/extruders/printrbot_simple_makers_kit_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "printrbot_simple_makers_kit_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_extruder_0.def.json b/resources/extruders/prusa_i3_extruder_0.def.json index 11c52e062b..dbb01032b8 100644 --- a/resources/extruders/prusa_i3_extruder_0.def.json +++ b/resources/extruders/prusa_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_mk2_extruder_0.def.json b/resources/extruders/prusa_i3_mk2_extruder_0.def.json index a56aae4300..e802687062 100644 --- a/resources/extruders/prusa_i3_mk2_extruder_0.def.json +++ b/resources/extruders/prusa_i3_mk2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_mk2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/prusa_i3_mk3_extruder_0.def.json b/resources/extruders/prusa_i3_mk3_extruder_0.def.json new file mode 100644 index 0000000000..29156f0d70 --- /dev/null +++ b/resources/extruders/prusa_i3_mk3_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "prusa_i3_mk3", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} \ No newline at end of file diff --git a/resources/extruders/prusa_i3_xl_extruder_0.def.json b/resources/extruders/prusa_i3_xl_extruder_0.def.json index 5dc2ab3bc0..c4125b36ee 100644 --- a/resources/extruders/prusa_i3_xl_extruder_0.def.json +++ b/resources/extruders/prusa_i3_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "prusa_i3_xl_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/punchtec_connect_xl_extruder_0.def.json b/resources/extruders/punchtec_connect_xl_extruder_0.def.json index 68c3d8c906..f286140167 100644 --- a/resources/extruders/punchtec_connect_xl_extruder_0.def.json +++ b/resources/extruders/punchtec_connect_xl_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl_extruder_0", "version": 2, "name": "0", "inherits": "fdmextruder", diff --git a/resources/extruders/punchtec_connect_xl_extruder_1.def.json b/resources/extruders/punchtec_connect_xl_extruder_1.def.json index a2e4b31714..47d28882cf 100644 --- a/resources/extruders/punchtec_connect_xl_extruder_1.def.json +++ b/resources/extruders/punchtec_connect_xl_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "punchtec_connect_xl_extruder_1", "version": 2, "name": "1", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_dual_extruder_0.def.json index 48746969d3..9294a73933 100644 --- a/resources/extruders/raise3D_N2_dual_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_dual_extruder_1.def.json index 8ea6f95b16..e09cb6b9fc 100644 --- a/resources/extruders/raise3D_N2_dual_extruder_1.def.json +++ b/resources/extruders/raise3D_N2_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json index fc7531cf1b..d8821204f0 100644 --- a/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual_extruder_0", "version": 2, "name": "Left Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json index 83f949bb22..0a6ded63a3 100644 --- a/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json +++ b/resources/extruders/raise3D_N2_plus_dual_extruder_1.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_plus_dual_extruder_1", "version": 2, "name": "Right Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/raise3D_N2_single_extruder_0.def.json b/resources/extruders/raise3D_N2_single_extruder_0.def.json index 08fedff99c..399d577110 100644 --- a/resources/extruders/raise3D_N2_single_extruder_0.def.json +++ b/resources/extruders/raise3D_N2_single_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "raise3D_N2_single_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/renkforce_rf100_extruder_0.def.json b/resources/extruders/renkforce_rf100_extruder_0.def.json index 6a7f883309..ff64e2f86a 100644 --- a/resources/extruders/renkforce_rf100_extruder_0.def.json +++ b/resources/extruders/renkforce_rf100_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "renkforce_rf100_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_3rdgen_extruder_0.def.json b/resources/extruders/rigid3d_3rdgen_extruder_0.def.json index e309086a72..edc87f695e 100644 --- a/resources/extruders/rigid3d_3rdgen_extruder_0.def.json +++ b/resources/extruders/rigid3d_3rdgen_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_3rdgen_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_extruder_0.def.json b/resources/extruders/rigid3d_extruder_0.def.json index e34987cd6e..eaac6b16a0 100644 --- a/resources/extruders/rigid3d_extruder_0.def.json +++ b/resources/extruders/rigid3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_hobby_extruder_0.def.json b/resources/extruders/rigid3d_hobby_extruder_0.def.json index 681aeecb43..68dd523af3 100644 --- a/resources/extruders/rigid3d_hobby_extruder_0.def.json +++ b/resources/extruders/rigid3d_hobby_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_hobby_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_mucit_extruder_0.def.json b/resources/extruders/rigid3d_mucit_extruder_0.def.json index af3f54e150..de72db7a33 100644 --- a/resources/extruders/rigid3d_mucit_extruder_0.def.json +++ b/resources/extruders/rigid3d_mucit_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_mucit_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_zero2_extruder_0.def.json b/resources/extruders/rigid3d_zero2_extruder_0.def.json index 30d1dbb3c4..051ce2384d 100644 --- a/resources/extruders/rigid3d_zero2_extruder_0.def.json +++ b/resources/extruders/rigid3d_zero2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigid3d_zero_extruder_0.def.json b/resources/extruders/rigid3d_zero_extruder_0.def.json index 6c5ae10ddb..76a8fceaae 100644 --- a/resources/extruders/rigid3d_zero_extruder_0.def.json +++ b/resources/extruders/rigid3d_zero_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigid3d_zero_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigidbot_big_extruder_0.def.json b/resources/extruders/rigidbot_big_extruder_0.def.json index 2b07adaaaa..9ef72d5203 100644 --- a/resources/extruders/rigidbot_big_extruder_0.def.json +++ b/resources/extruders/rigidbot_big_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot_big_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/rigidbot_extruder_0.def.json b/resources/extruders/rigidbot_extruder_0.def.json index 32ce3fc1c3..9155be0ff1 100644 --- a/resources/extruders/rigidbot_extruder_0.def.json +++ b/resources/extruders/rigidbot_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "rigidbot_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/robo_3d_r1_extruder_0.def.json b/resources/extruders/robo_3d_r1_extruder_0.def.json index 0872e91a11..60811842ac 100644 --- a/resources/extruders/robo_3d_r1_extruder_0.def.json +++ b/resources/extruders/robo_3d_r1_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "robo_3d_r1_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/seemecnc_artemis_extruder_0.def.json b/resources/extruders/seemecnc_artemis_extruder_0.def.json index a709a80cbf..a86e5eb2bd 100644 --- a/resources/extruders/seemecnc_artemis_extruder_0.def.json +++ b/resources/extruders/seemecnc_artemis_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "seemecnc_artemis_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/seemecnc_v32_extruder_0.def.json b/resources/extruders/seemecnc_v32_extruder_0.def.json index 5bd489e537..b223116be3 100644 --- a/resources/extruders/seemecnc_v32_extruder_0.def.json +++ b/resources/extruders/seemecnc_v32_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "seemecnc_v32_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/skriware_2_extruder_0.def.json b/resources/extruders/skriware_2_extruder_0.def.json new file mode 100644 index 0000000000..0569600094 --- /dev/null +++ b/resources/extruders/skriware_2_extruder_0.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Left Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "skriware_2", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/skriware_2_extruder_1.def.json b/resources/extruders/skriware_2_extruder_1.def.json new file mode 100644 index 0000000000..d6fa76e1a0 --- /dev/null +++ b/resources/extruders/skriware_2_extruder_1.def.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "name": "Right Extruder", + "inherits": "fdmextruder", + "metadata": { + "machine": "skriware_2", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_size": { "default_value": 0.4 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/stereotech_start_extruder_0.def.json b/resources/extruders/stereotech_start_extruder_0.def.json index 8658944ebd..b0a1e91d1c 100644 --- a/resources/extruders/stereotech_start_extruder_0.def.json +++ b/resources/extruders/stereotech_start_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "stereotech_start_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/stereotech_ste320_1st.def.json b/resources/extruders/stereotech_ste320_1st.def.json index ffbf5bde2f..8110775d33 100644 --- a/resources/extruders/stereotech_ste320_1st.def.json +++ b/resources/extruders/stereotech_ste320_1st.def.json @@ -1,5 +1,4 @@ { - "id": "stereotech_ste320_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/stereotech_ste320_2nd.def.json b/resources/extruders/stereotech_ste320_2nd.def.json index ae1b8f0f15..12a1479164 100644 --- a/resources/extruders/stereotech_ste320_2nd.def.json +++ b/resources/extruders/stereotech_ste320_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "stereotech_ste320_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/strateo3d_left_extruder.def.json b/resources/extruders/strateo3d_left_extruder.def.json index 1df8eb0ebb..096b265030 100644 --- a/resources/extruders/strateo3d_left_extruder.def.json +++ b/resources/extruders/strateo3d_left_extruder.def.json @@ -1,5 +1,4 @@ { - "id": "strateo3d_left_extruder", "version": 2, "name": "Left Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/strateo3d_right_extruder.def.json b/resources/extruders/strateo3d_right_extruder.def.json index ea59870329..24acdef8b5 100644 --- a/resources/extruders/strateo3d_right_extruder.def.json +++ b/resources/extruders/strateo3d_right_extruder.def.json @@ -1,5 +1,4 @@ { - "id": "strateo3d_right_extruder", "version": 2, "name": "Right Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json b/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json index 8436dc0a94..c63f740f11 100644 --- a/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json +++ b/resources/extruders/structur3d_discov3ry1_complete_um2plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "structur3d_discov3ry1_complete_um2plus_extruder_0", "version": 2, "name": "Discov3ry Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/tam_extruder_0.def.json b/resources/extruders/tam_extruder_0.def.json index fc53efad3f..f487a6ff90 100644 --- a/resources/extruders/tam_extruder_0.def.json +++ b/resources/extruders/tam_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tam_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_blackwidow_extruder_0.def.json b/resources/extruders/tevo_blackwidow_extruder_0.def.json index 125cf19c98..3450b36ac6 100644 --- a/resources/extruders/tevo_blackwidow_extruder_0.def.json +++ b/resources/extruders/tevo_blackwidow_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_blackwidow_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_tarantula_extruder_0.def.json b/resources/extruders/tevo_tarantula_extruder_0.def.json index bc43986814..a2ac48c06d 100644 --- a/resources/extruders/tevo_tarantula_extruder_0.def.json +++ b/resources/extruders/tevo_tarantula_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tarantula_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tevo_tornado_extruder_0.def.json b/resources/extruders/tevo_tornado_extruder_0.def.json index b47a757113..6c0c9f39b1 100644 --- a/resources/extruders/tevo_tornado_extruder_0.def.json +++ b/resources/extruders/tevo_tornado_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tevo_tornado_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON b/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON index 59e9311e50..282d9d2651 100644 --- a/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON +++ b/resources/extruders/tizyx_evy_dual_extruder_0.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_dual_extruder_0", "version": 2, "name": "Classic Extruder", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON b/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON index cf5dc76caa..69e4a60952 100644 --- a/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON +++ b/resources/extruders/tizyx_evy_dual_extruder_1.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_dual_extruder_1", "version": 2, "name": "Direct Drive", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_evy_extruder_0.def.JSON b/resources/extruders/tizyx_evy_extruder_0.def.JSON index bd3c4c9792..4f93648491 100644 --- a/resources/extruders/tizyx_evy_extruder_0.def.JSON +++ b/resources/extruders/tizyx_evy_extruder_0.def.JSON @@ -1,5 +1,4 @@ { - "id": "tizyx_evy_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/tizyx_k25_extruder_0.def.json b/resources/extruders/tizyx_k25_extruder_0.def.json index 409198d77c..626fedf434 100644 --- a/resources/extruders/tizyx_k25_extruder_0.def.json +++ b/resources/extruders/tizyx_k25_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "tizyx_k25_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json b/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json index b04ca0dcbf..749a5ed77d 100644 --- a/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json +++ b/resources/extruders/ubuild-3d_mr_bot_280_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ubuild-3d_mr_bot_280_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extended_extruder_0.def.json b/resources/extruders/ultimaker2_extended_extruder_0.def.json index 6387ec72ed..cc7306a393 100644 --- a/resources/extruders/ultimaker2_extended_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extended_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json b/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json index 39fc665ff2..337c120097 100644 --- a/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extended_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extended_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_extruder_0.def.json b/resources/extruders/ultimaker2_extruder_0.def.json index 2daf57c73f..64ac8698f1 100644 --- a/resources/extruders/ultimaker2_extruder_0.def.json +++ b/resources/extruders/ultimaker2_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_go_extruder_0.def.json b/resources/extruders/ultimaker2_go_extruder_0.def.json index 4c258e237e..5ddcfbd551 100644 --- a/resources/extruders/ultimaker2_go_extruder_0.def.json +++ b/resources/extruders/ultimaker2_go_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_go_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker2_plus_extruder_0.def.json b/resources/extruders/ultimaker2_plus_extruder_0.def.json index 13ab0c59ea..abf36c0b08 100644 --- a/resources/extruders/ultimaker2_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker2_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker2_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extended_extruder_left.def.json b/resources/extruders/ultimaker3_extended_extruder_left.def.json index 2d81424bc6..fbc49a1f32 100644 --- a/resources/extruders/ultimaker3_extended_extruder_left.def.json +++ b/resources/extruders/ultimaker3_extended_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extended_extruder_right.def.json b/resources/extruders/ultimaker3_extended_extruder_right.def.json index 7cdd5876c1..fbe6bcc878 100644 --- a/resources/extruders/ultimaker3_extended_extruder_right.def.json +++ b/resources/extruders/ultimaker3_extended_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extended_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extruder_left.def.json b/resources/extruders/ultimaker3_extruder_left.def.json index 9f5ed34692..b18e2decfa 100644 --- a/resources/extruders/ultimaker3_extruder_left.def.json +++ b/resources/extruders/ultimaker3_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker3_extruder_right.def.json b/resources/extruders/ultimaker3_extruder_right.def.json index 7298a552b7..4753fde489 100644 --- a/resources/extruders/ultimaker3_extruder_right.def.json +++ b/resources/extruders/ultimaker3_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker3_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_dual_1st.def.json b/resources/extruders/ultimaker_original_dual_1st.def.json index 3d837fc989..acc8168d94 100644 --- a/resources/extruders/ultimaker_original_dual_1st.def.json +++ b/resources/extruders/ultimaker_original_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_dual_2nd.def.json b/resources/extruders/ultimaker_original_dual_2nd.def.json index 80cc17c58d..7907571e66 100644 --- a/resources/extruders/ultimaker_original_dual_2nd.def.json +++ b/resources/extruders/ultimaker_original_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_dual_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_extruder_0.def.json b/resources/extruders/ultimaker_original_extruder_0.def.json index 4aab693212..30df96df58 100644 --- a/resources/extruders/ultimaker_original_extruder_0.def.json +++ b/resources/extruders/ultimaker_original_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_original_plus_extruder_0.def.json b/resources/extruders/ultimaker_original_plus_extruder_0.def.json index 91d0751861..fec40e93a9 100644 --- a/resources/extruders/ultimaker_original_plus_extruder_0.def.json +++ b/resources/extruders/ultimaker_original_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_original_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s3_extruder_left.def.json b/resources/extruders/ultimaker_s3_extruder_left.def.json new file mode 100644 index 0000000000..7af6f7d0dc --- /dev/null +++ b/resources/extruders/ultimaker_s3_extruder_left.def.json @@ -0,0 +1,29 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "ultimaker_s3", + "position": "0" + }, + + "overrides": { + "extruder_nr": { + "default_value": 0, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 0 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "default_value": 180 }, + "machine_extruder_start_pos_y": { "default_value": 180 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "default_value": 180 }, + "machine_extruder_end_pos_y": { "default_value": 180 }, + "machine_nozzle_head_distance": { "default_value": 2.7 }, + "extruder_prime_pos_x": { "default_value": -3 }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 } + } +} diff --git a/resources/extruders/ultimaker_s3_extruder_right.def.json b/resources/extruders/ultimaker_s3_extruder_right.def.json new file mode 100644 index 0000000000..7199710327 --- /dev/null +++ b/resources/extruders/ultimaker_s3_extruder_right.def.json @@ -0,0 +1,29 @@ +{ + "version": 2, + "name": "Extruder 2", + "inherits": "fdmextruder", + "metadata": { + "machine": "ultimaker_s3", + "position": "1" + }, + + "overrides": { + "extruder_nr": { + "default_value": 1, + "maximum_value": "1" + }, + "machine_nozzle_offset_x": { "default_value": 22 }, + "machine_nozzle_offset_y": { "default_value": 0 }, + + "machine_extruder_start_pos_abs": { "default_value": true }, + "machine_extruder_start_pos_x": { "default_value": 180 }, + "machine_extruder_start_pos_y": { "default_value": 180 }, + "machine_extruder_end_pos_abs": { "default_value": true }, + "machine_extruder_end_pos_x": { "default_value": 180 }, + "machine_extruder_end_pos_y": { "default_value": 180 }, + "machine_nozzle_head_distance": { "default_value": 4.2 }, + "extruder_prime_pos_x": { "value": "machine_width + 3" }, + "extruder_prime_pos_y": { "default_value": 6 }, + "extruder_prime_pos_z": { "default_value": 2 } + } +} diff --git a/resources/extruders/ultimaker_s5_extruder_left.def.json b/resources/extruders/ultimaker_s5_extruder_left.def.json index 275f60bb31..24de85e9cc 100644 --- a/resources/extruders/ultimaker_s5_extruder_left.def.json +++ b/resources/extruders/ultimaker_s5_extruder_left.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5_extruder_left", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/ultimaker_s5_extruder_right.def.json b/resources/extruders/ultimaker_s5_extruder_right.def.json index 92e08f5cc5..1e0ac3eace 100644 --- a/resources/extruders/ultimaker_s5_extruder_right.def.json +++ b/resources/extruders/ultimaker_s5_extruder_right.def.json @@ -1,5 +1,4 @@ { - "id": "ultimaker_s5_extruder_right", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/uni_print_3d_extruder_0.def.json b/resources/extruders/uni_print_3d_extruder_0.def.json index d0711fd458..747fb9e020 100644 --- a/resources/extruders/uni_print_3d_extruder_0.def.json +++ b/resources/extruders/uni_print_3d_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "uni_print_3d_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/uniqbot_one_extruder_0.def.json b/resources/extruders/uniqbot_one_extruder_0.def.json index 65436ee789..0a8982559d 100644 --- a/resources/extruders/uniqbot_one_extruder_0.def.json +++ b/resources/extruders/uniqbot_one_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "uniqbot_one_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_delta_k8800_extruder_0.def.json b/resources/extruders/vertex_delta_k8800_extruder_0.def.json index 5e09046faf..05a010222f 100644 --- a/resources/extruders/vertex_delta_k8800_extruder_0.def.json +++ b/resources/extruders/vertex_delta_k8800_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_delta_k8800_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_dual_1st.def.json b/resources/extruders/vertex_k8400_dual_1st.def.json index 86fb2266ba..947cfbc7d8 100644 --- a/resources/extruders/vertex_k8400_dual_1st.def.json +++ b/resources/extruders/vertex_k8400_dual_1st.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual_1st", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_dual_2nd.def.json b/resources/extruders/vertex_k8400_dual_2nd.def.json index 306b2dcb7a..e606e46337 100644 --- a/resources/extruders/vertex_k8400_dual_2nd.def.json +++ b/resources/extruders/vertex_k8400_dual_2nd.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_dual_2nd", "version": 2, "name": "Extruder 2", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_k8400_extruder_0.def.json b/resources/extruders/vertex_k8400_extruder_0.def.json index c03453b519..e0304f57bd 100644 --- a/resources/extruders/vertex_k8400_extruder_0.def.json +++ b/resources/extruders/vertex_k8400_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "vertex_k8400_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/vertex_nano_k8600_extruder_0.def.json b/resources/extruders/vertex_nano_k8600_extruder_0.def.json new file mode 100644 index 0000000000..cfb2d11217 --- /dev/null +++ b/resources/extruders/vertex_nano_k8600_extruder_0.def.json @@ -0,0 +1,15 @@ +{ + "version": 2, + "name": "Extruder 1", + "inherits": "fdmextruder", + "metadata": { + "machine": "vertex_nano_k8600", + "position": "0" + }, + + "overrides": { + "extruder_nr": { "default_value": 0 }, + "machine_nozzle_size": { "default_value": 0.35 }, + "material_diameter": { "default_value": 1.75 } + } +} diff --git a/resources/extruders/wanhao_d4s_extruder_0.def.json b/resources/extruders/wanhao_d4s_extruder_0.def.json index 9a750e072c..bd6023faf4 100644 --- a/resources/extruders/wanhao_d4s_extruder_0.def.json +++ b/resources/extruders/wanhao_d4s_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d4s_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d6_extruder_0.def.json b/resources/extruders/wanhao_d6_extruder_0.def.json index a8a3bf15d3..093546eabf 100644 --- a/resources/extruders/wanhao_d6_extruder_0.def.json +++ b/resources/extruders/wanhao_d6_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d6_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d6_plus_extruder_0.def.json b/resources/extruders/wanhao_d6_plus_extruder_0.def.json index b2b1e6ab05..acc5b66072 100644 --- a/resources/extruders/wanhao_d6_plus_extruder_0.def.json +++ b/resources/extruders/wanhao_d6_plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d6_plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_d9_extruder_0.def.json b/resources/extruders/wanhao_d9_extruder_0.def.json index 76d501e5a2..40fcf422f5 100644 --- a/resources/extruders/wanhao_d9_extruder_0.def.json +++ b/resources/extruders/wanhao_d9_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_d9_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_duplicator5S_extruder_0.def.json b/resources/extruders/wanhao_duplicator5S_extruder_0.def.json index 74f47158a3..7274d5117e 100644 --- a/resources/extruders/wanhao_duplicator5S_extruder_0.def.json +++ b/resources/extruders/wanhao_duplicator5S_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_duplicator5S_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json b/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json index 8c91de4685..3479c94e35 100644 --- a/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json +++ b/resources/extruders/wanhao_duplicator5Smini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_duplicator5Smini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3_extruder_0.def.json b/resources/extruders/wanhao_i3_extruder_0.def.json index 7d881079c4..387a456ff2 100644 --- a/resources/extruders/wanhao_i3_extruder_0.def.json +++ b/resources/extruders/wanhao_i3_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3mini_extruder_0.def.json b/resources/extruders/wanhao_i3mini_extruder_0.def.json index c5abbd175e..2d52f0d126 100644 --- a/resources/extruders/wanhao_i3mini_extruder_0.def.json +++ b/resources/extruders/wanhao_i3mini_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3mini_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/wanhao_i3plus_extruder_0.def.json b/resources/extruders/wanhao_i3plus_extruder_0.def.json index 0dae64ce63..103e3b9335 100644 --- a/resources/extruders/wanhao_i3plus_extruder_0.def.json +++ b/resources/extruders/wanhao_i3plus_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "wanhao_i3plus_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/z-bolt_extruder_0.def.json b/resources/extruders/z-bolt_extruder_0.def.json index 70e9f6177c..04c8d10cbb 100644 --- a/resources/extruders/z-bolt_extruder_0.def.json +++ b/resources/extruders/z-bolt_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "z-bolt_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/zone3d_printer_extruder_0.def.json b/resources/extruders/zone3d_printer_extruder_0.def.json index ca024dd5c4..fb8f40d3e2 100644 --- a/resources/extruders/zone3d_printer_extruder_0.def.json +++ b/resources/extruders/zone3d_printer_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "zone3d_printer_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/extruders/zyyx_agile_extruder_0.def.json b/resources/extruders/zyyx_agile_extruder_0.def.json index edda9b3097..c01ffb59f3 100644 --- a/resources/extruders/zyyx_agile_extruder_0.def.json +++ b/resources/extruders/zyyx_agile_extruder_0.def.json @@ -1,5 +1,4 @@ { - "id": "zyyx_agile_extruder_0", "version": 2, "name": "Extruder 1", "inherits": "fdmextruder", diff --git a/resources/i18n/cura.pot b/resources/i18n/cura.pot index 669f248a0d..40a0c03721 100644 --- a/resources/i18n/cura.pot +++ b/resources/i18n/cura.pot @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -74,56 +74,47 @@ msgctxt "@action" msgid "Update Firmware" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "" "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "" +"A print is still in progress. Cura cannot start another print via USB until " +"the previous print has completed." msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 @@ -160,7 +151,7 @@ msgid "Save to Removable Drive {0}" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "" @@ -197,10 +188,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "" @@ -229,9 +219,9 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "" @@ -258,355 +248,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "" - -#: /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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "" - -#: /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: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: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: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 "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "" +"New printers have been found connected to your account, you can find them in " +"your list of discovered printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"You are attempting to connect to {0} but it is not the host of a group. You " +"can visit the web page to configure it as a group host." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "" +"You are attempting to connect to a printer that is not running Ultimaker " +"Connect. Please update the printer to the latest firmware." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "" +"Cura has detected material profiles that were not yet installed on the host " +"printer of group {0}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" msgstr "" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 @@ -614,7 +413,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "" @@ -645,12 +444,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "" @@ -705,6 +504,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "" @@ -781,12 +610,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "" @@ -797,13 +626,13 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" @@ -812,7 +641,7 @@ msgid "" "instead." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "" @@ -827,18 +656,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "" "Make sure the g-code is suitable for your printer and printer configuration " @@ -894,16 +723,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -924,7 +743,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -940,19 +758,24 @@ msgctxt "@info:title" msgid "Login failed" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "" @@ -960,38 +783,45 @@ msgid "" "overwrite it?" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, python-format -msgctxt "@info:generic" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." msgid "" -"Settings have been changed to match the current availability of extruders: " -"[%s]" +"Settings have been changed to match the current availability of extruders:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Failed to export profile to {0}: {1}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "" @@ -999,44 +829,44 @@ msgid "" "failure." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "" "Can't import profile from {0} before a printer is added." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "" @@ -1044,49 +874,41 @@ msgid "" "import it." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "" -"The machine defined in profile {0} ({1}) doesn't match " -"with your current machine ({2}), could not import it." -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1152,19 +974,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1172,76 +993,129 @@ 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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "" +"The visual profile is designed to print visual prototypes and models with " +"the intent of high visual and surface quality." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "" +"The engineering profile is designed to print functional prototypes and end-" +"use parts with the intent of better accuracy and for closer tolerances." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "" +"The draft profile is designed to print initial prototypes and concept " +"validation with the intent of significant print time reduction." +msgstr "" + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" -msgid "Unknown" +msgid "Custom Material" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 +msgctxt "@label" +msgid "Custom" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/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:104 +#: /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: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:90 msgctxt "@info:status" msgid "" "The build volume height has been reduced due to the value of the \"Print " "Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "" @@ -1266,39 +1140,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "" @@ -1446,30 +1320,37 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "" "@info 'width', 'depth' and 'height' are variable names that must NOT be " @@ -1477,24 +1358,24 @@ msgctxt "" msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "" @@ -1507,15 +1388,15 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "" @@ -1547,50 +1428,55 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "" @@ -1620,22 +1506,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "" @@ -1646,7 +1532,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "" @@ -1662,16 +1548,16 @@ msgctxt "@label" msgid "ratings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "" @@ -1681,49 +1567,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1786,17 +1672,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "" @@ -1854,27 +1740,47 @@ msgctxt "@label" msgid "Featured" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "" @@ -1984,71 +1890,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "" -"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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "" @@ -2058,217 +1969,202 @@ msgctxt "@label" msgid "Queued" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" msgid "" "To print directly to your printer over the network, please make sure your " "printer is connected to the network using a network cable or by connecting " "your printer to your WIFI network. If you don't connect Cura with your " "printer, you can still use a USB drive to transfer g-code files to your " -"printer.\n" -"\n" -"Select your printer from the list below:" +"printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "" "If your printer is not listed, read the network printing " "troubleshooting guide" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." +msgid "Enter the IP address of your printer on the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "" @@ -2357,7 +2253,7 @@ msgctxt "@action:button" msgid "Override" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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 "" @@ -2365,61 +2261,52 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 @@ -2635,70 +2522,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "" @@ -2725,6 +2611,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2738,7 +2629,7 @@ msgid "Printer Group" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "" @@ -2749,75 +2640,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "" msgstr[1] "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "" @@ -2930,48 +2827,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -3063,174 +2918,180 @@ 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:72 msgctxt "@title" msgid "Information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "" "The new filament diameter is set to %1 mm, which is not compatible with the " "current extruder. Do you wish to continue?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "" "Could not import material %1: %2" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "" "Failed to export material to %1: %2" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "" @@ -3245,248 +3106,282 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 msgctxt "@label" msgid "Interface" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "" "You will need to restart the application for these changes to have effect." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "" "Highlight unsupported areas of the model in red. Without support these areas " "will not print properly." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "" "Moves the camera so the model is in the center of the view when a model is " "selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "" +"Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "" "Should models on the platform be moved so that they no longer intersect?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "" "An model may appear extremely small if its unit is for example in meters " "rather than millimeters. Should these models be scaled up?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "" "Should a prefix based on the printer name be added to the print job name " "automatically?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "" "When you have made changes to a profile and switched to a different one, a " @@ -3494,50 +3389,51 @@ msgid "" "not, or you can choose a default behaviour and never show that dialog again." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "" "Default behavior for changed setting values when switching to a different " "profile: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "" "Should anonymous data about your print be sent to Ultimaker? Note, no " @@ -3545,134 +3441,108 @@ msgid "" "stored." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 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:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "" "This profile uses the defaults specified by the printer, so it has no " "settings/overrides in the list below." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "" @@ -3734,36 +3604,36 @@ msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +msgid "Search settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "" @@ -3777,36 +3647,36 @@ msgid "" "Click to make these settings visible." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "" "This setting is always shared between all extruders. Changing it here will " "change the value for all extruders." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3814,7 +3684,7 @@ msgid "" "Click to restore the value of the profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value " @@ -3823,12 +3693,25 @@ msgid "" "Click to restore the calculated value." msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "" +"@label %1 is filled in with the type of a profile. %2 is filled with a list " +"of numbers (eg '1' or '1, 2')" +msgid "" +"There is no %1 profile for the configuration in extruder %2. The default " +"intent will be used instead" +msgid_plural "" +"There is no %1 profile for the configurations in extruders %2. The default " +"intent will be used instead" +msgstr[0] "" +msgstr[1] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "" @@ -3856,44 +3739,25 @@ msgid "" "Without these structures, such parts would collapse during printing." 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 "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "" "You have modified some profile settings. If you want to change these go to " "custom mode." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "" -"A custom profile is currently active. To enable the quality slider, choose a " -"default quality profile in Custom tab" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3904,12 +3768,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the " @@ -3918,6 +3787,11 @@ msgid "" "Click to open the profile manager." msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3953,48 +3827,48 @@ 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 "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "" "The target temperature of the hotend. The hotend will heat up or cool down " "towards this temperature. If this is 0, the hotend heating is turned off." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "" "Heat the hotend in advance before printing. You can continue adjusting your " @@ -4002,17 +3876,17 @@ msgid "" "up when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "" @@ -4057,12 +3931,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "" @@ -4082,42 +3956,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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 "" @@ -4137,17 +4016,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "" @@ -4176,12 +4055,12 @@ msgctxt "@header" msgid "Configurations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "" @@ -4212,12 +4091,12 @@ msgctxt "@label" msgid "Enabled" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "" @@ -4239,22 +4118,22 @@ 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 "" @@ -4264,6 +4143,11 @@ msgctxt "@label" msgid "View type" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4312,32 +4196,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "" @@ -4372,233 +4261,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:166 msgctxt "@action:inmenu" msgid "Configure Cura..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:164 +#: /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:170 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "" @@ -4613,39 +4507,39 @@ msgctxt "@label" msgid "This package will be installed after restarting." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "" "We have found one or more G-Code files within the files you have selected. " @@ -4653,12 +4547,12 @@ msgid "" "file, please just select only one." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "" @@ -4727,139 +4621,139 @@ msgctxt "@title:window" msgid "About Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "" @@ -4882,32 +4776,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "" @@ -5090,12 +4979,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "" @@ -5152,23 +5041,36 @@ msgctxt "@button" msgid "Get started" 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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" 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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "" + #: MachineSettingsAction/plugin.json msgctxt "description" -msgid "Provides a way to change machine settings (such as build volume, nozzle size, etc.)." +msgid "" +"Provides a way to change machine settings (such as build volume, nozzle " +"size, etc.)." msgstr "" #: MachineSettingsAction/plugin.json @@ -5218,7 +5120,9 @@ msgstr "" #: ModelChecker/plugin.json msgctxt "description" -msgid "Checks models and print configuration for possible printing issues and give suggestions." +msgid "" +"Checks models and print configuration for possible printing issues and give " +"suggestions." msgstr "" #: ModelChecker/plugin.json @@ -5226,16 +5130,6 @@ msgctxt "name" msgid "Model Checker" msgstr "" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5246,19 +5140,20 @@ msgctxt "name" msgid "Firmware Updater" msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." +msgid "Provides support for reading AMF files." msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" +msgid "AMF Reader" msgstr "" #: USBPrinting/plugin.json msgctxt "description" -msgid "Accepts G-Code and sends them to a printer. Plugin can also update firmware." +msgid "" +"Accepts G-Code and sends them to a printer. Plugin can also update firmware." msgstr "" #: USBPrinting/plugin.json @@ -5266,16 +5161,6 @@ msgctxt "name" msgid "USB printing" msgstr "" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "" - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5318,22 +5203,12 @@ msgstr "" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." +msgid "Manages network connections to Ultimaker networked printers." msgstr "" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -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" +msgid "Ultimaker Network Connection" msgstr "" #: MonitorStage/plugin.json @@ -5388,7 +5263,8 @@ msgstr "" #: SupportEraser/plugin.json msgctxt "description" -msgid "Creates an eraser mesh to block the printing of support in certain places" +msgid "" +"Creates an eraser mesh to block the printing of support in certain places" msgstr "" #: SupportEraser/plugin.json @@ -5466,6 +5342,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5526,6 +5412,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5556,6 +5452,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5566,6 +5472,16 @@ msgctxt "name" msgid "Image Reader" msgstr "" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5596,16 +5512,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "" - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5646,16 +5552,6 @@ 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." @@ -5678,7 +5574,9 @@ msgstr "" #: UltimakerMachineActions/plugin.json msgctxt "description" -msgid "Provides machine actions for Ultimaker machines (such as bed leveling wizard, selecting upgrades, etc.)." +msgid "" +"Provides machine actions for Ultimaker machines (such as bed leveling " +"wizard, selecting upgrades, etc.)." msgstr "" #: UltimakerMachineActions/plugin.json @@ -5695,4 +5593,3 @@ msgstr "" msgctxt "name" msgid "Cura Profile Reader" msgstr "" - diff --git a/resources/i18n/de_DE/cura.po b/resources/i18n/de_DE/cura.po index 3e80e8accc..3b0073bc31 100644 --- a/resources/i18n/de_DE/cura.po +++ b/resources/i18n/de_DE/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:32+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: German\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: German , German \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Geräteeinstellungen" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-Code-Datei" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter unterstützt keinen Nicht-Textmodus." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Vor dem Exportieren bitte G-Code vorbereiten." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D-Modell-Assistent" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "Firmware aktualisieren" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Einstellungen Glätten aktiv" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF-Datei" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Das Profil wurde geglättet und aktiviert." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-Drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Über USB drucken" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Über USB verbunden" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Ein USB-Druck wird ausgeführt. Das Schließen von Cura beendet diesen Druck. Sind Sie sicher?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-Datei" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Druck wird bearbeitet. Cura kann keinen weiteren Druck via USB starten, bis der vorherige Druck abgeschlossen wurde." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Schreibt X3g in Dateien" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g-Datei" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Druck in Bearbeitung" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Auf Wechseldatenträger speichern {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Es sind keine Dateiformate zum Schreiben vorhanden!" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Konnte nicht auf dem Wechseldatenträger gespeichert werden {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Fehler" @@ -229,9 +217,9 @@ msgstr "Wechseldatenträger auswerfen {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Warnhinweis" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Wechseldatenträger" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Über Netzwerk verbunden." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Authentifizierungsstatus" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Zugriffanforderung erneut senden" - -#: /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: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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Daten werden zum Drucker gesendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Daten werden gesendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Abbrechen" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchronisieren Ihres Druckers" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Über Netzwerk verbunden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Daten gesendet" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "In Monitor überwachen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Leer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Unbekannt" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Über Cloud drucken" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Über Cloud drucken" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Über Cloud verbunden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Cloudfehler" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Daten konnten nicht in Drucker geladen werden." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "morgen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "heute" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Über Ultimaker Cloud hochladen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "Nicht mehr für diesen Drucker nachfragen." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "Erste Schritte" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Verbunden!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Ihre Verbindung überprüfen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Anschluss über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Anleitung für Cura-Einstellungen" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Drucken über Netzwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Drücken über Netzwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Über Netzwerk verbunden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Bitte warten Sie, bis der aktuelle Druckauftrag gesendet wurde." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Druckfehler" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Neue Cloud-Drucker gefunden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Es wurden neue Drucker gefunden, die Sie zu Ihrem Konto hinzufügen können. Sie finden diese in der Liste gefundener Drucker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Diese Meldung nicht mehr anzeigen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Sie versuchen, sich mit {0} zu verbinden, aber dieser Drucker ist nicht der Host, der die Gruppe verwaltet. Besuchen Sie die Website, um den Drucker als Host der Gruppe zu konfigurieren." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Nicht Host-Drucker der Gruppe" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Gruppe konfigurieren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Druckaufträge mithilfe Ihres Ultimaker-Kontos von einem anderen Ort aus senden und überwachen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Verbinden mit Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Erste Schritte" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Druckauftrag senden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Druckauftrag wird vorbereitet." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Der Druckauftrag wurde erfolgreich an den Drucker gesendet." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Daten gesendet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Sie versuchen, sich mit einem Drucker zu verbinden, auf dem Ultimaker Connect nicht läuft. Bitte aktualisieren Sie die Firmware des Druckers." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Drucker aktualisieren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura hat Materialprofile entdeckt, die auf dem Host-Drucker der Gruppe {0} noch nicht installiert wurden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Material an Drucker senden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Daten konnten nicht in Drucker geladen werden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Netzwerkfehler" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "morgen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "heute" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Über Cloud drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Über Cloud drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Über Cloud verbunden" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Überwachen" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Zugriff auf Update-Informationen nicht möglich." @@ -625,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Schichtenansicht" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura zeigt die Schichten nicht akkurat an, wenn Wire Printing aktiviert ist" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Simulationsansicht" @@ -685,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-Bilddatei" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Öffnen Sie das komprimierte Dreiecksnetz" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -749,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Pro Objekteinstellungen konfigurieren" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Empfohlen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Benutzerdefiniert" @@ -765,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-Datei" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Düse" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Projektdatei {0} enthält einen unbekannten Maschinentyp {1}. Importieren der Maschine ist nicht möglich. Stattdessen werden die Modelle importiert." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Projektdatei öffnen" @@ -792,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-Datei" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-Code parsen" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-Code-Details" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Stellen Sie sicher, dass der G-Code für Ihren Drucker und Ihre Druckerkonfiguration geeignet ist, bevor Sie die Datei senden. Der Darstellung des G-Codes ist möglicherweise nicht korrekt." @@ -857,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura-Profil" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Profilassistent" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Profilassistent" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -887,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Vorschau" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -903,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Login fehlgeschlagen" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Nicht unterstützt" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Datei bereits vorhanden" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Die Datei {0} ist bereits vorhanden. Soll die Datei wirklich überschrieben werden?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Ungültige Datei-URL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Die Einstellungen wurden an die aktuell verfügbaren Extruder angepasst:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Einstellungen aktualisiert" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extruder deaktiviert" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Unbekannt" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Export des Profils nach {0} fehlgeschlagen: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Export des Profils nach {0} fehlgeschlagen: Fehlermeldung von Writer-Plugin." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil wurde nach {0} exportiert" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Export erfolgreich ausgeführt" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Import des Profils aus Datei {0} kann erst durchgeführt werden, wenn ein Drucker hinzugefügt wurde." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Kein benutzerdefiniertes Profil für das Importieren in Datei {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Dieses Profil {0} enthält falsche Daten, Importieren nicht möglich." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "Die Maschine, die im Profil {0} ({1}) definiert wurde, entspricht nicht Ihrer derzeitigen Maschine ({2}). Importieren nicht möglich." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil erfolgreich importiert {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Datei {0} enthält kein gültiges Profil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} hat einen unbekannten Dateityp oder ist beschädigt." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Benutzerdefiniertes Profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Für das Profil fehlt eine Qualitätsangabe." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1103,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Sonstige" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vorgeschnittene Datei {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1123,73 +953,121 @@ msgstr "Gruppe #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Schließen" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Hinzufügen" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Abbrechen" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visuell" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Das visuelle Profil wurde für den Druck visueller Prototypen und Modellen entwickelt, bei denen das Ziel eine hohe visuelle Qualität und eine hohe Oberflächenqualität" +" ist." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Das Engineering-Profil ist für den Druck von Funktionsprototypen und Endnutzungsteilen gedacht, bei denen Präzision gefragt ist und engere Toleranzen gelten." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Entwurf" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Das Entwurfsprofil wurde für erste Prototypen und die Konzeptvalidierung entwickelt, um einen deutlich schnelleren Druck zu ermöglichen." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Nicht überschrieben" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Benutzerdefinierte Profile" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Alle unterstützten Typen ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Alle Dateien (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Unbekannt" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Verfügbare vernetzte Drucker" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Benutzerdefiniertes Material" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Benutzerdefiniert" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Der/die nachfolgende(n) Drucker kann/können nicht verbunden werden, weil er/sie Teil einer Gruppe ist/sind" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Verfügbare vernetzte Drucker" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Die Höhe der Druckabmessung wurde aufgrund des Wertes der Einstellung „Druckreihenfolge“ reduziert, um eine Kollision der Brücke mit den gedruckten Modellen zu verhindern." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Produktabmessungen" @@ -1214,39 +1092,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Antwort konnte nicht gelesen werden." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Der Ultimaker-Konto-Server konnte nicht erreicht werden." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Erteilen Sie bitte die erforderlichen Freigaben bei der Autorisierung dieser Anwendung." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Bei dem Versuch, sich anzumelden, trat ein unerwarteter Fehler auf. Bitte erneut versuchen." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objekte vervielfältigen und platzieren" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Objekte platzieren" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Innerhalb der Druckabmessung für alle Objekte konnte keine Position gefunden werden" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Objekt-Platzierung" @@ -1395,53 +1273,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Geräte werden geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Erstellungen werden eingerichtet ..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Die Szene wird eingerichtet..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Die Benutzeroberfläche wird geladen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Es kann nur jeweils ein G-Code gleichzeitig geladen werden. Wichtige {0} werden übersprungen." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Wenn G-Code geladen wird, kann keine weitere Datei geöffnet werden. Wichtige {0} werden übersprungen." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Das gewählte Modell war zu klein zum Laden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Druckereinstellungen" @@ -1454,15 +1337,15 @@ msgstr "X (Breite)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1494,50 +1377,55 @@ msgstr "Heizbares Bett" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Druckraum aufgeheizt" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "G-Code-Variante" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Druckkopfeinstellungen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Brückenhöhe" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Anzahl Extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "Start G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "Ende G-Code" @@ -1567,22 +1455,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "X-Versatz Düse" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "G-Code Extruder-Ende" @@ -1593,7 +1481,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installiert" @@ -1608,16 +1496,16 @@ msgctxt "@label" msgid "ratings" msgstr "Bewertungen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plugins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materialien" @@ -1627,49 +1515,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1730,17 +1618,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Quit Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Community-Beiträge" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Community-Plugins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Generische Materialien" @@ -1801,27 +1689,47 @@ msgctxt "@label" msgid "Featured" msgstr "Unterstützter" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Kompatibilität" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Gerät" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Druckbett" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualität" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Technisches Datenblatt" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Sicherheitsdatenblatt" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Druckrichtlinien" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Website" @@ -1921,70 +1829,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Drucker verwalten" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Glas" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "Die Webcam ist nicht verfügbar, weil Sie einen Cloud-Drucker überwachen." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Lädt..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Nicht verfügbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Nicht erreichbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Leerlauf" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Unbenannt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anonym" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Erfordert Konfigurationsänderungen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Details" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Drucker nicht verfügbar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Zuerst verfügbar" @@ -1994,212 +1908,195 @@ msgctxt "@label" msgid "Queued" msgstr "In Warteschlange" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Die Warteschlange enthält keine Druckaufträge. Slicen Sie einen Auftrag und schicken Sie ihn ab, um ihn zur Warteschlange hinzuzufügen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Druckaufträge" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Druckdauer insgesamt" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Warten auf" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Alle Aufträge wurden gedruckt." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Druckauftragshistorie anzeigen" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Anschluss an vernetzten Drucker" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n" -"\n" -"Wä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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Wählen Sie Ihren Drucker aus der folgenden Liste aus:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Bearbeiten" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Entfernen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Aktualisieren" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Wenn Ihr Drucker nicht aufgeführt ist, lesen Sie die Anleitung für Fehlerbehebung für Netzwerkdruck" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Typ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Firmware-Version" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Dieser Drucker ist nicht eingerichtet um eine Gruppe von Druckern anzusteuern." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Dieser Drucker steuert eine Gruppe von %1 Druckern an." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Der Drucker unter dieser Adresse hat nicht reagiert." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Ungültige IP-Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Bitte eine gültige IP-Adresse eingeben." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Druckeradresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." +msgid "Enter the IP address of your printer on the network." +msgstr "Geben Sie die IP-Adresse Ihres Druckers in das Netzwerk ein." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Fertigstellung %1 auf %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Drucken" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Drucken über Netzwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Drucken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Druckerauswahl" @@ -2288,68 +2185,59 @@ msgctxt "@action:button" msgid "Override" msgstr "Überschreiben" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminium" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Mit einem Drucker verbinden" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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." +"- Check if the printer is connected to the network.\n" +"- Check if you are signed in to discover cloud-connected printers." 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." +"Stellen Sie sicher, dass der Drucker verbunden ist:\n" +"– Prüfen Sie, ob der Drucker eingeschaltet ist.– Prüfen Sie, ob der Drucker mit dem Netzwerk verbunden ist.\n" +"– Prüfen Sie, ob Sie angemeldet sind, falls Sie über die Cloud verbundene Drucker suchen möchten." #: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" @@ -2558,70 +2446,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Glättung" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Mesh-Typ" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normales Modell" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Als Stützstruktur drucken" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Keine Überlappung mit anderen Modellen unterstützen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Einstellungen für Überlappung mit anderen Modellen bearbeiten" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Einstellungen für Füllung von anderen Modellen bearbeiten" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Einstellungen wählen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Einstellungen für die benutzerdefinierte Anpassung dieses Modells wählen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtern..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alle anzeigen" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Mesh-Typ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normales Modell" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Als Stützstruktur drucken" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Einstellungen für Überlappungen ändern" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Überlappungen nicht unterstützen" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Nur Füllungen" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Einstellungen wählen" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Projekt öffnen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Vorhandenes aktualisieren" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Neu erstellen" @@ -2648,6 +2535,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Aktualisierung" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Neu erstellen" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2661,7 +2553,7 @@ msgid "Printer Group" msgstr "Druckergruppe" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profileinstellungen" @@ -2672,75 +2564,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Wie soll der Konflikt im Profil gelöst werden?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Name" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Nicht im Profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 überschreiben" msgstr[1] "%1 überschreibt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Ableitung von" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 überschreiben" msgstr[1] "%1, %2 überschreibt" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Materialeinstellungen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Wie soll der Konflikt im Material gelöst werden?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Sichtbarkeit einstellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modus" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Sichtbare Einstellungen:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 von %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Das Laden eines Projekts entfernt alle Modelle von der Druckplatte." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Öffnen" @@ -2847,48 +2745,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "An jedem Tag, an dem Cura gestartet wird, ein automatisches Backup erstellen." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Nicht unterstützt" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Export" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Tipp" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Druckexperiment" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Checkliste" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson-Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2974,170 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Soll das Drucken wirklich abgebrochen werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Änderung Durchmesser bestätigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Der neue Filament-Durchmesser wurde auf %1 mm eingestellt, was nicht kompatibel mit dem aktuellen Extruder ist. Möchten Sie fortfahren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Namen anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Materialtyp" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Farbe" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Eigenschaften" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Dichte" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Durchmesser" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Filamentkosten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Filamentgewicht" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Filamentlänge" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Kosten pro Meter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Dieses Material ist mit %1 verknüpft und teilt sich damit einige seiner Eigenschaften." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Material trennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Beschreibung" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Haftungsinformationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Druckeinstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Aktivieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Import" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Export" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Drucker" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Entfernen bestätigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Möchten Sie %1 wirklich entfernen? Dies kann nicht rückgängig gemacht werden!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Material importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Material konnte nicht importiert werden %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Material wurde erfolgreich importiert %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Material exportieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Exportieren des Materials nach %1: %2 schlug fehl" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material erfolgreich nach %1 exportiert" @@ -3152,414 +3014,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Alle prüfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Berechnet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Einstellung" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Aktuell" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Einheit" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Die Anwendung muss neu gestartet werden, um die Änderungen zu übernehmen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Bei Änderung der Einstellungen automatisch schneiden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch schneiden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Viewport-Verhalten" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Nicht gestützte Bereiche des Modells in rot hervorheben. Ohne Support werden diese Bereiche nicht korrekt gedruckt." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Überhang anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Bewegt die Kamera, bis sich das Modell im Mittelpunkt der Ansicht befindet, wenn ein Modell ausgewählt wurde" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Zentrieren Sie die Kamera, wenn das Element ausgewählt wurde" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Soll das standardmäßige Zoom-Verhalten von Cura umgekehrt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Kehren Sie die Richtung des Kamera-Zooms um." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Soll das Zoomen in Richtung der Maus erfolgen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Das Zoomen in Richtung der Maus wird in der orthografischen Perspektive nicht unterstützt." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "In Mausrichtung zoomen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Sollen Modelle auf der Plattform so verschoben werden, dass sie sich nicht länger überschneiden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Stellen Sie sicher, dass die Modelle getrennt gehalten werden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Sollen Modelle auf der Plattform so nach unten verschoben werden, dass sie die Druckplatte berühren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Setzt Modelle automatisch auf der Druckplatte ab" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Warnmeldung im G-Code-Reader anzeigen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Warnmeldung in G-Code-Reader" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Soll die Schicht in den Kompatibilitätsmodus gezwungen werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Schichtenansicht Kompatibilitätsmodus erzwingen (Neustart erforderlich)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Sollte Cura sich an der Stelle öffnen, an der das Programm geschlossen wurde?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Fensterposition beim Start wiederherstellen" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Welches Kamera-Rendering sollte verwendet werden?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Kamera-Rendering:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Ansicht" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Orthogonal" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Dateien öffnen und speichern" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Sollen Modelle an das Erstellungsvolumen angepasst werden, wenn sie zu groß sind?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Große Modelle anpassen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Ein Modell kann extrem klein erscheinen, wenn seine Maßeinheit z. B. in Metern anstelle von Millimetern angegeben ist. Sollen diese Modelle hoch skaliert werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extrem kleine Modelle skalieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Sollten Modelle gewählt werden, nachdem sie geladen wurden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Modelle wählen, nachdem sie geladen wurden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Soll ein Präfix anhand des Druckernamens automatisch zum Namen des Druckauftrags hinzugefügt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Geräte-Präfix zu Auftragsnamen hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Soll beim Speichern einer Projektdatei eine Zusammenfassung angezeigt werden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Dialog Zusammenfassung beim Speichern eines Projekts anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Standardverhalten beim Öffnen einer Projektdatei" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Standardverhalten beim Öffnen einer Projektdatei: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Stets nachfragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Immer als Projekt öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Modelle immer importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Wenn Sie Änderungen für ein Profil vorgenommen haben und zu einem anderen Profil gewechselt sind, wird ein Dialog angezeigt, der hinterfragt, ob Sie Ihre Änderungen beibehalten möchten oder nicht; optional können Sie ein Standardverhalten wählen, sodass dieser Dialog nicht erneut angezeigt wird." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Standardverhalten für geänderte Einstellungswerte beim Wechsel zu einem anderen Profil: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Stets nachfragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Geänderte Einstellungen immer verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Geänderte Einstellungen immer auf neues Profil übertragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privatsphäre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Soll Cura bei Programmstart nach Updates suchen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bei Start nach Updates suchen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Sollen anonyme Daten über Ihren Druck an Ultimaker gesendet werden? Beachten Sie, dass keine Modelle, IP-Adressen oder andere personenbezogene Daten gesendet oder gespeichert werden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonyme) Druckinformationen senden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Mehr Informationen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Mehrfach-Druckplattenfunktion verwenden" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Umbenennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Profil erstellen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Geben Sie bitte einen Namen für dieses Profil an." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profil duplizieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profil umbenennen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profil importieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profil exportieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Drucker: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Standardprofile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Profil mit aktuellen Einstellungen/Überschreibungen aktualisieren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Aktuelle Änderungen verwerfen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Dieses Profil verwendet die vom Drucker festgelegten Standardeinstellungen, deshalb sind in der folgenden Liste keine Einstellungen/Überschreibungen enthalten." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Ihre aktuellen Einstellungen stimmen mit dem gewählten Profil überein." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Globale Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Marktplatz" @@ -3619,36 +3489,36 @@ msgstr "Unbenannt" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Werte für alle Extruder kopieren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Alle geänderten Werte für alle Extruder kopieren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Diese Einstellung ausblenden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Diese Einstellung weiterhin anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Sichtbarkeit einstellen wird konfiguriert..." @@ -3664,32 +3534,32 @@ msgstr "" "\n" "Klicken Sie, um diese Einstellungen sichtbar zu machen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Diese Einstellung wird stets zwischen allen Extrudern geteilt. Eine Änderung ändert den Wert für alle Extruder." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Der Wert wird von Pro-Extruder-Werten gelöst " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3700,7 +3570,7 @@ msgstr "" "\n" "Klicken Sie, um den Wert des Profils wiederherzustellen." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3711,12 +3581,19 @@ msgstr "" "\n" "Klicken Sie, um den berechneten Wert wiederherzustellen." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Empfohlen" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Benutzerdefiniert" @@ -3741,36 +3618,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Damit werden Strukturen zur Unterstützung von Modellteilen mit Überhängen generiert. Ohne diese Strukturen würden solche Teile während des Druckvorgangs zusammenfallen." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Schichtdicke" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Sie haben einige Profileinstellungen geändert. Wenn Sie diese ändern möchten, wechseln Sie in den Modus „Benutzerdefiniert“." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "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 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Ein benutzerdefiniertes Profil ist derzeit aktiv. Wählen Sie ein voreingestelltes Qualitätsprofil aus der Registerkarte „Benutzerdefiniert“, um den Schieberegler für Qualität zu aktivieren" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3781,12 +3643,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Aus" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimentell" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3797,6 +3664,11 @@ msgstr "" "\n" "Klicken Sie, um den Profilmanager zu öffnen." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Benutzerdefinierte Profile" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3832,59 +3704,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extruder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Die Zieltemperatur des Hotend. Das Hotend wird auf diese Temperatur aufgeheizt oder abgekühlt. Wenn der Wert 0 beträgt, wird die Hotend-Heizung ausgeschaltet." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Die aktuelle Temperatur dieses Hotends." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Die Temperatur, auf die das Hotend vorgeheizt wird." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Abbrechen" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Vorheizen" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Heizen Sie das Hotend vor Druckbeginn auf. Sie können Ihren Druck während des Aufheizens weiter anpassen und müssen nicht warten, bis das Hotend aufgeheizt ist, wenn Sie druckbereit sind." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Die Farbe des Materials in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Das Material in diesem Extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Die in diesem Extruder eingesetzte Düse." @@ -3924,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoriten" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Generisch" @@ -3949,42 +3821,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Dr&ucker" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Als aktiven Extruder festlegen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Extruder aktivieren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Extruder deaktivieren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Druckplatte" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Kameraposition" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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" @@ -4004,17 +3881,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Sichtbarkeit einstellen verwalten..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Speichern..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Exportieren..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Auswahl exportieren..." @@ -4043,12 +3920,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Konfigurationen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Konfiguration wählen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Konfigurationen" @@ -4078,12 +3955,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Aktiviert" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Für diese Materialkombination Kleber für eine bessere Haftung verwenden." @@ -4103,22 +3980,22 @@ 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" @@ -4128,6 +4005,11 @@ msgctxt "@label" msgid "View type" msgstr "Typ anzeigen" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Objektliste" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4179,32 +4061,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Keine Kostenschätzung verfügbar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" msgstr "Slicing nicht möglich" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Abbrechen" @@ -4239,233 +4126,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Voreingestellte Drucker" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Marktplatz" @@ -4480,49 +4372,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Einstellungen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura wird geschlossen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Möchten Sie Cura wirklich beenden?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Paket installieren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Datei(en) öffnen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Es wurden eine oder mehrere G-Code-Datei(en) innerhalb der von Ihnen gewählten Dateien gefunden. Sie können nur eine G-Code-Datei auf einmal öffnen. Wenn Sie eine G-Code-Datei öffnen möchten wählen Sie bitte nur eine Datei." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Drucker hinzufügen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Neuheiten" @@ -4593,17 +4485,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Über Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "Version: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Komplettlösung für den 3D-Druck mit geschmolzenem Filament." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4612,122 +4504,122 @@ 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 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Grafische Benutzerschnittstelle" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Anwendungsrahmenwerk" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "G-Code-Generator" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Bibliothek Interprozess-Kommunikation" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Programmiersprache" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI-Rahmenwerk" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUI-Rahmenwerk Einbindungen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C/C++ Einbindungsbibliothek" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Format Datenaustausch" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Support-Bibliothek für wissenschaftliche Berechnung" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Support-Bibliothek für schnelleres Rechnen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Support-Bibliothek für die Handhabung von STL-Dateien" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Support-Bibliothek für die Handhabung von ebenen Objekten" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Support-Bibliothek für die Handhabung von dreieckigen Netzen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Support-Bibliothek für die Analyse von komplexen Netzwerken" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Support-Bibliothek für die Handhabung von 3MF-Dateien" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Support-Bibliothek für Datei-Metadaten und Streaming" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Bibliothek für serielle Kommunikation" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Bibliothek für ZeroConf-Erkennung" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Bibliothek für Polygon-Beschneidung" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Bibliothek für Python HTTP" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Schriftart" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG-Symbole" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Distributionsunabhängiges Format für Linux-Anwendungen" @@ -4747,32 +4639,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Projekt speichern" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Druckplatte" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & Material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Projektzusammenfassung beim Speichern nicht erneut anzeigen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Speichern" @@ -4948,12 +4835,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Störungen beheben" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Druckername" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Weisen Sie Ihrem Drucker bitte einen Namen zu" @@ -5012,20 +4899,30 @@ msgctxt "@button" msgid "Get started" msgstr "Erste Schritte" -#: /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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D-Ansicht" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vorderansicht" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Draufsicht" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Ansicht von links" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Ansicht von rechts" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5087,16 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Modell-Prüfer" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Die Inhalte aller Einstellungen in eine HTML-Datei ausgeben." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Gott-Modus" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5107,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Firmware-Aktualisierungsfunktion" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Erstellt eine geglättete Qualität, verändert das Profil." +msgid "Provides support for reading AMF files." +msgstr "Ermöglicht das Lesen von AMF-Dateien." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Profilglättfunktion" +msgid "AMF Reader" +msgstr "AMF-Reader" #: USBPrinting/plugin.json msgctxt "description" @@ -5127,16 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-Drucken" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Ermöglicht das Speichern des resultierenden Slices als X3G-Datei, um Drucker zu unterstützen, die dieses Format lesen (Malyan, Makerbot und andere Sailfish-basierte Drucker)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G-Writer" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5179,23 +5056,13 @@ msgstr "Ausgabegerät-Plugin für Wechseldatenträger" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Verwaltet Netzwerkverbindungen zu Ultimaker 3-Druckern." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Verwaltet Netzwerkverbindungen zu Ultimaker-Netzwerkdruckern." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3-Netzwerkverbindung" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker-Netzwerkverbindung" #: MonitorStage/plugin.json msgctxt "description" @@ -5327,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Upgrade von Version 3.3 auf 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Aktualisiert Konfigurationen von Cura 4.3 auf Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Upgrade von Version 4.3 auf 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5387,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Upgrade von Version 3.0 auf 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Aktualisiert Konfigurationen von Cura 4.1 auf Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Upgrade von Version 4.1 auf 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5417,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Upgrade von Version 2.2 auf 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Aktualisiert Konfigurationen von Cura 4.2 auf Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Upgrade von Version 4.2 auf 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5427,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Bild-Reader" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Unterstützt das Lesen von Modelldateien." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh Reader" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5457,16 +5364,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF-Reader" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "Liest SVG-Dateien als Werkzeugwege für die Fehlersuche bei Druckerbewegungen." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG-Werkzeugweg-Reader" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5507,16 +5404,6 @@ 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." @@ -5557,6 +5444,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-Profil-Reader" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Einstellungen Glätten aktiv" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Das Profil wurde geglättet und aktiviert." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Schreibt X3g in Dateien" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g-Datei" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-Datei" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Öffnen Sie das komprimierte Dreiecksnetz" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Profilassistent" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Profilassistent" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Erneut versuchen" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Keine Überlappung mit anderen Modellen unterstützen" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Einstellungen für Überlappung mit anderen Modellen bearbeiten" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Einstellungen für Füllung von anderen Modellen bearbeiten" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Vorhandenes aktualisieren" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Nicht unterstützt" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Zurück" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Tipp" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Druckexperiment" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Checkliste" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Wählen Sie bitte alle durchgeführten Upgrades für diesen Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson-Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Kamera-Rendering: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Mehrfach-Druckplattenfunktion verwenden" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Mehrfach-Druckplattenfunktion verwenden (Neustart erforderlich)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Standardprofile" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "Einstellungen durchsuchen" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Schichtdicke" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Dieses Qualitätsprofil ist für Ihr aktuelles Material und Ihre derzeitige Düsenkonfiguration nicht verfügbar. Bitte ändern Sie diese, um das Qualitätsprofil zu aktivieren." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Ein benutzerdefiniertes Profil ist derzeit aktiv. Wählen Sie ein voreingestelltes Qualitätsprofil aus der Registerkarte „Benutzerdefiniert“, um den Schieberegler für Qualität zu aktivieren" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Druckplatte" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Druckplatte" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Die Inhalte aller Einstellungen in eine HTML-Datei ausgeben." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Gott-Modus" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Erstellt eine geglättete Qualität, verändert das Profil." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Profilglättfunktion" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Ermöglichen Sie Materialherstellern die Erstellung neuer Material- und Qualitätsprofile, indem Sie eine Drop-In-Benutzerschnittstelle verwenden." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Druckprofil-Assistent" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Über Netzwerk verbunden." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Über Netzwerk verbunden. Geben Sie die Zugriffsanforderung für den Drucker frei." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Über Netzwerk verbunden. Kein Zugriff auf die Druckerverwaltung." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Zugriff auf Drucker erforderlich. Bestätigen Sie den Zugriff auf den Drucker" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Authentifizierungsstatus" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Authentifizierungsstatus" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Zugriffanforderung erneut senden" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Zugriff auf den Drucker genehmigt" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Kein Zugriff auf das Drucken mit diesem Drucker. Druckauftrag kann nicht gesendet werden." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Zugriff anfordern" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Zugriffsanforderung für den Drucker senden" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Es kann kein neuer Druckauftrag gestartet werden." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Es liegt ein Problem mit der Konfiguration Ihres Ultimaker vor, das den Druckstart verhindert. Lösen Sie dieses Problem bitte, bevor Sie fortfahren." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Konfiguration nicht übereinstimmend" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Möchten Sie wirklich mit der gewählten Konfiguration drucken?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Anforderungen zwischen der Druckerkonfiguration oder -kalibrierung und Cura stimmen nicht überein. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Das Senden neuer Aufträge ist (vorübergehend) blockiert; der vorherige Druckauftrag wird noch gesendet." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Daten werden zum Drucker gesendet" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Daten werden gesendet" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Kein PrintCore geladen in Steckplatz {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Kein Material geladen in Steckplatz {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Abweichender PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) für Extruder gewählt {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Abweichendes Material (Cura: {0}, Drucker: {1}) für Extruder {2} gewählt" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchronisieren Ihres Druckers" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Möchten Sie Ihre aktuelle Druckerkonfiguration in Cura verwenden?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Die PrintCores und/oder Materialien auf Ihrem Drucker unterscheiden sich von denen Ihres aktuellen Projekts. Für optimale Ergebnisse schneiden Sie stets für die PrintCores und Materialien, die in Ihren Drucker eingelegt wurden." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "In Monitor überwachen" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "Drucker '{printer_name}' hat '{job_name}' vollständig gedrückt." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Der Druckauftrag '{job_name}' wurde ausgeführt." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Druck vollendet" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Leer" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Unbekannt" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Cloudfehler" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Druckauftrag konnte nicht exportiert werden." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Es liegt ein Fehler beim Verbinden mit der Cloud vor." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Über Ultimaker Cloud hochladen" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Verbinden mit Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Nicht mehr für diesen Drucker nachfragen." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Sie können jetzt Druckaufträge mithilfe Ihres Ultimaker-Kontos von einem anderen Ort aus senden und überwachen." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Verbunden!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Ihre Verbindung überprüfen" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "Die Maschine, die im Profil {0} ({1}) definiert wurde, entspricht nicht Ihrer derzeitigen Maschine ({2}). Importieren nicht möglich." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Import des Profils aus Datei {0} fehlgeschlagen:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Vorhandene Verbindung" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Diese/r Drucker/Gruppe wurde bereits zu Cura hinzugefügt. Wählen Sie bitte eine/n andere/n Drucker/Gruppe." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Geben Sie die IP-Adresse oder den Hostnamen Ihres Druckers auf dem Netzwerk ein." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Mit einem Drucker verbinden" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Anleitung für Cura-Einstellungen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Das Zoomen in Mausrichtung wird in der Orthogonalansicht nicht unterstützt." + +#~ msgid "Orthogonal" +#~ msgstr "Orthogonal" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Verwaltet Netzwerkverbindungen zu Ultimaker 3-Druckern." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3-Netzwerkverbindung" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Bietet zusätzliche Informationen und Erklärungen zu den Einstellungen in Cura mit Abbildungen und Animationen." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Anleitung für Einstellungen" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Anleitung für Cura-Einstellungen" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Die Einstellungen wurden passend für die aktuelle Verfügbarkeit der Extruder geändert: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Benutzerbeschreibung" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Diese Optionen sind nicht verfügbar, weil Sie einen Cloud-Drucker überwachen." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Gehe zu Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Alle Aufträge wurden gedruckt." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Druckauftragshistorie anzeigen" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Um über das Netzwerk direkt auf Ihrem Drucker zu drucken, stellen Sie bitte sicher, dass der Drucker mit dem Netzwerkkabel verbunden ist oder verbinden Sie Ihren Drucker mit Ihrem WLAN-Netzwerk. Wenn Sie Cura nicht mit Ihrem Drucker verbinden, können Sie dennoch ein USB-Laufwerk für die Übertragung von G-Code-Dateien auf Ihren Drucker verwenden.\n" +#~ "\n" +#~ "Wählen Sie Ihren Drucker aus der folgenden Liste:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Stellen Sie bitte sicher, dass Ihr Drucker verbunden ist:\n" +#~ "- Prüfen Sie, ob Ihr Drucker eingeschaltet ist.\n" +#~ "- Prüfen Sie, ob der Drucker mit dem Netzwerk verbunden ist." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Nur aktuelle Druckplatte anzeigen" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "An allen Druckplatten ausrichten" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "An aktueller Druckplatte ausrichten" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Ermöglicht das Speichern des resultierenden Slices als X3G-Datei, um Drucker zu unterstützen, die dieses Format lesen (Malyan, Makerbot und andere Sailfish-basierte Drucker)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G-Writer" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Liest SVG-Dateien als Werkzeugwege für die Fehlersuche bei Druckerbewegungen." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG-Werkzeugweg-Reader" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Änderungsprotokoll" diff --git a/resources/i18n/de_DE/fdmextruder.def.json.po b/resources/i18n/de_DE/fdmextruder.def.json.po index 7d47548956..cc39f59f72 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: German\n" diff --git a/resources/i18n/de_DE/fdmprinter.def.json.po b/resources/i18n/de_DE/fdmprinter.def.json.po index 8c8418ceed..aee5ae4ace 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: German\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: German , German \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "G-Code-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n." +msgstr "" +"G-Code-Befehle, die zu Beginn ausgeführt werden sollen – getrennt durch \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "G-Code-Befehle, die am Ende ausgeführt werden sollen – getrennt durch \n." +msgstr "" +"G-Code-Befehle, die am Ende ausgeführt werden sollen – getrennt durch \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Option für vorhandene beheizte Druckplatte." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Verfügt über Temperaturstabilisierung für den Druckraum" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Zeigt an, ob das Gerät die Temperatur im Druckraum stabilisieren kann." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -333,7 +347,7 @@ msgstr "Die Mindestzeit, die ein Extruder inaktiv sein muss, bevor die Düse abk #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "G-Code-Variante" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Die Anzahl der unteren Schichten. Wenn diese anhand der unteren Dicke berechnet wird, wird der Wert auf eine ganze Zahl auf- oder abgerundet." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Erste untere Schichten" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Die Anzahl der ersten Schichten, die auf die Druckplatte aufgetragen werden. Wenn diese anhand der unteren Dicke berechnet werden, wird der Wert auf eine" +" ganze Zahl auf- oder abgerundet." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Schärfste Kante" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Position der Z-Naht" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Die Position in der Nähe der Stelle, an der die einzelnen Teile einer Ebene gedruckt werden sollen." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Hinten links" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Zurück" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Hinten rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Vorne rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Vorne" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Vorne links" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Links" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Präferenz Nahtkante" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten. Intelligent verbergen lässt die Naht an innen- oder außenliegenden Kanten auftreten, verwendet aber – falls zweckmäßig – häufiger innenliegende Kanten." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Naht verbergen oder offenlegen" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Intelligent verbergen" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Bei Aktivierung sind die Z-Naht-Koordinaten relativ zur Mitte der jeweil #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Schmale Z-Lücken ignorieren" +msgid "No Skin in Z Gaps" +msgstr "Keine Außenhaut in Z-Lücken" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Wenn das Modell kleine, nur wenige Schichten hohe vertikale Lücken aufweist, sind diese normalerweise von einer Außenhaut bedeckt. Aktivieren Sie diese Einstellung, damit bei sehr kleinen Lücken keine Außenhaut gedruckt wird. Dies verkürzt die zum Drucken und Slicen benötigte Zeit, aber die Füllung bleibt der Luft ausgesetzt." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Glätten aktivieren" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, jedoch ohne Extrusionsmaterial. Damit wird der Kunststoff auf der Oberfläche weiter geschmolzen, was zu einer glatteren Oberfläche führt." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, aber extrudieren Sie diesmal sehr wenig Material. Dadurch wird die oberste Kunststoffschicht geschmolzen und es entsteht eine glattere Oberfläche. Der Druck in der Düsenkammer bleibt weiterhin hoch, so dass Risse in der Oberfläche mit Material gefüllt werden." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Die maximale unmittelbare Geschwindigkeitsänderung während des Glättens." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Prozentsatz Außenhaut überlappen" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Justieren Sie die Überlappung zwischen den Wänden und den Außenhaut-Mittellinien bzw. den Endpunkten der Außenhaut-Mittellinien als Prozentwert der Linienbreite der Außenhautlinien und der inneren Wand. Eine geringe Überlappung ermöglicht die feste Verbindung der Wände mit der Außenhaut. Beachten Sie, dass bei einer einheitlichen Linienbreite von Außenhaut und Wand jeder Prozentwert über 50 % bereits dazu führen kann, dass die Außenhaut über die Wand hinausgeht, da in diesem Moment die Position der Düse des Außenhaut-Extruders möglicherweise bereits über die Wandmitte hinausgeht." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Außenhaut überlappen" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Justieren Sie die Überlappung zwischen den Wänden und den Außenhaut-Mittellinien bzw. den Endpunkten der Außenhaut-Mittellinien. Eine geringe Überlappung ermöglicht die feste Verbindung der Wände mit der Außenhaut. Beachten Sie, dass bei einer einheitlichen Linienbreite von Außenhaut und Wand jeder Wert über die Hälfte der Wandbreite bereits dazu führen kann, dass die Außenhaut über die Wand hinausgeht, da in diesem Moment die Position der Düse des Außenhaut-Extruders möglicherweise bereits über die Wandmitte hinausgeht." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Das Füllmuster wird um diese Distanz entlang der Y-Achse verschoben." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Füllstart randomisieren" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Randomisieren Sie, welche Fülllinie zuerst gedruckt wird. So wird vermieden, dass ein Segment am stärksten ist. Allerdings muss dafür eine zusätzliche Bewegung ausgeführt werden." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde." +msgstr "" +"Fügen Sie zusätzliche Wände um den Füllbereich hinzu. Derartige Wände können zu einem verringerten Absacken der oberen/unteren Außenhautlinien beitragen, was bedeutet, dass Sie weniger Außenhautschichten oben/unten bei derselben Qualität von Kosten für zusätzliches Material benötigen.\n" +" Diese Funktion ist verknüpfbar mit „Füllungspolygone verbinden“, um alle Füllungen mit einem einzigen Extrusionspfad zu verbinden, ohne dass hierzu Vorwärtsbewegungen oder Rückzüge erforderlich sind, sofern die richtige Konfiguration gewählt wurde." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Das Ausmaß des Überlappens zwischen der Füllung und den Wänden. Ein leichtes Überlappen ermöglicht es den Wänden, eine solide Verbindung mit der Füllung herzustellen." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Prozentsatz Außenhaut überlappen" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Justieren Sie die Überlappung zwischen den Wänden und den Außenhaut-Mittellinien bzw. den Endpunkten der Außenhaut-Mittellinien als Prozentwert der Linienbreite der Außenhautlinien und der inneren Wand. Eine geringe Überlappung ermöglicht die feste Verbindung der Wände mit der Außenhaut. Beachten Sie, dass bei einer einheitlichen Linienbreite von Außenhaut und Wand jeder Prozentwert über 50 % bereits dazu führen kann, dass die Außenhaut über die Wand hinausgeht, da in diesem Moment die Position der Düse des Außenhaut-Extruders möglicherweise bereits über die Wandmitte hinausgeht." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Außenhaut überlappen" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Justieren Sie die Überlappung zwischen den Wänden und den Außenhaut-Mittellinien bzw. den Endpunkten der Außenhaut-Mittellinien. Eine geringe Überlappung ermöglicht die feste Verbindung der Wände mit der Außenhaut. Beachten Sie, dass bei einer einheitlichen Linienbreite von Außenhaut und Wand jeder Wert über die Hälfte der Wandbreite bereits dazu führen kann, dass die Außenhaut über die Wand hinausgeht, da in diesem Moment die Position der Düse des Außenhaut-Extruders möglicherweise bereits über die Wandmitte hinausgeht." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,8 +1962,8 @@ msgstr "Temperatur Druckabmessung" #: fdmprinter.def.json 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." +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" @@ -1983,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Schrumpfungsverhältnis in Prozent." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Kristallines Material" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Lässt sich das Material im erhitzten Zustand leicht brechen (kristallin) oder bildet es lange, verflochtene Polymerketten (nicht kristallin)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Einzugsmaß für Sickerschutz" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Maß, um das das Material eingezogen werden muss, damit es nicht heraussickert." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Einzugsgeschwindigkeit für Sickerschutz" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Geschwindigkeit, mit der das Material beim Filamentwechsel eingezogen werden muss, damit es nicht heraussickert." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Einzugsmaß für Bruchvorbereitung" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Streckmaß für das Filament im erhitzten Zustand, bevor es bricht." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Einzugsgeschwindigkeit für Bruchvorbereitung" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Geschwindigkeit, mit der das Filament eingezogen werden muss, bevor es beim Einziehen abgebrochen wird." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Einzugsmaß für das Brechen" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Maß, um das das Filament eingezogen werden muss, damit es sauber abgebrochen werden kann." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Einzugsgeschwindigkeit für das Brechen" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Geschwindigkeit, mit der das Filament eingezogen werden muss, damit es sauber abgebrochen werden kann." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Bruchtemperatur" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Die Temperatur, bei der das Filament für eine saubere Bruchstelle gebrochen wird." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1993,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Wandfluss" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Durchflusskompensation an Wandlinien." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Wandfluss außen" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Durchflusskompensation an der äußeren Wandlinie." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Wandfluss innen" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Durchflusskompensation an allen Wandlinien bis auf die äußere." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Fluss oben/unten" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Durchflusskompensation an oberen/unteren Linien." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Fluss Oberfläche Außenhaut" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Durchflusskompensation an Linien von Flächen an der Oberseite des Druckobjekts." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Fluss der Füllung" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Durchflusskompensation an Füllungslinien." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Skirt/Brim-Fluss" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Durchflusskompensation an Skirt- oder Brim-Linien." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Stützstruktur-Fluss" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Durchflusskompensation an Stützstrukturlinien." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Fluss Stützstruktur-Schnittstelle" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Durchflusskompensation an Dach- oder Bodenlinien der Stützstruktur." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Stützdachfluss" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Durchflusskompensation an Stützdachlinien." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Stützbodenfluss" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Durchflusskompensation an Stützbodenlinien." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluss Einzugsturm" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Durchflusskompensation an Einzugsturmlinien." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2110,7 +2402,7 @@ msgstr "Stützstruktur-Einzüge einschränken" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Lassen Sie den Einzug beim Vorgehen von Stützstruktur zu Stützstruktur in einer geraden Linie aus. Die Aktivierung dieser Einstellung spart Druckzeit, kann jedoch zu übermäßigem Fadenziehen innerhalb der Stützstruktur führen." #: fdmprinter.def.json @@ -2163,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Die Geschwindigkeit, mit der das Filament während eines Düsenschaltereinzugs zurückgeschoben wird." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Zusätzliche Einzugsmenge bei Düsenwechsel" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Nach einem Düsenwechsel zusätzlich bereitzustellendes Material." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2354,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Die Geschwindigkeit, mit der die Skirt- und Brim-Elemente gedruckt werden. Normalerweise wird dafür die Geschwindigkeit der Basisschicht verwendet. In machen Fällen kann es jedoch vorteilhaft sein, das Skirt- oder Brim-Element mit einer anderen Geschwindigkeit zu drucken." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maximale Z-Geschwindigkeit" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Sprunghöhe Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Die maximale Geschwindigkeit, mit der die Druckplatte bewegt wird. Eine Einstellung auf Null veranlasst die Verwendung der Firmware-Grundeinstellungen für die maximale Z-Geschwindigkeit." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Die Geschwindigkeit, mit der bei Z-Sprüngen die vertikale Bewegung (Z-Achse) erfolgt. Diese liegt in der Regel unterhalb der Druckgeschwindigkeit, da die Bewegung von Druckbett oder Brücke schwieriger ist." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2863,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Der Abstand zwischen der Düse und den bereits gedruckten Teilen, wenn diese bei Bewegungen umgangen werden." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Startet Schichten mit demselben Teil" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Beginnen Sie in jeder Schicht mit dem Drucken des Objekts in der Nähe desselben Punkts, sodass keine neue Schicht begonnen wird, wenn das Teil gedruckt wird, mit dem die letzte Schicht geendet hat. Damit lassen sich Überhänge und kleine Teile besser herstellen, allerdings verlängert sich die Druckzeit." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3279,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Der Abstand zwischen der ursprünglichen gedruckten Stützstrukturlinien. Diese Einstellung wird anhand der Dichte der Stützstruktur berechnet." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Unterstützung Linienrichtung Füllung" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Ausrichtung des Füllmusters für Unterstützung. Das Füllmuster für Unterstützung wird in der horizontalen Planfläche gedreht." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass der Standardwinkel von 0 Grad zu verwenden ist." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3415,8 +3707,8 @@ msgstr "Abstand für Zusammenführung der Stützstrukturen" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn sich einzelne Strukturen näher aneinander befinden, als dieser Wert, werden diese Strukturen in eine einzige Struktur zusammengefügt." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn der Abstand einzelner Strukturen zueinander diesen Wert unterschreitet, werden diese Strukturen miteinander kombiniert und bilden eine Struktur." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3700,8 +3992,9 @@ msgstr "Mindestbereich Stützstruktur-Schnittstelle" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Mindestflächenbreite für Stützstruktur-Schnittstellen-Polygone. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Mindestflächenbreite für Stützstruktur-Schnittstellen-Polygone. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden als normale Stützstruktur" +" gedruckt." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3710,8 +4003,8 @@ msgstr "Mindestbereich Stützstrukturdach" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Mindestflächenbreite für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Mindestfläche für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden als normale Stützstruktur gedruckt." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3720,8 +4013,8 @@ msgstr "Mindestbereich Stützstrukturboden" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Mindestflächenbreite für die Böden der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Mindestfläche für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden als normale Stützstruktur gedruckt." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3753,6 +4046,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Umfang des angewandten Versatzes für die Böden der Stützstruktur." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Richtungen der Verbindungslinien unterstützen" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass herkömmliche Standardwinkel (zwischen 45 und 135- rad, falls die Verbindungsstellen ziemlich dick sind, oder 90 Grad) zu verwenden sind." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Richtungen der Dachlinien unterstützen" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass herkömmliche Standardwinkel (zwischen 45 und 135- rad, falls die Verbindungsstellen ziemlich dick sind, oder 90 Grad) zu verwenden sind." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Richtungen der Bodenlinien unterstützen" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Liste der zu verwendenden Linienrichtungen (in ganzen Zahlen). Die Elemente der Liste werden während des Aufbaus der Schichten der Reihe nach abgearbeitet. Wenn das Ende der Liste erreicht wird, wird wieder beim ersten Element begonnen. Die Listenobjekte werden durch Kommas getrennt und die gesamte Liste ist in eckige Klammern gesetzt. Standardmäßig ist eine leere Liste vorhanden, was bedeutet, dass herkömmliche Standardwinkel (zwischen 45 und 135- rad, falls die Verbindungsstellen ziemlich dick sind, oder 90 Grad) zu verwenden sind." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3794,13 +4117,13 @@ msgid "The diameter of a special tower." msgstr "Der Durchmesser eines speziellen Pfeilers." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Mindestdurchmesser" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Maximaler Durchmesser für Stützpfeiler" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." msgstr "Der Mindestdurchmesser in den X/Y-Richtungen eines kleinen Bereichs, der durch einen speziellen Stützpfeiler gestützt wird." #: fdmprinter.def.json @@ -3923,7 +4246,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\nEs handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht." +msgstr "" +"Der horizontale Abstand zwischen dem Skirt und der ersten Schicht des Drucks.\n" +"Es handelt sich dabei um den Mindestabstand. Ab diesem Abstand werden mehrere Skirt-Linien in äußerer Richtung angebracht." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4295,16 +4620,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Drucken Sie einen Turm neben dem Druck, der zum Einziehen des Materials nach jeder Düsenschaltung dient." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Einzugsturm kreisförmig" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Macht den Einzugsturm zu einer Kreisform." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4345,16 +4660,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Die Y-Koordinate der Position des Einzugsturms." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Fluss Einzugsturm" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4495,6 +4800,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Entfernen Sie die leeren Schichten unter der ersten gedruckten Schicht, sofern vorhanden. Die Deaktivierung dieser Einstellung kann zu leeren ersten Schichten führen, wenn die Einstellung der Slicing-Toleranz auf Exklusiv oder Mittel gesetzt wurde." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maximale Auflösung" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Die Mindestgröße eines Linienabschnitts nach dem Slicen. Wenn Sie diesen Wert erhöhen, führt dies zu einer niedrigeren Auslösung des Mesh. Damit kann der Drucker die erforderliche Geschwindigkeit für die Verarbeitung des G-Codes beibehalten; außerdem wird die Slice-Geschwindigkeit erhöht, indem Details des Mesh entfernt werden, die ohnehin nicht verarbeitet werden können." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maximale Bewegungsauflösung" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Die maximale Größe eines Bewegungsliniensegments nach dem Slicen. Wenn Sie diesen Wert erhöhen, weisen die Fahrtbewegungen weniger glatte Kanten aus. Das ermöglicht dem Drucker, die für die Verarbeitung eines G-Codes erforderliche Geschwindigkeit aufrechtzuerhalten, allerdings kann das Modell damit auch weniger akkurat werden." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maximale Abweichung" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Die maximal zulässige Abweichung bei Reduzierung der maximalen Auflösung. Wenn Sie diesen Wert erhöhen, wird der Druck ungenauer, der G-Code wird jedoch kleiner. Die maximale Abweichung ist eine Grenze für die maximale Auflösung. Wenn die beiden Werte sich widersprechen, wird stets die maximale Abweichung eingehalten." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4657,8 +4992,8 @@ msgstr "Spiralisieren der äußeren Konturen glätten" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte am Druckobjekt kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass beim Glätten feine Oberflächendetails verwischt werden." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4870,36 +5205,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Polygone in geschnittenen Schichten, die einen Umfang unter diesem Wert haben, werden ausgefiltert. Niedrigere Werte führen zu einem Mesh mit höherer Auflösung zulasten der Slicing-Zeit. Dies gilt in erster Linie für SLA-Drucker mit höherer Auflösung und sehr kleine 3D-Modelle mit zahlreichen Details." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maximale Auflösung" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Die Mindestgröße eines Linienabschnitts nach dem Slicen. Wenn Sie diesen Wert erhöhen, führt dies zu einer niedrigeren Auslösung des Mesh. Damit kann der Drucker die erforderliche Geschwindigkeit für die Verarbeitung des G-Codes beibehalten; außerdem wird die Slice-Geschwindigkeit erhöht, indem Details des Mesh entfernt werden, die ohnehin nicht verarbeitet werden können." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maximale Bewegungsauflösung" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Die maximale Größe eines Bewegungsliniensegments nach dem Slicen. Wenn Sie diesen Wert erhöhen, weisen die Fahrtbewegungen weniger glatte Kanten aus. Das ermöglicht dem Drucker, die für die Verarbeitung eines G-Codes erforderliche Geschwindigkeit aufrechtzuerhalten, allerdings kann das Modell damit auch weniger akkurat werden." - -#: fdmprinter.def.json -msgctxt "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" @@ -5040,16 +5345,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Die Geschwindigkeit, mit der die Bewegung während des Coasting erfolgt, in Relation zur Geschwindigkeit des Extrusionswegs. Ein Wert leicht unter 100 % wird empfohlen, da während der Coasting-Bewegung der Druck in den Bowden-Röhren abfällt." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Wechselnde Rotation der Außenhaut" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Die Richtung, in welcher die oberen/unteren Schichten gedruckt werden, wird abgewechselt. Normalerweise werden diese nur diagonal gedruckt. Diese Einstellung fügt die Nur-X- und Nur-Y-Richtung zu." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5157,8 +5452,8 @@ msgstr "Konische Stützstruktur aktivieren" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5222,23 +5517,24 @@ msgstr "Der durchschnittliche Abstand zwischen den willkürlich auf jedes Linien #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Ausgleich Durchflussrate max. Extrusionswirkung" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Die maximale Distanz in mm für den Ausgleich." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Die maximale Strecke (in mm), die das Filament bewegt werden kann, um Änderungen der Durchflussrate zu kompensieren." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Ausgleichsfaktor Durchflussrate" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Der Multiplikationsfaktor für die Übersetzung Durchflussrate -> Distanz." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Wie weit das Filament bewegt werden kann, um Änderungen der Durchflussrate zu kompensieren – als Prozentsatz der Strecke, die das Filament sich während" +" einer Sekunde Extrusion bewegen würde." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5390,7 +5686,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\nDies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." +msgstr "" +"Die Strecke einer Aufwärtsbewegung, die mit halber Geschwindigkeit extrudiert wird.\n" +"Dies kann zu einer besseren Haftung an vorhergehenden Schichten führen, während gleichzeitig ein Überhitzen des Materials in diesen Schichten vermieden wird. Dies gilt nur für das Drucken mit Drahtstruktur." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5529,13 +5827,14 @@ msgstr "Der Höhenunterscheid der nächsten Schichthöhe im Vergleich zur vorher #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Schwellenwert Anpassschichten" +msgid "Adaptive Layers Topography Size" +msgstr "Topographische Größe der Anpassschichten" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Das ist der Schwellenwert, der definiert, ob eine kleinere Schicht verwendet wird oder nicht. Dieser Wert wird mit dem der stärksten Neigung in einer Schicht verglichen." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Horizontaler Abstand zwischen zwei angrenzenden Schichten. Bei Einstellung eines niedrigeren Werts werden dünnere Schichten aufgetragen, damit die Kanten" +" der Schichten enger aneinander liegen." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5544,8 +5843,9 @@ msgstr "Winkel für überhängende Wände" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Wände, die über diesen Winkel hinaus hängen, werden mithilfe der Einstellungen für Winkel für überhängende Wände gedruckt. Wenn der Wert 90 beträgt, werden keine Wände als überhängend behandelt." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Wände, die über diesen Winkel hinaus hängen, werden mithilfe der Einstellungen für Winkel für überhängende Wände gedruckt. Wenn der Wert 90 beträgt, werden" +" keine Wände als überhängend behandelt. Überhänge, die von Stützstrukturen gestützt werden, werden ebenfalls nicht als Überhang behandelt." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5897,6 +6197,48 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "Die Strecke, die der Kopf durch Vorwärts- und Rückwärtsbewegung über die Bürste hinweg fährt." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Max. Lochdurchmesser" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Löcher und Teilkonturen mit einem kleineren Durchmesser werden mit Small Feature Speed gedruckt." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Max. Detaillänge" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Teile, die kleiner sind als dieser Wert, werden in Detailgeschwindigkeit gedruckt." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Detailgeschwindigkeit" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Bei kleinen Details wird die Geschwindigkeit auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere Druckgeschwindigkeit" +" können die Haftung und die Genauigkeit verbessert werden." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Geschwindigkeit der ersten Schicht von Details" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Bei kleinen Details wird die Geschwindigkeit bei der ersten Schicht auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere" +" Druckgeschwindigkeit können die Haftung und die Genauigkeit verbessert werden." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5957,6 +6299,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Transformationsmatrix, die beim Laden aus der Datei auf das Modell angewandt wird." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Mindestflächenbreite für Stützstruktur-Schnittstellen-Polygone. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Mindestflächenbreite für die Dächer der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Mindestflächenbreite für die Böden der Stützstruktur. Polygone, die eine kleinere Fläche als diesen Wert aufweisen, werden nicht generiert." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Wechselnde Rotation der Außenhaut" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Die Richtung, in welcher die oberen/unteren Schichten gedruckt werden, wird abgewechselt. Normalerweise werden diese nur diagonal gedruckt. Diese Einstellung fügt die Nur-X- und Nur-Y-Richtung zu." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Ausgleich Durchflussrate max. Extrusionswirkung" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Die maximale Distanz in mm für den Ausgleich." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Ausgleichsfaktor Durchflussrate" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Der Multiplikationsfaktor für die Übersetzung Durchflussrate -> Distanz." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Schwellenwert Anpassschichten" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Das ist der Schwellenwert, der definiert, ob eine kleinere Schicht verwendet wird oder nicht. Dieser Wert wird mit dem der stärksten Neigung in einer Schicht verglichen." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Wände, die über diesen Winkel hinaus hängen, werden mithilfe der Einstellungen für Winkel für überhängende Wände gedruckt. Wenn der Wert 90 beträgt, werden keine Wände als überhängend behandelt." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Bei kleinen Details wird die Geschwindigkeit auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere Druckgeschwindigkeit kann die Haftung und die Genauigkeit verbessert werden." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Geschwindigkeit für erste Schicht" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Bei kleinen Details wird die Geschwindigkeit bei der ersten Schicht auf diesen Prozentsatz der normalen Druckgeschwindigkeit gesetzt. Durch eine niedrigere Druckgeschwindigkeit kann die Haftung und die Genauigkeit verbessert werden." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Gehen Sie ein weiteres Mal über die Oberfläche, jedoch ohne Extrusionsmaterial. Damit wird der Kunststoff auf der Oberfläche weiter geschmolzen, was zu einer glatteren Oberfläche führt." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Startet Schichten mit demselben Teil" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Beginnen Sie in jeder Schicht mit dem Drucken des Objekts in der Nähe desselben Punkts, sodass keine neue Schicht begonnen wird, wenn das Teil gedruckt wird, mit dem die letzte Schicht geendet hat. Damit lassen sich Überhänge und kleine Teile besser herstellen, allerdings verlängert sich die Druckzeit." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Ausrichtung des Füllmusters für Unterstützung. Das Füllmuster für Unterstützung wird in der horizontalen Planfläche gedreht." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Die maximal zulässige Abweichung bei Reduzierung der Auflösung für die Einstellung der maximalen Auflösung. Wenn Sie diesen Wert erhöhen, wird der Druck ungenauer, der G-Code wird jedoch kleiner." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-Code-Variante" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Definieren Sie, ob Kanten am Modell-Umriss die Nahtposition beeinflussen. Keine bedeutet, dass Kanten keinen Einfluss auf die Nahtposition haben. Naht verbergen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden Kante auftreten. Naht offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer Außenkante auftreten. Naht verbergen oder offenlegen lässt die Naht mit höherer Wahrscheinlichkeit an einer innenliegenden oder außenliegenden Kante auftreten." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Schmale Z-Lücken ignorieren" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Wenn das Modell schmale vertikale Lücken hat, kann etwa 5 % zusätzliche Rechenzeit aufgewendet werden, um eine obere und untere Außenhaut in diesen engen Räumen zu generieren. In diesem Fall deaktivieren Sie die Einstellung." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Die für die Druckabmessung verwendete Temperatur. Wenn dieser Wert 0 beträgt, wird die Temperatur der Druckabmessung nicht angepasst." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Lassen Sie den Einzug beim Vorgehen von Stützstruktur zu Stützstruktur in einer geraden Linie aus. Die Aktivierung dieser Einstellung spart Druckzeit, kann jedoch zu übermäßigem Fadenziehen innerhalb der Stützstruktur führen." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maximale Z-Geschwindigkeit" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Die maximale Geschwindigkeit, mit der die Druckplatte bewegt wird. Eine Einstellung auf Null veranlasst die Verwendung der Firmware-Grundeinstellungen für die maximale Z-Geschwindigkeit." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Der Maximalabstand zwischen Stützstrukturen in der X- und Y-Richtung. Wenn sich einzelne Strukturen näher aneinander befinden, als dieser Wert, werden diese Strukturen in eine einzige Struktur zusammengefügt." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Mindestdurchmesser" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Der Mindestdurchmesser in den X/Y-Richtungen eines kleinen Bereichs, der durch einen speziellen Stützpfeiler gestützt wird." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Einzugsturm kreisförmig" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Macht den Einzugsturm zu einer Kreisform." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Fluss-Kompensation: Die extrudierte Materialmenge wird mit diesem Wert multipliziert." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Glättet die spiralförmigen Konturen, um die Sichtbarkeit der Z-Naht zu reduzieren (die Z-Naht sollte auf dem Druck kaum sichtbar sein, ist jedoch in der Schichtenansicht erkennbar). Beachten Sie, dass das Glätten dazu neigt, feine Oberflächendetails zu verwischen." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Experimentelle Funktion: Macht die Bereiche der Stützstruktur am Boden kleiner als beim Überhang." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Anzahl der aktivierten Extruder" @@ -6162,7 +6648,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" #~ "." @@ -6175,7 +6660,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" #~ "." @@ -6232,7 +6716,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 4ab1a914da..f971746925 100644 --- a/resources/i18n/es_ES/cura.po +++ b/resources/i18n/es_ES/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:34+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Spanish , Spanish \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes de la máquina" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Archivo GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter no es compatible con el modo sin texto." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Prepare el Gcode antes de la exportación." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Asistente del modelo 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "Actualizar firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Aplanar ajustes activos" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Archivo AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "El perfil se ha aplanado y activado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impresión USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado mediante USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Se está realizando una impresión con USB, si cierra Cura detendrá la impresión. ¿Desea continuar?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Archivo X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Todavía hay una impresión en curso. Cura no puede iniciar otra impresión a través de USB hasta que se haya completado la impresión anterior." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Escribe X3g en archivos" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Archivo X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impresión en curso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Guardar en unidad extraíble {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "¡No hay formatos de archivo disponibles con los que escribir!" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "No se pudo guardar en unidad extraíble {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Error" @@ -229,9 +217,9 @@ msgstr "Expulsar dispositivo extraíble {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Advertencia" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidad extraíble" -#: /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: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: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: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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Estado de la autenticación" - -#: /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: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: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: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: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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Enviando datos a la impresora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Enviando datos" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizar con la impresora" - -#: /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: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: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:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Fecha de envío" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Ver en pantalla" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Vacío" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Desconocido" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Imprimir mediante Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Imprimir mediante Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Conectado mediante Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Error de Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "No se han podido cargar los datos en la impresora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "mañana" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "hoy" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Cargando a través de Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Empezar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "¡Conectado!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Revise su conexión" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar a través de la red" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Guía de ajustes de Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprime a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Conectado a través de la red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Espere hasta que se envíe el trabajo actual." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Error de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Se han encontrado nuevas impresoras en la nube" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Se han encontrado nuevas impresoras conectadas a tu cuenta; puedes verlas en la lista de impresoras descubiertas." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "No volver a mostrar este mensaje" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Está intentando conectarse a {0} pero ese no es el host de un grupo. Puede visitar la página web para configurarlo como host de grupo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "No es un host de grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurar grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Envíe y supervise sus trabajos de impresión desde cualquier lugar a través de su cuenta de Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Conectar a Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Empezar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Enviando trabajo de impresión" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Cargando el trabajo de impresión a la impresora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "El trabajo de impresión se ha enviado correctamente a la impresora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Fecha de envío" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Está intentando conectarse a una impresora que no está ejecutando Ultimaker Connect. Actualice la impresora al firmware más reciente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Actualice su impresora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura ha detectado perfiles de material que aún no estaban instalados en la impresora host del grupo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Enviando materiales a la impresora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "No se han podido cargar los datos en la impresora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Error de red" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "mañana" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "hoy" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimir mediante Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimir mediante Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Conectado mediante Cloud" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Supervisar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "No se pudo acceder a la información actualizada." @@ -625,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Vista de capas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura no muestra correctamente las capas si la impresión de alambre está habilitada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Vista de simulación" @@ -685,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagen GIF" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF binario" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF incrustado JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange comprimido" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -749,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurar ajustes por modelo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -765,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Archivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Tobera" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "El archivo del proyecto {0} contiene un tipo de máquina desconocida {1}. No se puede importar la máquina, en su lugar, se importarán los modelos." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir archivo de proyecto" @@ -792,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Archivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizar GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Datos de GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Asegúrese de que el GCode es adecuado para la impresora y para su configuración antes de enviar el archivo a la misma. Es posible que la representación del GCode no sea precisa." @@ -857,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Perfil de cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Asistente del perfil" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Asistente del perfil" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -887,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Vista previa" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -903,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Fallo de inicio de sesión" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "No compatible" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "El archivo ya existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "El archivo {0} ya existe. ¿Está seguro de que desea sobrescribirlo?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL del archivo no válida:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "La configuración se ha cambiado para que coincida con los extrusores disponibles en este momento:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ajustes actualizados" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrusores deshabilitados" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconocido" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Error al exportar el perfil a {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Error al exportar el perfil a {0}: Error en el complemento de escritura." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado a {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportación correcta" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "No se puede importar el perfil de {0} antes de añadir una impresora." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "No hay ningún perfil personalizado para importar en el archivo {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Error al importar el perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Este perfil {0} contiene datos incorrectos, no se han podido importar." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "El equipo definido en el perfil {0} ({1}) no coincide con el equipo actual ({2}), no se ha podido importar." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Error al importar el perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado correctamente" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "El archivo {0} no contiene ningún perfil válido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "El perfil {0} tiene un tipo de archivo desconocido o está corrupto." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Al perfil le falta un tipo de calidad." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1103,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Otro" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Archivo {0} presegmentado" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1123,73 +953,122 @@ msgstr "N.º de grupo {group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Cerrar" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Agregar" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visual" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "El perfil visual está diseñado para imprimir prototipos y modelos visuales con la intención de obtener una alta calidad visual y de superficies." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "El perfil de ingeniería ha sido diseñado para imprimir prototipos funcionales y piezas de uso final con la intención de obtener una mayor precisión y tolerancias" +" más precisas." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Boceto" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "El perfil del boceto ha sido diseñado para imprimir los prototipos iniciales y la validación del concepto con la intención de reducir el tiempo de impresión" +" de manera considerable." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "No reemplazado" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfiles personalizados" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Todos los tipos compatibles ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos los archivos (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconocido" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Impresoras en red disponibles" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Material personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Las siguientes impresoras no pueden conectarse porque forman parte de un grupo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Impresoras en red disponibles" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "La altura del volumen de impresión se ha reducido debido al valor del ajuste «Secuencia de impresión» para evitar que el caballete colisione con los modelos impresos." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volumen de impresión" @@ -1214,39 +1093,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "No se ha podido leer la respuesta." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "No se puede acceder al servidor de cuentas de Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Conceda los permisos necesarios al autorizar esta aplicación." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Se ha producido un problema al intentar iniciar sesión, vuelva a intentarlo." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicar y colocar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Colocando objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "No se puede encontrar una ubicación dentro del volumen de impresión para todos los objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando objeto" @@ -1395,53 +1274,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Cargando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Configurando preferencias...." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando escena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Cargando interfaz..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Solo se puede cargar un archivo GCode a la vez. Se omitió la importación de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "No se puede abrir ningún archivo si se está cargando un archivo GCode. Se omitió la importación de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "No se puede cargar el modelo seleccionado, es demasiado pequeño." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Ajustes de la impresora" @@ -1454,15 +1338,15 @@ msgstr "X (anchura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1494,50 +1378,55 @@ msgstr "Plataforma calentada" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Volumen de impresión calentado" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Tipo de GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ajustes del cabezal de impresión" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Altura del puente" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "Iniciar GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "Finalizar GCode" @@ -1567,22 +1456,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Desplazamiento de la tobera sobre el eje X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "GCode final del extrusor" @@ -1593,7 +1482,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1608,16 +1497,16 @@ msgctxt "@label" msgid "ratings" msgstr "calificaciones" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Complementos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiales" @@ -1627,49 +1516,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1730,17 +1619,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Salir de Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contribuciones de la comunidad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Complementos de la comunidad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiales genéricos" @@ -1801,27 +1690,47 @@ msgctxt "@label" msgid "Featured" msgstr "Destacado" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilidad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Máquina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Placa de impresión" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Soporte" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Calidad" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Especificaciones técnicas" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Especificaciones de seguridad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Directrices de impresión" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Sitio web" @@ -1921,70 +1830,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Administrar impresora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Vidrio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "La cámara web no se encuentra disponible porque está supervisando una impresora en la nube." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Cargando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "No disponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "No se puede conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Sin actividad" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Sin título" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anónimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Debe cambiar la configuración" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Detalles" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Impresora no disponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Primera disponible" @@ -1994,209 +1909,195 @@ msgctxt "@label" msgid "Queued" msgstr "En cola" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "No hay trabajos de impresión en la cola. Segmentar y enviar un trabajo para añadir uno." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Trabajos de impresión" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Tiempo de impresión total" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Esperando" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Se han imprimido todos los trabajos." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -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:50 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Conexión existente" - -#: /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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar con la impresora en red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Para imprimir directamente en la impresora a través de la red, asegúrese de que é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\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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Seleccione la impresora en la lista siguiente:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Eliminar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Actualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Si la impresora no aparece en la lista, lea la guía de solución de problemas de impresión y red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versión de firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Dirección" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Esta impresora no está configurada para alojar un grupo de impresoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Esta impresora aloja un grupo de %1 impresoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La impresora todavía no ha respondido en esta dirección." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Dirección IP no válida" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Introduzca una dirección IP válida." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Dirección de la impresora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Introduzca la dirección IP o el nombre de host de la impresora en la red." +msgid "Enter the IP address of your printer on the network." +msgstr "Introduzca la dirección IP de la impresora en la red." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "Aceptar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:96 msgctxt "@label:status" msgid "Resuming..." msgstr "Reanudando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Termina el %1 a las %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Imprimir a través de la red" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Selección de la impresora" @@ -2285,68 +2186,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Anular" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Conecta a una impresora" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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." +"- 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 su impresora está conectada:\n" +"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." +"- Compruebe que la impresora está conectada a la red.\n" +"- Compruebe que ha iniciado sesión para ver impresoras conectadas a la nube." #: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" @@ -2555,70 +2448,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavizado" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo de malla" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modelo normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimir como soporte" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "No crear soporte en otros modelos (por superposición)" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modificar ajustes de otros modelos (por superposición)" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modificar ajustes del relleno de otros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Seleccionar ajustes" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Seleccionar ajustes o personalizar este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar todo" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de malla" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como soporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificar los ajustes de las superposiciones" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "No es compatible con superposiciones" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Solo relleno" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Seleccionar ajustes" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir proyecto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Actualizar existente" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Crear nuevo" @@ -2645,6 +2537,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Actualizar" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Crear nuevo" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2658,7 +2555,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes del perfil" @@ -2669,75 +2566,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en el perfil?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nombre" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "No está en el perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 sobrescrito" msgstr[1] "%1 sobrescritos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 sobrescrito" msgstr[1] "%1, %2 sobrescritos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Ajustes del material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "¿Cómo debería solucionarse el conflicto en el material?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidad de los ajustes" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Ajustes visibles:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de un total de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Si carga un proyecto, se borrarán todos los modelos de la placa de impresión." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Abrir" @@ -2844,48 +2747,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Crea una copia de seguridad de forma automática cada día que inicia Cura." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "No compatible" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Exportar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Consejo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Ensayo de impresión" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Lista de verificación" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Bloque Olsson" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2971,170 +2832,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "¿Está seguro de que desea cancelar la impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Información" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmar cambio de diámetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "El nuevo diámetro del filamento está ajustado en %1 mm y no es compatible con el extrusor actual. ¿Desea continuar?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Mostrar nombre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo de material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Color" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propiedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diámetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Coste del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" -msgstr "Anchura del filamento" +msgstr "Peso del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Longitud del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Coste por metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Este material está vinculado a %1 y comparte alguna de sus propiedades." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Desvincular material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descripción" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Información sobre adherencia" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Ajustes de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Activar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Crear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Exportar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmar eliminación" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "¿Seguro que desea eliminar %1? ¡Esta acción no se puede deshacer!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "No se pudo importar el material en %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "El material se ha importado correctamente en %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Se ha producido un error al exportar el material a %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "El material se ha exportado correctamente a %1" @@ -3149,414 +3016,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Comprobar todo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Actual" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unidad" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Tendrá que reiniciar la aplicación para que estos cambios tengan efecto." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Segmentar automáticamente al cambiar los ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Segmentar automáticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamiento de la ventanilla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Resaltar en rojo las áreas del modelo sin soporte. Sin soporte, estas áreas no se imprimirán correctamente." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar voladizos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Mueve la cámara de manera que el modelo se encuentre en el centro de la vista cuando se selecciona un modelo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrar cámara cuando se selecciona elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "¿Se debería invertir el comportamiento predeterminado del zoom de cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Invertir la dirección del zoom de la cámara." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "¿Debería moverse el zoom en la dirección del ratón?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Hacer zoom en la dirección del ratón no es compatible con la perspectiva ortográfica." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Hacer zoom en la dirección del ratón" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "¿Deben moverse los modelos en la plataforma de modo que no se crucen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" 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:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "¿Deben moverse los modelos del área de impresión de modo que no toquen la placa de impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Arrastrar modelos a la placa de impresión de forma automática" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Se muestra el mensaje de advertencia en el lector de GCode." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Mensaje de advertencia en el lector de GCode" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "¿Debe forzarse el modo de compatibilidad de la capa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forzar modo de compatibilidad de la vista de capas (necesario reiniciar)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "¿Debería abrirse Cura en el lugar donde se cerró?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurar la posición de la ventana al inicio" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "¿Qué tipo de renderizado de cámara debería usarse?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Renderizado de cámara:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir y guardar archivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "¿Deben ajustarse los modelos al volumen de impresión si son demasiado grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Escalar modelos de gran tamaño" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modelo puede mostrarse demasiado pequeño si su unidad son metros en lugar de milímetros, por ejemplo. ¿Deben escalarse estos modelos?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Escalar modelos demasiado pequeños" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "¿Se deberían seleccionar los modelos después de haberse cargado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Seleccionar modelos al abrirlos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "¿Debe añadirse automáticamente un prefijo basado en el nombre de la impresora al nombre del trabajo de impresión?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Agregar prefijo de la máquina al nombre del trabajo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "¿Mostrar un resumen al guardar un archivo de proyecto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Mostrar un cuadro de diálogo de resumen al guardar el proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamiento predeterminado al abrir un archivo del proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamiento predeterminado al abrir un archivo del proyecto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Preguntar siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir siempre como un proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar modelos siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Si ha realizado cambios en un perfil y, a continuación, ha cambiado a otro, aparecerá un cuadro de diálogo que le preguntará si desea guardar o descartar los cambios. También puede elegir el comportamiento predeterminado, así ese cuadro de diálogo no volverá a aparecer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Perfiles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamiento predeterminado para los valores modificados al cambiar a otro perfil: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Preguntar siempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Descartar siempre los ajustes modificados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Transferir siempre los ajustes modificados al nuevo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacidad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "¿Debe Cura buscar actualizaciones cuando se abre el programa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Buscar actualizaciones al iniciar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "¿Deben enviarse datos anónimos sobre la impresión a Ultimaker? Tenga en cuenta que no se envían ni almacenan modelos, direcciones IP ni otra información de identificación personal." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar información (anónima) de impresión" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Más información" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Cambiar nombre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfiles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Crear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplicado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Crear perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Introduzca un nombre para este perfil." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Cambiar nombre de perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impresora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Perfiles predeterminados" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Actualizar perfil con ajustes o sobrescrituras actuales" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar cambios actuales" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Este perfil utiliza los ajustes predeterminados especificados por la impresora, por eso no aparece ningún ajuste o sobrescritura en la lista que se ve a continuación." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Los ajustes actuales coinciden con el perfil seleccionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ajustes globales" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Marketplace" @@ -3616,36 +3491,36 @@ msgstr "Sin título" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "buscar ajustes" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor en todos los extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copiar todos los valores cambiados en todos los extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "No mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mostrar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidad de los ajustes..." @@ -3661,32 +3536,32 @@ msgstr "" "\n" "Haga clic para mostrar estos ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Este ajuste siempre se comparte entre extrusores. Si lo modifica, modificará el valor de todos los extrusores." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "El valor se resuelve según los valores de los extrusores. " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3697,7 +3572,7 @@ msgstr "" "\n" "Haga clic para restaurar el valor del perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3708,12 +3583,19 @@ msgstr "" "\n" "Haga clic para restaurar el valor calculado." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizado" @@ -3738,36 +3620,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Generar estructuras para soportar piezas del modelo que tengan voladizos. Sin estas estructuras, estas piezas se romperían durante la impresión." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Altura de capa" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Ha modificado algunos ajustes del perfil. Si desea cambiarlos, hágalo en el modo personalizado." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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ámbielas para poder habilitar este perfil de calidad." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Hay un perfil personalizado activado en este momento. Para habilitar el control deslizante de calidad, seleccione un perfil de calidad predeterminado en la pestaña Personalizado" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3778,12 +3645,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Apagado" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3794,6 +3666,11 @@ msgstr "" "\n" "Haga clic para abrir el administrador de perfiles." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Perfiles personalizados" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3829,59 +3706,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Temperatura objetivo del extremo caliente. El extremo caliente se calentará o enfriará en función de esta temperatura. Si el valor es 0, el calentamiento del extremo caliente se desactivará." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Temperatura actual de este extremo caliente." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Temperatura a la que se va a precalentar el extremo caliente." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Precalentar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Caliente el extremo caliente antes de imprimir. Puede continuar ajustando la impresión durante el calentamiento, así no tendrá que esperar a que el extremo caliente se caliente para poder imprimir." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Color del material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Material en este extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tobera insertada en este extrusor." @@ -3921,12 +3798,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genérico" @@ -3946,42 +3823,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Impresora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir como extrusor activo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Habilitar extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Deshabilitar extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Placa de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Perfil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posición de la cámara" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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" @@ -4001,17 +3883,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gestionar visibilidad de los ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Guardar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Exportar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Exportar selección..." @@ -4040,12 +3922,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Configuraciones" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Seleccionar configuración" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Configuraciones" @@ -4075,12 +3957,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Habilitado" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Utilice pegamento con esta combinación de materiales para lograr una mejor adhesión." @@ -4100,22 +3982,22 @@ 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" @@ -4125,6 +4007,11 @@ msgctxt "@label" msgid "View type" msgstr "Ver tipo" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista de objetos" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4176,32 +4063,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Ningún cálculo de costes disponible" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" msgstr "No se puede segmentar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Cancelar" @@ -4236,233 +4128,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Impresoras preconfiguradas" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Marketplace" @@ -4477,49 +4374,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cerrando Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "¿Seguro que desea salir de Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar paquete" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir archivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Hemos encontrado uno o más archivos de GCode entre los archivos que ha seleccionado. Solo puede abrir los archivos GCode de uno en uno. Si desea abrir un archivo GCode, seleccione solo uno." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Agregar impresora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Novedades" @@ -4590,17 +4487,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Acerca de Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "versión: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Solución completa para la impresión 3D de filamento fundido." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4609,122 +4506,122 @@ 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 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Interfaz gráfica de usuario (GUI)" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Entorno de la aplicación" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Generador de GCode" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Biblioteca de comunicación entre procesos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Lenguaje de programación" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "Entorno de la GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Enlaces del entorno de la GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Biblioteca de enlaces C/C++" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Formato de intercambio de datos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Biblioteca de apoyo para cálculos científicos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Biblioteca de apoyo para cálculos más rápidos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Biblioteca de apoyo para gestionar archivos STL" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Biblioteca de compatibilidad para trabajar con objetos planos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Biblioteca de compatibilidad para trabajar con mallas triangulares" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Biblioteca de compatibilidad para analizar redes complejas" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Biblioteca de compatibilidad para trabajar con archivos 3MF" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Biblioteca de compatibilidad para metadatos y transmisión de archivos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Biblioteca de comunicación en serie" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Biblioteca de detección para Zeroconf" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteca de recorte de polígonos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Biblioteca HTTP de Python" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Fuente" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Iconos SVG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Implementación de la aplicación de distribución múltiple de Linux" @@ -4744,32 +4641,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Guardar proyecto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Placa de impresión" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 y material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "No mostrar resumen de proyecto al guardar de nuevo" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Guardar" @@ -4945,12 +4837,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Solución de problemas" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Nombre de la impresora" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Indique un nombre para su impresora" @@ -5009,20 +4901,30 @@ msgctxt "@button" msgid "Get started" msgstr "Empezar" -#: /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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Vista en 3D" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vista frontal" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Vista superior" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vista del lado izquierdo" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vista del lado derecho" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5084,16 +4986,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Comprobador de modelos" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Vuelva el contenido de todas las configuraciones en un archivo HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God Mode" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5104,15 +4996,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Actualizador de firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Crear un perfil de cambios de calidad aplanado." +msgid "Provides support for reading AMF files." +msgstr "Proporciona asistencia para leer archivos AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Aplanador de perfil" +msgid "AMF Reader" +msgstr "Lector de AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -5124,16 +5016,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impresión USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permite guardar el segmento resultante como un archivo X3G para dar compatibilidad a impresoras que leen este formato (Malyan, Makerbot y otras impresoras basadas en Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5176,23 +5058,13 @@ msgstr "Complemento de dispositivo de salida de unidad extraíble" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gestiona las conexiones de red a las impresoras Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gestiona las conexiones de red de las impresoras Ultimaker conectadas." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Conexión de red UM3" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Conexión en red de Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5324,6 +5196,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Actualización de la versión 3.3 a la 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Actualiza la configuración de Cura 4.3 a Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Actualización de la versión 4.3 a la 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5384,6 +5266,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Actualización de la versión 3.0 a la 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Actualiza la configuración de Cura 4.1 a Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Actualización de la versión 4.1 a la 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5414,6 +5306,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Actualización de la versión 2.2 a la 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Actualiza la configuración de Cura 4.2 a Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Actualización de la versión 4.2 a la 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5424,6 +5326,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Lector de imágenes" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Proporciona asistencia para leer archivos 3D." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Lector Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5454,16 +5366,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Lector de 3MF" -#: SVGToolpathReader/build/plugin.json -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." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Lector de trayectoria de herramienta de SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5504,16 +5406,6 @@ 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." @@ -5554,6 +5446,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lector de perfiles de Cura" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Aplanar ajustes activos" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "El perfil se ha aplanado y activado." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Escribe X3g en archivos" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Archivo X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Archivo X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Asistente del perfil" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Asistente del perfil" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Volver a intentar" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "No crear soporte en otros modelos (por superposición)" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modificar ajustes de otros modelos (por superposición)" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modificar ajustes del relleno de otros modelos" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Actualizar existente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "No compatible" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Consejo" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Ensayo de impresión" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista de verificación" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Seleccione cualquier actualización de este Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Bloque Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Renderizado de cámara: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Utilizar funcionalidad de placa de impresión múltiple" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Utilizar funcionalidad de placa de impresión múltiple (reinicio requerido)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Perfiles predeterminados" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "buscar ajustes" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Altura de capa" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Este perfil de calidad no se encuentra disponible para su configuración de material y tobera actual. Cámbielas para poder habilitar este perfil de calidad." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Hay un perfil personalizado activado en este momento. Para habilitar el control deslizante de calidad, seleccione un perfil de calidad predeterminado en la pestaña Personalizado" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Placa de impresión" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Perfil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Placa de impresión" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Vuelva el contenido de todas las configuraciones en un archivo HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "God Mode" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Crear un perfil de cambios de calidad aplanado." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Aplanador de perfil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permite a los fabricantes de material crear nuevos perfiles de material y calidad mediante una IU integrada." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Imprimir asistente del perfil" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Conectado a través de la red." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Conectado a través de la red. Apruebe la solicitud de acceso en la impresora." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Conectado a través de la red. No hay acceso para controlar la impresora." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Acceso a la impresora solicitado. Apruebe la solicitud en la impresora" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Estado de la autenticación" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Estado de la autenticación" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Reenvía la solicitud de acceso" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Acceso a la impresora aceptado" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "No hay acceso para imprimir con esta impresora. No se puede enviar el trabajo de impresión." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Solicitar acceso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Envía la solicitud de acceso a la impresora" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "No se puede iniciar un nuevo trabajo de impresión." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Un problema con la configuración de Ultimaker impide iniciar la impresión. Soluciónelo antes de continuar." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Configuración desajustada" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "¿Seguro que desea imprimir con la configuración seleccionada?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "La configuración o calibración de la impresora y de Cura no coinciden. Para obtener el mejor resultado, segmente siempre los PrintCores y los materiales que se insertan en la impresora." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Envío de nuevos trabajos (temporalmente) bloqueado; se sigue enviando el trabajo de impresión previo." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Enviando datos a la impresora" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Enviando datos" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "No se ha cargado ningún PrintCore en la ranura {slot_number}." + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "No se ha cargado ningún material en la ranura {slot_number}." + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore distinto (Cura: {cura_printcore_name}, impresora: {remote_printcore_name}) seleccionado para extrusor {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Material distinto (Cura: {0}, impresora: {1}) seleccionado para extrusor {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizar con la impresora" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "¿Desea utilizar la configuración actual de su impresora en Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Los PrintCores o los materiales de la impresora difieren de los del proyecto actual. Para obtener el mejor resultado, segmente siempre los PrintCores y materiales que se hayan insertado en la impresora." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Ver en pantalla" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} ha terminado de imprimir «{job_name}»." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "El trabajo de impresión '{job_name}' ha terminado." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impresión terminada" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vacío" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Desconocido" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Error de Cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "No se ha podido exportar el trabajo de impresión." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Se ha producido un error al conectarse a la nube." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Cargando a través de Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Conectar a Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "No volver a preguntarme para esta impresora." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Ahora ya puede enviar y supervisar sus trabajos de impresión desde cualquier lugar a través de su cuenta de Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "¡Conectado!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Revise su conexión" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "El equipo definido en el perfil {0} ({1}) no coincide con el equipo actual ({2}), no se ha podido importar." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Error al importar el perfil de {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Conexión existente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Esta impresora o grupo de impresoras ya se ha añadido a Cura. Seleccione otra impresora o grupo de impresoras." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduzca la dirección IP o el nombre de host de la impresora en la red." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Conecta a una impresora" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guía de ajustes de Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Hacer zoom en la dirección del ratón no es compatible con la perspectiva ortogonal." + +#~ msgid "Orthogonal" +#~ msgstr "Ortográfica" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gestiona las conexiones de red a las impresoras Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Conexión de red UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Proporciona información y explicaciones adicionales sobre los ajustes de Cura con imágenes y animaciones." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guía de ajustes" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guía de ajustes de Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "La configuración se ha cambiado para que coincida con los extrusores disponibles en este momento: [%s]." + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descripción del usuario" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Estas opciones no se encuentran disponibles porque está supervisando una impresora en la nube." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ir a Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Se han imprimido todos los trabajos." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Ver historial de impresión" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Para imprimir directamente en la impresora a través de la red, asegúrese de que ésta está conectada a la red utilizando un cable de red o conéctela a la red wifi. Si no conecta Cura con la impresora, también puede utilizar una unidad USB para transferir archivos GCode a la impresora.\n" +#~ "\n" +#~ "Seleccione la impresora de la siguiente lista:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Asegúrese de que su impresora está conectada:\n" +#~ "- Compruebe que la impresora está encendida.\n" +#~ "- Compruebe que la impresora está conectada a la red." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Ver solo placa de impresión actual" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Organizar todas las placas de impresión" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Organizar placa de impresión actual" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permite guardar el segmento resultante como un archivo X3G para dar compatibilidad a impresoras que leen este formato (Malyan, Makerbot y otras impresoras basadas en Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lee archivos SVG como trayectorias de herramienta para solucionar errores en los movimientos de la impresora." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Lector de trayectoria de herramienta de SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Registro de cambios" diff --git a/resources/i18n/es_ES/fdmextruder.def.json.po b/resources/i18n/es_ES/fdmextruder.def.json.po index 20529ad512..5d849cfc50 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Spanish\n" diff --git a/resources/i18n/es_ES/fdmprinter.def.json.po b/resources/i18n/es_ES/fdmprinter.def.json.po index d7e0cd2ff6..fbaf241481 100644 --- a/resources/i18n/es_ES/fdmprinter.def.json.po +++ b/resources/i18n/es_ES/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-05-28 09:34+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Spanish\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Spanish , Spanish \n" "Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -215,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Indica si la máquina tiene una placa de impresión caliente." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Tiene estabilización de temperatura del volumen de impresión" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Si la máquina puede estabilizar la temperatura del volumen de impresión." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -337,7 +347,7 @@ msgstr "Tiempo mínimo que un extrusor debe permanecer inactivo antes de que la #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "Tipo de GCode" #: fdmprinter.def.json @@ -1020,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Número de capas inferiores. Al calcularlo por el grosor inferior, este valor se redondea a un número entero." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Capas inferiores iniciales" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "El número de capas inferiores iniciales, desde la capa de impresión hacia arriba. Al calcularlo por el grosor inferior, este valor se redondea a un número" +" entero." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1270,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Esquina más pronunciada" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posición de costura en Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "La posición cerca de donde comenzará la impresión de cada parte de una capa." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Posterior izquierda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Posterior" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Posterior derecha" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Derecha" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Delantera derecha" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Delantera" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Delantera izquierda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Izquierda" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1368,8 @@ msgstr "Preferencia de esquina de costura" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura se realice en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior. «Costura inteligente» permite realizar la costura en ambas esquinas, pero opta con más frecuencia por las esquinas interiores, si resulta oportuno." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Ocultar o mostrar costura" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Costura inteligente" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1408,13 @@ msgstr "Cuando se habilita, las coordenadas de la costura en z son relativas al #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorar los pequeños huecos en Z" +msgid "No Skin in Z Gaps" +msgstr "Sin forro en huecos en Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Cuando el modelo tiene pequeños huecos verticales de solo unas pocas capas, normalmente suele haber forro alrededor de ellas en el espacio estrecho. Active este ajuste para no generar forro si el hueco vertical es muy pequeño. Esto mejora el tiempo de impresión y de segmentación, pero deja el relleno expuesto al aire." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1433,8 @@ msgstr "Habilitar alisado" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Pasar por la superficie superior una vez más, pero sin extruir material, para derretir la parte externa del plástico y crear una superficie más lisa." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Pasar por la superficie superior una vez más, pero esta vez extruyendo muy poco material, para derretir la capa superior del plástico y crear una superficie más lisa. La presión de la cámara en la boquilla se mantiene alta para que los pliegues de la superficie se llenen de material." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Cambio en la velocidad instantánea máxima durante el alisado." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Porcentaje de superposición del forro" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste la cantidad de superposición entre las paredes y (los extremos de) las líneas centrales del forro, como un porcentaje de los anchos de las líneas del forro y la pared más profunda. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Tenga en cuenta que, con un mismo ancho de la línea del forro y la pared, cualquier porcentaje superior al 50 % ya puede provocar que cualquier forro sobrepase la pared, debido a que en ese punto la posición de la tobera del extrusor del forro ya puede sobrepasar la mitad de la pared." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Superposición del forro" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste la cantidad de superposición entre las paredes y (los extremos de) las líneas centrales del forro. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Tenga en cuenta que, con un mismo ancho de la línea del forro y la pared, cualquier valor superior a la mitad del ancho de la pared ya puede provocar que cualquier forro sobrepase la pared, debido a que en ese punto la posición de la tobera del extrusor del forro ya puede sobrepasar la mitad de la pared." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1615,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "El patrón de relleno se mueve esta distancia a lo largo del eje Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Comienzo de relleno aleatorio" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Determine qué línea de relleno se imprime primero. Esto evita que un segmento se convierta en el más fuerte, pero a expensas de un movimiento adicional." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1669,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Cantidad de superposición entre el relleno y las paredes. Una ligera superposición permite que las paredes conecten firmemente con el relleno." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Porcentaje de superposición del forro" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajuste la cantidad de superposición entre las paredes y (los extremos de) las líneas centrales del forro, como un porcentaje de los anchos de las líneas del forro y la pared más profunda. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Tenga en cuenta que, con un mismo ancho de la línea del forro y la pared, cualquier porcentaje superior al 50 % ya puede provocar que cualquier forro sobrepase la pared, debido a que en ese punto la posición de la tobera del extrusor del forro ya puede sobrepasar la mitad de la pared." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Superposición del forro" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajuste la cantidad de superposición entre las paredes y (los extremos de) las líneas centrales del forro. Una ligera superposición permite que las paredes estén firmemente unidas al forro. Tenga en cuenta que, con un mismo ancho de la línea del forro y la pared, cualquier valor superior a la mitad del ancho de la pared ya puede provocar que cualquier forro sobrepase la pared, debido a que en ese punto la posición de la tobera del extrusor del forro ya puede sobrepasar la mitad de la pared." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1876,8 +1962,8 @@ msgstr "Temperatura de volumen de impresión" #: fdmprinter.def.json 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á." +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" @@ -1989,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Índice de compresión en porcentaje." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Material cristalino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "¿Es este el tipo de material que se desprende limpiamente cuando se calienta (cristalino) o el que produce largas cadenas de polímeros entrelazadas (no cristalino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Velocidad de retracción antirrezumado" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Hasta dónde tiene que retraerse el material antes de detener el rezumado." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocidad de retracción antirrezumado" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Con qué velocidad tiene que retraerse el material durante un cambio de filamento para evitar el rezumado." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posición retraída de preparación de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Hasta dónde puede estirarse el filamento antes de que se rompa mientras se calienta." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocidad de retracción de preparación de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Con qué velocidad debe retraerse el filamento justo antes de romperse en una retracción." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posición retraída de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Hasta dónde debe retraerse el filamento para que se rompa limpiamente." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocidad de retracción de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Velocidad a la que debe retraerse el filamento para que se rompa limpiamente." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura de rotura" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Temperatura a la que se rompe el filamento de forma limpia." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1999,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Flujo de pared" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensación de flujo en líneas de pared." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Flujo de pared exterior" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensación de flujo en la línea de pared más externa." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Flujo de pared o paredes interiores" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensación de flujo en líneas de pared para todas las líneas excepto la más externa." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Flujo superior o inferior" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensación de flujo en las líneas superiores o inferiores." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Flujo de forro de superficie superior" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensación de flujo en líneas de las áreas superiores de la impresión." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Flujo de relleno" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensación de flujo en líneas de relleno." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Flujo de falda/borde" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensación de flujo en líneas de falda o borde." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Flujo de soporte" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensación de flujo en líneas de estructura de soporte." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Flujo de interfaz de soporte" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensación de flujo en líneas de techo o suelo de soporte." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Flujo de techo de soporte" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensación de flujo en líneas de techo de soporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Flujo de suelo de soporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensación de flujo en líneas de suelo de soporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Flujo de la torre auxiliar" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensación de flujo en líneas de la torre auxiliar." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2116,7 +2402,7 @@ msgstr "Limitar las retracciones de soporte" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Omitir la retracción al moverse de soporte a soporte en línea recta. Habilitar este ajuste ahorra tiempo de impresión pero puede ocasionar un encordado excesivo en la estructura de soporte." #: fdmprinter.def.json @@ -2169,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Velocidad a la que se retrae el filamento durante una retracción del cambio de tobera." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Volumen de cebado adicional tras cambio de tobera" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Material adicional que debe cebarse tras el cambio de tobera." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2360,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Velocidad a la que se imprimen la falda y el borde. Normalmente, esto se hace a la velocidad de la capa inicial, pero a veces es posible que se prefiera imprimir la falda o el borde a una velocidad diferente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocidad máxima de Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocidad del salto en Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Velocidad máxima a la que se mueve la placa de impresión. Definir este valor en 0 hace que la impresión utilice los valores predeterminados de la velocidad máxima de Z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Velocidad a la que se realiza el movimiento vertical en la dirección Z para los saltos en Z. Suele ser inferior a la velocidad de impresión porque la placa de impresión o el puente de la máquina es más difícil de desplazar." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2869,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Distancia entre la tobera y las partes ya impresas, cuando se evita durante movimientos de desplazamiento." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Comenzar capas con la misma parte" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "En cada capa, comenzar imprimiendo el objeto cerca del mismo punto, de forma que no se comienza una capa imprimiendo la pieza en la que finalizó la capa anterior. Esto permite mejorar los voladizos y las partes pequeñas, a costa de un mayor tiempo de impresión." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3285,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distancia entre las líneas de estructuras del soporte de la capa inicial impresas. Este ajuste se calcula por la densidad del soporte." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Dirección de línea de relleno de soporte" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientación del patrón de relleno para soportes. El patrón de relleno de soporte se gira en el plano horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se usa el ángulo predeterminado de 0 grados." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3421,8 +3707,8 @@ msgstr "Distancia de unión del soporte" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando estructuras separadas están más cerca entre sí que de este valor, las estructuras se combinan en una." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando las estructuras separadas están más cerca entre sí que este valor, se combinan en una." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3706,8 +3992,9 @@ msgstr "Área de la interfaz de soporte mínima" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Tamaño del área mínima para los polígonos de la interfaz de soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamaño del área mínima para los polígonos de la interfaz de soporte. Los polígonos que posean un área de menor tamaño que este valor se imprimirán como" +" soporte normal." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3716,8 +4003,8 @@ msgstr "Área de los techos del soporte mínima" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Tamaño del área mínima para los techos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamaño del área mínima para los techos del soporte. Los polígonos que posean un área de menor tamaño que este valor se imprimirán como soporte normal." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3726,8 +4013,8 @@ msgstr "Área de los suelos del soporte mínima" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Tamaño del área mínima para los suelos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamaño del área mínima para los suelos del soporte. Los polígonos que posean un área de menor tamaño que este valor se imprimirán como soporte normal." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3759,6 +4046,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Cantidad de desplazamiento aplicado a los suelos del soporte." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direcciones de línea de interfaz de soporte" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se utilizan los ángulos estándar (que varían entre 45 y 135 grados si las interfaces son bastante gruesas o de 90 grados en otro caso)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direcciones de línea del techo de soporte" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se utilizan los ángulos estándar (que varían entre 45 y 135 grados si las interfaces son bastante gruesas o de 90 grados en otro caso)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direcciones de línea del suelo de soporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Una lista de los valores enteros de las direcciones de línea que se van a utilizar. Los elementos de la lista se usan secuencialmente a medida que avanzan las capas y cuando se alcanza el final de la lista, comienza de nuevo desde el principio. Los elementos de la lista están separados por comas y toda la lista aparece entre corchetes. El valor predeterminado es una lista vacía, lo que significa que se utilizan los ángulos estándar (que varían entre 45 y 135 grados si las interfaces son bastante gruesas o de 90 grados en otro caso)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3800,14 +4117,14 @@ msgid "The diameter of a special tower." msgstr "Diámetro de una torre especial." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diámetro mínimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diámetro máximo soportado por la torre" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Diámetro mínimo en las direcciones X/Y de una pequeña área que soportará una torre de soporte especializada." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Diámetro máximo en las direcciones X/Y de una pequeña área que debe ser soportada por una torre de soporte especializada." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4303,16 +4620,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprimir una torre junto a la impresión que sirve para preparar el material tras cada cambio de tobera." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre auxiliar circular" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Hacer que la torre auxiliar sea circular." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4353,16 +4660,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Coordenada Y de la posición de la torre auxiliar." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Flujo de la torre auxiliar" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4503,6 +4800,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Eliminar (si las hubiera) las capas vacías por debajo de la primera capa impresa. Deshabilitar este ajuste puede hacer que aparezcan primeras capas vacías si el ajuste de tolerancia de segmentación está establecido en Exclusiva o Medio." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolución máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "El tamaño mínimo de un segmento de línea tras la segmentación. Si se aumenta, la resolución de la malla será menor. Esto puede permitir a la impresora mantener la velocidad que necesita para procesar GCode y aumentará la velocidad de segmentación al eliminar detalles de la malla que, de todas formas, no puede procesar." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Resolución de desplazamiento máximo" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "El tamaño mínimo de un segmento de línea de desplazamiento tras la segmentación. Si se aumenta, los movimientos de desplazamiento tendrán esquinas menos suavizadas. Esto puede le permite a la impresora mantener la velocidad que necesita para procesar GCode pero puede ocasionar que evitar el modelo sea menos preciso." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Desviación máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "La desviación máxima permitida al reducir la resolución en el ajuste de la resolución máxima. Si se aumenta el valor, la impresión será menos precisa pero el GCode será más pequeño. La desviación máxima es un límite para la resolución máxima, por lo que si las dos entran en conflicto, la desviación máxima siempre tendrá prioridad." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4665,8 +4992,8 @@ msgstr "Contornos espiralizados suaves" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Suaviza los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4878,36 +5205,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Se filtran los polígonos en capas segmentadas que tienen una circunferencia más pequeña que esta. Los valores más pequeños suponen una resolución de malla mayor a costa de un tiempo de segmentación. Está indicado, sobre todo, para impresoras SLA y modelos 3D muy pequeños con muchos detalles." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Resolución máxima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "El tamaño mínimo de un segmento de línea tras la segmentación. Si se aumenta, la resolución de la malla será menor. Esto puede permitir a la impresora mantener la velocidad que necesita para procesar GCode y aumentará la velocidad de segmentación al eliminar detalles de la malla que, de todas formas, no puede procesar." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Resolución de desplazamiento máximo" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "El tamaño mínimo de un segmento de línea de desplazamiento tras la segmentación. Si se aumenta, los movimientos de desplazamiento tendrán esquinas menos suavizadas. Esto puede le permite a la impresora mantener la velocidad que necesita para procesar GCode pero puede ocasionar que evitar el modelo sea menos preciso." - -#: fdmprinter.def.json -msgctxt "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" @@ -5048,16 +5345,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Velocidad a la que se desplaza durante el depósito por inercia con relación a la velocidad de la trayectoria de extrusión. Se recomienda un valor ligeramente por debajo del 100%, ya que la presión en el tubo guía disminuye durante el movimiento depósito por inercia." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alternar la rotación del forro" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna la dirección en la que se imprimen las capas superiores/inferiores. Normalmente, se imprimen únicamente en diagonal. Este ajuste añade las direcciones solo X y solo Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5165,8 +5452,8 @@ msgstr "Activar soporte cónico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Hace que las áreas de soporte sean más pequeñas en la parte inferior que en el voladizo." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5230,23 +5517,24 @@ msgstr "Distancia media entre los puntos aleatorios introducidos en cada segment #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Desplazamiento de extrusión máximo del factor de compensación del caudal" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Distancia máxima en mm que se va a compensar." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "La distancia máxima en mm para mover el filamento con el fin de compensar los cambios en el caudal." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Factor de compensación del caudal" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "La multiplicación factor por caudal da como resultado la conversión de distancia." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "La distancia para mover el filamento con el fin de compensar los cambios en el caudal, como porcentaje de la distancia a la que se movería el filamento" +" en un segundo de extrusión." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5539,13 +5827,14 @@ msgstr "La diferencia de altura de la siguiente altura de capa en comparación c #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Umbral de las capas de adaptación" +msgid "Adaptive Layers Topography Size" +msgstr "Tamaño de la topografía de las capas de adaptación" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Umbral para usar o no una capa más pequeña. Este número se compara con el curtido de la pendiente más empinada de una capa." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distancia horizontal objetivo entre dos capas adyacentes. Si se reduce este ajuste, se tendrán que utilizar capas más finas para acercar más los bordes" +" de las capas." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5554,8 +5843,9 @@ msgstr "Ángulo de voladizo de pared" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Las paredes con un ángulo de voladizo mayor que este se imprimirán con los ajustes de voladizo de pared. Cuando el valor sea 90, no se aplicará la condición de voladizo a la pared." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Las paredes con un ángulo de voladizo mayor que este se imprimirán con los ajustes de voladizo de pared. Cuando el valor sea 90, no se aplicará la condición" +" de voladizo a la pared. El voladizo que se apoya en el soporte tampoco se tratará como voladizo." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5907,6 +6197,47 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "La distancia para mover el cabezal hacia adelante y hacia atrás a lo largo del cepillo." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Tamaño máximo de agujero pequeño" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Los agujeros y contornos de las piezas con un diámetro menor que estos se imprimen utilizando la función Velocidad de pequeñas partes." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Longitud máxima de pequeñas partes" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Los contornos de las partes que sean más cortos que esta longitud se imprimen utilizando la función Velocidad de pequeñas partes." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocidad de pequeñas partes" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Las pequeñas partes se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión y la precisión." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocidad de la capa inicial de partes pequeñas" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Las pequeñas partes de la primera capa se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión" +" y la precisión." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5967,6 +6298,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformación que se aplicará al modelo cuando se cargue desde el archivo." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamaño del área mínima para los polígonos de la interfaz de soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamaño del área mínima para los techos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamaño del área mínima para los suelos del soporte. No se generarán polígonos que posean un área de menor tamaño que este valor." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alternar la rotación del forro" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna la dirección en la que se imprimen las capas superiores/inferiores. Normalmente, se imprimen únicamente en diagonal. Este ajuste añade las direcciones solo X y solo Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Desplazamiento de extrusión máximo del factor de compensación del caudal" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Distancia máxima en mm que se va a compensar." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Factor de compensación del caudal" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "La multiplicación factor por caudal da como resultado la conversión de distancia." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Umbral de las capas de adaptación" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Umbral para usar o no una capa más pequeña. Este número se compara con el curtido de la pendiente más empinada de una capa." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Las paredes con un ángulo de voladizo mayor que este se imprimirán con los ajustes de voladizo de pared. Cuando el valor sea 90, no se aplicará la condición de voladizo a la pared." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Las pequeñas partes se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión y la precisión." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocidad de primera capa" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Las pequeñas partes de la primera capa se imprimirán a este porcentaje de su velocidad de impresión normal. Una impresión más lenta puede mejorar la adhesión y la precisión." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Pasar por la superficie superior una vez más, pero sin extruir material, para derretir la parte externa del plástico y crear una superficie más lisa." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Comenzar capas con la misma parte" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "En cada capa, comenzar imprimiendo el objeto cerca del mismo punto, de forma que no se comienza una capa imprimiendo la pieza en la que finalizó la capa anterior. Esto permite mejorar los voladizos y las partes pequeñas, a costa de un mayor tiempo de impresión." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientación del patrón de relleno para soportes. El patrón de relleno de soporte se gira en el plano horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "La desviación máxima permitida al reducir la resolución en el ajuste de resolución máxima. Si se aumenta el valor, la impresión será menos precisa pero el GCode será más pequeño." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Tipo de GCode" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controlar si las esquinas del contorno del modelo influyen en la posición de la costura. «Ninguno» significa que las esquinas no influyen en la posición de la costura. «Ocultar costura» significa que es probable que la costura se realice en una esquina interior. «Mostrar costura» significa que es probable que la costura sea en una esquina exterior. «Ocultar o mostrar costura» significa que es probable que la costura se realice en una esquina interior o exterior." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorar los pequeños huecos en Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Cuando el modelo tiene pequeños huecos verticales, el tiempo de cálculo puede aumentar alrededor de un 5 % para generar el forro superior e inferior en estos espacios estrechos. En tal caso, desactive este ajuste." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "La temperatura utilizada para el volumen de impresión. Si el valor es 0, la temperatura de volumen de impresión no se ajustará." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omitir la retracción al moverse de soporte a soporte en línea recta. Habilitar este ajuste ahorra tiempo de impresión pero puede ocasionar un encordado excesivo en la estructura de soporte." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocidad máxima de Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Velocidad máxima a la que se mueve la placa de impresión. Definir este valor en 0 hace que la impresión utilice los valores predeterminados de la velocidad máxima de Z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Distancia máxima entre las estructuras del soporte en las direcciones X/Y. Cuando estructuras separadas están más cerca entre sí que de este valor, las estructuras se combinan en una." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diámetro mínimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Diámetro mínimo en las direcciones X/Y de una pequeña área que soportará una torre de soporte especializada." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre auxiliar circular" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Hacer que la torre auxiliar sea circular." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensación de flujo: la cantidad de material extruido se multiplica por este valor." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Suavice los contornos espiralizados para reducir la visibilidad de la costura Z (la costura Z debería ser apenas visible en la impresora pero seguirá siendo visible en la vista de capas). Tenga en cuenta que la suavización tenderá a desdibujar detalles finos de la superficie." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Función experimental: hace áreas de soporte más pequeñas en la parte inferior que en el voladizo." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Número de extrusores habilitados" diff --git a/resources/i18n/fdmextruder.def.json.pot b/resources/i18n/fdmextruder.def.json.pot index 4238e291b3..322be35b57 100644 --- a/resources/i18n/fdmextruder.def.json.pot +++ b/resources/i18n/fdmextruder.def.json.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Uranium json setting files\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" diff --git a/resources/i18n/fdmprinter.def.json.pot b/resources/i18n/fdmprinter.def.json.pot index d6de2f2dc1..89ff364e2d 100644 --- a/resources/i18n/fdmprinter.def.json.pot +++ b/resources/i18n/fdmprinter.def.json.pot @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Uranium json setting files\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE\n" @@ -218,6 +218,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -362,7 +372,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "" #: fdmprinter.def.json @@ -1111,6 +1121,18 @@ msgid "" "value is rounded to a whole number." msgstr "" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "" +"The number of initial bottom layers, from the build-plate upwards. When " +"calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1412,6 +1434,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1448,7 +1520,9 @@ msgid "" "seam. None means that corners have no influence on the seam position. Hide " "Seam makes the seam more likely to occur on an inside corner. Expose Seam " "makes the seam more likely to occur on an outside corner. Hide or Expose " -"Seam makes the seam more likely to occur at an inside or outside corner." +"Seam makes the seam more likely to occur at an inside or outside corner. " +"Smart Hiding allows both inside and outside corners, but chooses inside " +"corners more frequently, if appropriate." msgstr "" #: fdmprinter.def.json @@ -1471,6 +1545,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1486,15 +1565,17 @@ msgstr "" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" +msgid "No Skin in Z Gaps" msgstr "" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" msgid "" -"When the model has small vertical gaps, about 5% extra computation time can " -"be spent on generating top and bottom skin in these narrow spaces. In such " -"case, disable the setting." +"When the model has small vertical gaps of only a few layers, there should " +"normally be skin around those layers in the narrow space. Enable this " +"setting to not generate skin if the vertical gap is very small. This " +"improves printing time and slicing time, but technically leaves infill " +"exposed to the air." msgstr "" #: fdmprinter.def.json @@ -1518,9 +1599,10 @@ msgstr "" #: fdmprinter.def.json msgctxt "ironing_enabled description" msgid "" -"Go over the top surface one additional time, but without extruding material. " -"This is meant to melt the plastic on top further, creating a smoother " -"surface." +"Go over the top surface one additional time, but this time extruding very " +"little material. This is meant to melt the plastic on top further, creating " +"a smoother surface. The pressure in the nozzle chamber is kept high so that " +"the creases in the surface are filled with material." msgstr "" #: fdmprinter.def.json @@ -1621,6 +1703,39 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "" +"Adjust the amount of overlap between the walls and (the endpoints of) the " +"skin-centerlines, as a percentage of the line widths of the skin lines and " +"the innermost wall. A slight overlap allows the walls to connect firmly to " +"the skin. Note that, given an equal skin and wall line-width, any percentage " +"over 50% may already cause any skin to go past the wall, because at that " +"point the position of the nozzle of the skin-extruder may already reach past " +"the middle of the wall." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "" +"Adjust the amount of overlap between the walls and (the endpoints of) the " +"skin-centerlines. A slight overlap allows the walls to connect firmly to the " +"skin. Note that, given an equal skin and wall line-width, any value over " +"half the width of the wall may already cause any skin to go past the wall, " +"because at that point the position of the nozzle of the skin-extruder may " +"already reach past the middle of the wall." +msgstr "" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1809,6 +1924,19 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "" +"Randomize which infill line is printed first. This prevents one segment " +"becoming the strongest, but it does so at the cost of an additional travel " +"move." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1877,39 +2005,6 @@ msgid "" "allows the walls to connect firmly to the infill." msgstr "" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "" -"Adjust the amount of overlap between the walls and (the endpoints of) the " -"skin-centerlines, as a percentage of the line widths of the skin lines and " -"the innermost wall. A slight overlap allows the walls to connect firmly to " -"the skin. Note that, given an equal skin and wall line-width, any percentage " -"over 50% may already cause any skin to go past the wall, because at that " -"point the position of the nozzle of the skin-extruder may already reach past " -"the middle of the wall." -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "" -"Adjust the amount of overlap between the walls and (the endpoints of) the " -"skin-centerlines. A slight overlap allows the walls to connect firmly to the " -"skin. Note that, given an equal skin and wall line-width, any value over " -"half the width of the wall may already cause any skin to go past the wall, " -"because at that point the position of the nozzle of the skin-extruder may " -"already reach past the middle of the wall." -msgstr "" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -2151,8 +2246,8 @@ msgstr "" #: fdmprinter.def.json msgctxt "build_volume_temperature description" msgid "" -"The temperature used for build volume. If this is 0, the build volume " -"temperature will not be adjusted." +"The temperature of the environment to print in. If this is 0, the build " +"volume temperature will not be adjusted." msgstr "" #: fdmprinter.def.json @@ -2278,6 +2373,94 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "" +"Is this material the type that breaks off cleanly when heated (crystalline), " +"or is it the type that produces long intertwined polymer chains (non-" +"crystalline)?" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "" +"How fast the material needs to be retracted during a filament switch to " +"prevent oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "" +"How fast the filament needs to be retracted just before breaking it off in a " +"retraction." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "" +"The speed at which to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2290,6 +2473,127 @@ msgid "" "value." msgstr "" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "" +"Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2426,7 +2730,7 @@ msgstr "" msgctxt "limit_support_retractions description" msgid "" "Omit retraction when moving from support to support in a straight line. " -"Enabling this setting saves print time, but can lead to excesive stringing " +"Enabling this setting saves print time, but can lead to excessive stringing " "within the support structure." msgstr "" @@ -2490,6 +2794,16 @@ msgid "" "retraction." msgstr "" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2713,15 +3027,16 @@ msgid "" msgstr "" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" msgstr "" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" +msgctxt "speed_z_hop description" msgid "" -"The maximum speed with which the build plate is moved. Setting this to zero " -"causes the print to use the firmware defaults for the maximum z speed." +"The speed at which the vertical Z movement is made for Z Hops. This is " +"typically lower than the print speed since the build plate or machine's " +"gantry is harder to move." msgstr "" #: fdmprinter.def.json @@ -3285,20 +3600,6 @@ msgid "" "during travel moves." msgstr "" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "" -"In each layer start with printing the object near the same point, so that we " -"don't start a new layer with printing the piece which the previous layer " -"ended with. This makes for better overhangs and small parts, but increases " -"printing time." -msgstr "" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3784,15 +4085,18 @@ msgid "" msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle description" +msgctxt "support_infill_angles description" msgid "" -"Orientation of the infill pattern for supports. The support infill pattern " -"is rotated in the horizontal plane." +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angle 0 degrees." msgstr "" #: fdmprinter.def.json @@ -3946,7 +4250,7 @@ msgstr "" msgctxt "support_join_distance description" msgid "" "The maximum distance between support structures in the X/Y directions. When " -"seperate structures are closer together than this value, the structures " +"separate structures are closer together than this value, the structures " "merge into one." msgstr "" @@ -4275,7 +4579,7 @@ msgstr "" msgctxt "minimum_interface_area description" msgid "" "Minimum area size for support interface polygons. Polygons which have an " -"area smaller than this value will not be generated." +"area smaller than this value will be printed as normal support." msgstr "" #: fdmprinter.def.json @@ -4287,7 +4591,7 @@ msgstr "" msgctxt "minimum_roof_area description" msgid "" "Minimum area size for the roofs of the support. Polygons which have an area " -"smaller than this value will not be generated." +"smaller than this value will be printed as normal support." msgstr "" #: fdmprinter.def.json @@ -4299,7 +4603,7 @@ msgstr "" msgctxt "minimum_bottom_area description" msgid "" "Minimum area size for the floors of the support. Polygons which have an area " -"smaller than this value will not be generated." +"smaller than this value will be printed as normal support." msgstr "" #: fdmprinter.def.json @@ -4332,6 +4636,54 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "" +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angles (alternates between 45 and 135 degrees if " +"interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angles (alternates between 45 and 135 degrees if " +"interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "" +"A list of integer line directions to use. Elements from the list are used " +"sequentially as the layers progress and when the end of the list is reached, " +"it starts at the beginning again. The list items are separated by commas and " +"the whole list is contained in square brackets. Default is an empty list " +"which means use the default angles (alternates between 45 and 135 degrees if " +"interfaces are quite thick or 90 degrees)." +msgstr "" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -4380,14 +4732,14 @@ msgid "The diameter of a special tower." msgstr "" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" msgstr "" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" +msgctxt "support_tower_maximum_supported_diameter description" msgid "" -"Minimum diameter in the X/Y directions of a small area which is to be " +"Maximum diameter in the X/Y directions of a small area which is to be " "supported by a specialized support tower." msgstr "" @@ -4962,16 +5314,6 @@ msgid "" "each nozzle switch." msgstr "" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -5014,18 +5356,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "" -"Flow compensation: the amount of material extruded is multiplied by this " -"value." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -5200,6 +5530,49 @@ msgid "" "setting is set to Exclusive or Middle." msgstr "" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "" +"The minimum size of a line segment after slicing. If you increase this, the " +"mesh will have a lower resolution. This may allow the printer to keep up " +"with the speed it has to process g-code and will increase slice speed by " +"removing details of the mesh that it can't process anyway." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "" +"The minimum size of a travel line segment after slicing. If you increase " +"this, the travel moves will have less smooth corners. This may allow the " +"printer to keep up with the speed it has to process g-code, but it may cause " +"model avoidance to become less accurate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "" +"The maximum deviation allowed when reducing the resolution for the Maximum " +"Resolution setting. If you increase this, the print will be less accurate, " +"but the g-code will be smaller. Maximum Deviation is a limit for Maximum " +"Resolution, so if the two conflict the Maximum Deviation will always be held " +"true." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -5397,7 +5770,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" msgid "" -"Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-" +"Smooth the spiralized contours to reduce the visibility of the Z seam (the Z " "seam should be barely visible on the print but will still be visible in the " "layer view). Note that smoothing will tend to blur fine surface details." msgstr "" @@ -5664,47 +6037,6 @@ msgid "" "and very tiny 3D models with a lot of details." msgstr "" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "" -"The minimum size of a line segment after slicing. If you increase this, the " -"mesh will have a lower resolution. This may allow the printer to keep up " -"with the speed it has to process g-code and will increase slice speed by " -"removing details of the mesh that it can't process anyway." -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "" -"The minimum size of a travel line segment after slicing. If you increase " -"this, the travel moves will have less smooth corners. This may allow the " -"printer to keep up with the speed it has to process g-code, but it may cause " -"model avoidance to become less accurate." -msgstr "" - -#: fdmprinter.def.json -msgctxt "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" @@ -5875,19 +6207,6 @@ msgid "" "coasting move the pressure in the bowden tube drops." msgstr "" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "" -"Alternate the direction in which the top/bottom layers are printed. Normally " -"they are printed diagonally only. This setting adds the X-only and Y-only " -"directions." -msgstr "" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -6017,9 +6336,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "" -"Experimental feature: Make support areas smaller at the bottom than at the " -"overhang." +msgid "Make support areas smaller at the bottom than at the overhang." msgstr "" #: fdmprinter.def.json @@ -6101,22 +6418,27 @@ msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." +msgid "" +"The maximum distance in mm to move the filament to compensate for changes in " +"flow rate." msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." +msgid "" +"How far to move the filament in order to compensate for changes in flow " +"rate, as a percentage of how far the filament would move in one second of " +"extrusion." msgstr "" #: fdmprinter.def.json @@ -6468,14 +6790,15 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" +msgid "Adaptive Layers Topography Size" msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" msgid "" -"Threshold whether to use a smaller layer or not. This number is compared to " -"the tan of the steepest slope in a layer." +"Target horizontal distance between two adjacent layers. Reducing this " +"setting causes thinner layers to be used to bring the edges of the layers " +"closer together." msgstr "" #: fdmprinter.def.json @@ -6487,7 +6810,9 @@ msgstr "" msgctxt "wall_overhang_angle description" msgid "" "Walls that overhang more than this angle will be printed using overhanging " -"wall settings. When the value is 90, no walls will be treated as overhanging." +"wall settings. When the value is 90, no walls will be treated as " +"overhanging. Overhang that gets supported by support will not be treated as " +"overhang either." msgstr "" #: fdmprinter.def.json @@ -6887,6 +7212,55 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "" +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "" +"Holes and part outlines with a diameter smaller than this will be printed " +"using Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "" +"Feature outlines that are shorter than this length will be printed using " +"Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "" +"Small features will be printed at this percentage of their normal print " +"speed. Slower printing can help with adhesion and accuracy." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "" +"Small features on the first layer will be printed at this percentage of " +"their normal print speed. Slower printing can help with adhesion and " +"accuracy." +msgstr "" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" diff --git a/resources/i18n/fi_FI/cura.po b/resources/i18n/fi_FI/cura.po index f1884abf56..bfc110737f 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Laitteen asetukset" @@ -38,13 +38,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "GCode-tiedosto" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "" @@ -54,7 +54,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -69,55 +69,44 @@ msgctxt "@action" msgid "Update Firmware" msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Aktivoitujen asetusten tasoitus" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profiili on tasoitettu ja aktivoitu." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-tulostus" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Tulosta USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Yhdistetty USB:n kautta" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-tiedosto" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." msgstr "" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" msgstr "" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 @@ -154,7 +143,7 @@ msgid "Save to Removable Drive {0}" msgstr "Tallenna siirrettävälle asemalle {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "" @@ -191,10 +180,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Ei voitu tallentaa siirrettävälle asemalle {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Virhe" @@ -223,9 +211,9 @@ msgstr "Poista siirrettävä asema {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Varoitus" @@ -252,339 +240,156 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Siirrettävä asema" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Yhdistetty verkon kautta tulostimeen." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "" - -#: /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: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: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: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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "" - -#: /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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Lähetetään tietoja tulostimeen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Lähetetään tietoja" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Peruuta" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synkronoi tulostimen kanssa" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Yhdistä verkon kautta" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Tulosta verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Tulosta verkon kautta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" msgstr "" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 @@ -592,7 +397,7 @@ msgctxt "@item:inmenu" msgid "Monitor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Päivitystietoja ei löytynyt." @@ -619,12 +424,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Kerrosnäkymä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura ei näytä kerroksia täsmällisesti, kun rautalankatulostus on käytössä" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "" @@ -679,6 +484,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-kuva" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -743,12 +578,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Määritä mallikohtaiset asetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Suositeltu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Mukautettu" @@ -759,19 +594,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-tiedosto" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Suutin" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "" @@ -786,18 +621,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G File -tiedosto" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-coden jäsennys" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-coden tiedot" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Varmista, että G-code on tulostimelle ja sen tulostusasetuksille soveltuva, ennen kuin lähetät tiedoston siihen. G-coden esitys ei välttämättä ole tarkka." @@ -851,16 +686,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura-profiili" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -881,7 +706,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -897,141 +721,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Tiedosto on jo olemassa" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Tiedosto {0} on jo olemassa. Haluatko varmasti kirjoittaa sen päälle?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, python-format -msgctxt "@info:generic" -msgid "Settings have been changed to match the current availability of extruders: [%s]" +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Tuntematon" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Profiilin vienti epäonnistui tiedostoon {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Profiilin vienti epäonnistui tiedostoon {0}: Kirjoitin-lisäosa ilmoitti virheestä." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profiili viety tiedostoon {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 -#, 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 #, 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:181 +#, python-brace-format +msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Onnistuneesti tuotu profiili {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profiililla {0} on tuntematon tiedostotyyppi tai se on vioittunut." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Mukautettu profiili" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profiilista puuttuu laatutyyppi." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1097,19 +928,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Muu" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Esiviipaloitu tiedosto {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1117,73 +947,120 @@ 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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Sulje" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Lisää" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Peruuta" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "" + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Mukautetut profiilit" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Tuntematon" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Mukautettu materiaali" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Mukautettu" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Tulostustilavuuden korkeutta on vähennetty tulostusjärjestysasetuksen vuoksi, jotta koroke ei osuisi tulostettuihin malleihin." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Tulostustilavuus" @@ -1208,39 +1085,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Kappaleiden kertominen ja sijoittelu" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Kaikille kappaleille ei löydy paikkaa tulostustilavuudessa." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Sijoitetaan kappaletta" @@ -1381,53 +1258,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ladataan laitteita..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "" + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Asetetaan näkymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ladataan käyttöliittymää..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Vain yksi G-code-tiedosto voidaan ladata kerralla. Tiedoston {0} tuonti ohitettiin." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Muita tiedostoja ei voida ladata, kun G-code latautuu. Tiedoston {0} tuonti ohitettiin." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "" @@ -1440,15 +1322,15 @@ msgstr "X (leveys)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1480,50 +1362,55 @@ msgstr "" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y väh." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y enint." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Suulakkeiden määrä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "" @@ -1553,22 +1440,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Suuttimen X-siirtymä" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "" @@ -1579,7 +1466,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Asennettu" @@ -1594,16 +1481,16 @@ msgctxt "@label" msgid "ratings" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiaalit" @@ -1613,49 +1500,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1716,17 +1603,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "" @@ -1784,27 +1671,47 @@ msgctxt "@label" msgid "Featured" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "" @@ -1904,70 +1811,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Laiteohjelmiston päivitys epäonnistui puuttuvan laiteohjelmiston takia." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "" @@ -1977,212 +1890,195 @@ msgctxt "@label" msgid "Queued" msgstr "Jonossa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Yhdistä verkkotulostimeen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." msgstr "" -"Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n" -"\n" -"Valitse tulostin alla olevasta luettelosta:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Muokkaa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Poista" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Päivitä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Jos tulostinta ei ole luettelossa, lue verkkotulostuksen vianetsintäopas" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tyyppi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Laiteohjelmistoversio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Osoite" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Tämän osoitteen tulostin ei ole vielä vastannut." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Yhdistä" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Tulostimen osoite" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." +msgid "Enter the IP address of your printer on the network." msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Tulosta" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Tulosta verkon kautta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Tulosta" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "" @@ -2271,64 +2167,55 @@ msgctxt "@action:button" msgid "Override" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Yhdistä tulostimeen" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 @@ -2538,72 +2425,71 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Tasoitus" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Valitse asetukset" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Valitse tätä mallia varten mukautettavat asetukset" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Suodatin..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Näytä kaikki" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Valitse asetukset" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Avaa projekti" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" -msgstr "Päivitä nykyinen" +msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" -msgstr "Luo uusi" +msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 @@ -2628,6 +2514,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Luo uusi" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2641,7 +2532,7 @@ msgid "Printer Group" msgstr "" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profiilin asetukset" @@ -2652,75 +2543,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Miten profiilin ristiriita pitäisi ratkaista?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nimi" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Ei profiilissa" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 ohitus" msgstr[1] "%1 ohitusta" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Johdettu seuraavista" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 ohitus" msgstr[1] "%1, %2 ohitusta" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Materiaaliasetukset" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Miten materiaalin ristiriita pitäisi ratkaista?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Asetusten näkyvyys" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Tila" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Näkyvät asetukset:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1/%2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Avaa" @@ -2827,48 +2724,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Vie" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block -lämmitysosa" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2954,170 +2809,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Haluatko varmasti keskeyttää tulostuksen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Tiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Näytä nimi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Merkki" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Materiaalin tyyppi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Väri" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Ominaisuudet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Tiheys" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Läpimitta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Tulostuslangan hinta" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Tulostuslangan paino" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Tulostuslangan pituus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Hinta metriä kohden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Materiaali on linkitetty kohteeseen %1 ja niillä on joitain samoja ominaisuuksia." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Poista materiaalin linkitys" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Kuvaus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Tarttuvuustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Tulostusasetukset" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Aktivoi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Luo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Jäljennös" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Tuo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Vie" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Tuo materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Materiaalin tuominen epäonnistui: %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Materiaalin tuominen onnistui: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Vie materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Materiaalin vieminen epäonnistui kohteeseen %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaalin vieminen onnistui kohteeseen %1" @@ -3132,414 +2993,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Tarkista kaikki" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Laskettu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Asetus" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Nykyinen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Yksikkö" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Sovellus on käynnistettävä uudelleen, jotta nämä muutokset tulevat voimaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Viipaloi automaattisesti, kun asetuksia muutetaan." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Viipaloi automaattisesti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Näyttöikkunan käyttäytyminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Korosta mallin vailla tukea olevat alueet punaisella. Ilman tukea nämä alueet eivät tulostu kunnolla." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Näytä uloke" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Siirtää kameraa siten, että valittuna oleva malli on näkymän keskellä." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Keskitä kamera kun kohde on valittu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Pitääkö Curan oletusarvoinen zoom-toimintatapa muuttaa päinvastaiseksi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Käännä kameran zoomin suunta päinvastaiseksi." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Tuleeko zoomauksen siirtyä hiiren suuntaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomaa hiiren suuntaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Pitäisikö alustalla olevia malleja siirtää niin, etteivät ne enää leikkaa toisiaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Varmista, että mallit ovat erillään" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Pitäisikö tulostusalueella olevia malleja siirtää alas niin, että ne koskettavat tulostusalustaa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Pudota mallit automaattisesti alustalle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Pakotetaanko kerros yhteensopivuustilaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Pakota kerrosnäkymän yhteensopivuustila (vaatii uudelleenkäynnistyksen)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Tiedostojen avaaminen ja tallentaminen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Pitäisikö mallit skaalata tulostustilavuuteen, jos ne ovat liian isoja?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaalaa suuret mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Malli voi vaikuttaa erittäin pieneltä, jos sen koko on ilmoitettu esimerkiksi metreissä eikä millimetreissä. Pitäisikö nämä mallit suurentaa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaalaa erittäin pienet mallit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Pitäisikö tulostustyön nimeen lisätä automaattisesti tulostimen nimeen perustuva etuliite?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Lisää laitteen etuliite työn nimeen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Näytetäänkö yhteenveto, kun projektitiedosto tallennetaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Näytä yhteenvetoikkuna, kun projekti tallennetaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Projektitiedoston avaamisen oletustoimintatapa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Projektitiedoston avaamisen oletustoimintatapa: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Avaa aina projektina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Tuo mallit aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Kun olet tehnyt muutokset profiiliin ja vaihtanut toiseen, näytetään valintaikkuna, jossa kysytään, haluatko säilyttää vai hylätä muutokset. Tässä voit myös valita oletuskäytöksen, jolloin valintaikkunaa ei näytetä uudelleen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Kysy aina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Tietosuoja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Pitäisikö Curan tarkistaa saatavilla olevat päivitykset, kun ohjelma käynnistetään?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Tarkista päivitykset käynnistettäessä" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Pitäisikö anonyymejä tietoja tulosteesta lähettää Ultimakerille? Huomaa, että malleja, IP-osoitteita tai muita henkilökohtaisia tietoja ei lähetetä eikä tallenneta." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Lähetä (anonyymit) tulostustiedot" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Nimeä uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiilit" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Luo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Jäljennös" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Luo profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Monista profiili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Nimeä profiili uudelleen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profiilin tuonti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profiilin vienti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Tulostin: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Päivitä nykyiset asetukset tai ohitukset profiiliin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Hylkää tehdyt muutokset" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Tässä profiilissa käytetään tulostimen oletusarvoja, joten siinä ei ole alla olevan listan asetuksia tai ohituksia." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Nykyiset asetukset vastaavat valittua profiilia." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Yleiset asetukset" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "" @@ -3599,36 +3468,36 @@ msgstr "" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +msgid "Search settings" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Kopioi arvo kaikkiin suulakepuristimiin" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Piilota tämä asetus" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Älä näytä tätä asetusta" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pidä tämä asetus näkyvissä" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Määritä asetusten näkyvyys..." @@ -3644,32 +3513,32 @@ msgstr "" "\n" "Tee asetuksista näkyviä napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Arvo perustuu suulakepuristimien arvoihin " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3680,7 +3549,7 @@ msgstr "" "\n" "Palauta profiilin arvo napsauttamalla." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3691,12 +3560,19 @@ msgstr "" "\n" "Palauta laskettu arvo napsauttamalla." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "" @@ -3721,36 +3597,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Muodosta rakenteita, jotka tukevat mallin ulokkeita sisältäviä osia. Ilman tukirakenteita kyseiset osat luhistuvat tulostuksen aikana." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Kerroksen korkeus" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3761,12 +3622,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3777,6 +3643,11 @@ msgstr "" "\n" "Avaa profiilin hallinta napsauttamalla." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3812,59 +3683,59 @@ 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 "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Suulake" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Kuuman pään kohdelämpötila. Kuuma pää lämpenee tai viilenee kohti tätä lämpötilaa. Jos asetus on 0, kuuman pään lämmitys sammutetaan." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Peruuta" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Esilämmitä" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Tämän suulakkeen materiaalin väri." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Tämän suulakkeen materiaali." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Tähän suulakkeeseen liitetty suutin." @@ -3904,12 +3775,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "" @@ -3929,42 +3800,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Tulostin" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Aseta aktiiviseksi suulakepuristimeksi" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profiili" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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 "" @@ -3984,17 +3860,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "" @@ -4023,12 +3899,12 @@ msgctxt "@header" msgid "Configurations" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "" @@ -4058,12 +3934,12 @@ msgctxt "@label" msgid "Enabled" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "" @@ -4083,22 +3959,22 @@ 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" @@ -4108,6 +3984,11 @@ msgctxt "@label" msgid "View type" msgstr "" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4156,32 +4037,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "" @@ -4216,233 +4102,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "" @@ -4457,49 +4348,49 @@ msgctxt "@label" msgid "This package will be installed after restarting." msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Asetukset" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Avaa tiedosto(t)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Löysimme vähintään yhden Gcode-tiedoston valitsemiesi tiedostojen joukosta. Voit avata vain yhden Gcode-tiedoston kerrallaan. Jos haluat avata Gcode-tiedoston, valitse vain yksi." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Lisää tulostin" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "" @@ -4570,17 +4461,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Tietoja Curasta" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Kokonaisvaltainen sulatettavan tulostuslangan 3D-tulostusratkaisu." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4589,122 +4480,122 @@ msgstr "" "Cura-ohjelman on kehittänyt Ultimaker B.V. yhteistyössä käyttäjäyhteisön kanssa.\n" "Cura hyödyntää seuraavia avoimeen lähdekoodiin perustuvia projekteja:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Graafinen käyttöliittymä" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Sovelluskehys" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Prosessien välinen tietoliikennekirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Ohjelmointikieli" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI-kehys" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUI-kehyksen sidonnat" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C/C++ -sidontakirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Data Interchange Format" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Tieteellisen laskennan tukikirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Nopeamman laskennan tukikirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "STL-tiedostojen käsittelyn tukikirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Tukikirjasto 3MF-tiedostojen käsittelyyn" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Sarjatietoliikennekirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConf-etsintäkirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Monikulmion leikkauskirjasto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Fontti" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG-kuvakkeet" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "" @@ -4724,32 +4615,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Tallenna projekti" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Suulake %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiaali" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Älä näytä projektin yhteenvetoa tallennettaessa" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Tallenna" @@ -4925,12 +4811,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "" @@ -4987,19 +4873,29 @@ msgctxt "@button" msgid "Get started" 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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" 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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" msgstr "" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:246 -msgctxt "@action:button" -msgid "Arrange current build plate" +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" msgstr "" #: MachineSettingsAction/plugin.json @@ -5062,16 +4958,6 @@ msgctxt "name" msgid "Model Checker" msgstr "" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Vedosta kaikkien asetusten sisällöt HTML-tiedostoon." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Jumala-tila" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5082,14 +4968,14 @@ msgctxt "name" msgid "Firmware Updater" msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." +msgid "Provides support for reading AMF files." msgstr "" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" +msgid "AMF Reader" msgstr "" #: USBPrinting/plugin.json @@ -5102,16 +4988,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-tulostus" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "" - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5154,22 +5030,12 @@ msgstr "Irrotettavan aseman tulostusvälineen laajennus" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." +msgid "Manages network connections to Ultimaker networked printers." msgstr "" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3-verkkoyhteys" - -#: 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" +msgid "Ultimaker Network Connection" msgstr "" #: MonitorStage/plugin.json @@ -5302,6 +5168,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5362,6 +5238,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5392,6 +5278,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Päivitys versiosta 2.2 versioon 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5402,6 +5298,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Kuvanlukija" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5432,16 +5338,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF-lukija" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "" - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5482,16 +5378,6 @@ 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." @@ -5532,6 +5418,152 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiilin lukija" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Aktivoitujen asetusten tasoitus" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profiili on tasoitettu ja aktivoitu." + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-tiedosto" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Yritä uudelleen" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Päivitä nykyinen" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Valitse tähän Ultimaker 2 -laitteeseen tehdyt päivitykset." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block -lämmitysosa" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Kerroksen korkeus" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profiili" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Vedosta kaikkien asetusten sisällöt HTML-tiedostoon." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Jumala-tila" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Yhdistetty verkon kautta tulostimeen." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Yhdistetty verkon kautta. Hyväksy tulostimen käyttöoikeuspyyntö." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Yhdistetty verkon kautta tulostimeen. Ei käyttöoikeutta tulostimen hallintaan." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Tulostimen käyttöoikeutta pyydetty. Hyväksy tulostimen pyyntö" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Lähetä käyttöoikeuspyyntö uudelleen" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Tulostimen käyttöoikeus hyväksytty" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Tällä tulostimella tulostukseen ei ole käyttöoikeutta. Tulostustyön lähetys ei onnistu." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Pyydä käyttöoikeutta" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Lähetä tulostimen käyttöoikeuspyyntö" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Ristiriitainen määritys" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Haluatko varmasti tulostaa valitulla määrityksellä?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Tulostimen ja Curan määrityksen tai kalibroinnin välillä on ristiriita. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Uusien töiden lähettäminen (tilapäisesti) estetty, edellistä tulostustyötä lähetetään vielä." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Lähetetään tietoja tulostimeen" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Lähetetään tietoja" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Eri materiaali (Cura: {0}, tulostin: {1}) valittu suulakkeelle {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synkronoi tulostimen kanssa" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Haluatko käyttää nykyistä tulostimen määritystä Curassa?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Tulostimen PrintCoret tai materiaalit eivät vastaa tulostettavan projektin asetuksia. Parhaat tulokset saavutetaan viipaloimalla aina tulostimeen asetetuille PrintCoreille ja materiaaleille." + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} on tulostanut työn '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Tulosta valmis" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Yhdistä tulostimeen" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3-verkkoyhteys" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Tulosta suoraan tulostimeen verkon kautta yhdistämällä tulostin verkkoon verkkokaapelilla tai yhdistämällä tulostin Wi-Fi-verkkoon. Jos Curaa ei yhdistetä tulostimeen, GCode-tiedostot voidaan silti siirtää tulostimeen USB-aseman avulla.\n" +#~ "\n" +#~ "Valitse tulostin alla olevasta luettelosta:" + #~ msgctxt "@item:inmenu" #~ msgid "Show Changelog" #~ msgstr "Näytä muutosloki" diff --git a/resources/i18n/fi_FI/fdmextruder.def.json.po b/resources/i18n/fi_FI/fdmextruder.def.json.po index e03d0c345f..86dd3b3474 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2017-08-11 14:31+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" diff --git a/resources/i18n/fi_FI/fdmprinter.def.json.po b/resources/i18n/fi_FI/fdmprinter.def.json.po index 9fb7cfcd8f..3f1b71753b 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2017-09-27 12:27+0200\n" "Last-Translator: Bothof \n" "Language-Team: Finnish\n" @@ -210,6 +210,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Sisältääkö laite lämmitettävän alustan." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -332,7 +342,7 @@ msgstr "Minimiaika, jonka suulakkeen on oltava ei-aktiivinen, ennen kuin suutin #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "" #: fdmprinter.def.json @@ -1015,6 +1025,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Alakerrosten lukumäärä. Kun se lasketaan alaosan paksuudesta, arvo pyöristetään kokonaislukuun." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1265,6 +1285,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Terävin kulma" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1292,8 +1362,8 @@ msgstr "Saumakulmien asetus" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1315,6 +1385,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Piilota tai paljasta sauma" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1327,13 +1402,13 @@ msgstr "Kun tämä on käytössä, Z-sauman koordinaatit ovat suhteessa kunkin o #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ohita pienet Z-raot" +msgid "No Skin in Z Gaps" +msgstr "" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1352,8 +1427,8 @@ msgstr "Ota silitys käyttöön" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Yläpinnan läpikäynti yhden ylimääräisen kerran ilman materiaalin pursotusta. Tämän tarkoitus on sulattaa yläosan muovia enemmän, jolloin saadaan sileämpi pinta." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1445,6 +1520,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Silityksen aikainen nopeuden hetkellinen maksimimuutos." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Pintakalvon limityksen prosentti" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Pintakalvon limitys" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1610,6 +1705,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1662,26 +1767,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Limityksen määrä täytön ja seinämien välillä. Pienellä limityksellä seinämät liittyvät tukevasti täyttöön." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Pintakalvon limityksen prosentti" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Pintakalvon limitys" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1869,7 +1954,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "build_volume_temperature description" -msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +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 @@ -1982,6 +2067,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1992,6 +2157,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Esitäyttötornin virtaus" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2109,7 +2394,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "" #: fdmprinter.def.json @@ -2162,6 +2447,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Nopeus, jolla tulostuslanka työnnetään takaisin suuttimen vaihdon takaisinvedon jälkeen." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2353,14 +2648,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Nopeus, jolla helma ja reunus tulostetaan. Yleensä se tehdään alkukerroksen nopeudella. Joskus helma tai reunus halutaan kuitenkin tulostaa eri nopeudella." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Z:n maksiminopeus" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Maksiminopeus, jolla alustaa liikutetaan. Jos tämä määritetään nollaan, tulostuksessa käytetään laiteohjelmiston oletusasetuksia Z:n maksiminopeudelle." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2862,16 +3157,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Suuttimen ja aiemmin tulostetun osan välinen etäisyys siirtoliikkeiden yhteydessä." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Aloita kerrokset samalla osalla" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Aloita tulostus jokaisessa kerroksessa tulostamalla kappale, joka on lähellä samaa pistettä, jotta uutta kerrosta ei aloiteta tulostamalla kappaletta, johon edellinen kerros päättyi. Näin saadaan aikaan paremmat ulokkeet ja pienet osat, mutta tulostus kestää kauemmin." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3278,13 +3563,13 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." msgstr "" #: fdmprinter.def.json @@ -3414,8 +3699,8 @@ msgstr "Tuen liitosetäisyys" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Tukirakenteiden maksimietäisyys toisistaan X-/Y-suunnissa. Kun erilliset rakenteet ovat tätä arvoa lähempänä toisiaan, rakenteet sulautuvat toisiinsa." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3699,7 +3984,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." msgstr "" #: fdmprinter.def.json @@ -3709,7 +3994,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." msgstr "" #: fdmprinter.def.json @@ -3719,7 +4004,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." msgstr "" #: fdmprinter.def.json @@ -3752,6 +4037,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "" +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3793,14 +4108,14 @@ msgid "The diameter of a special tower." msgstr "Erityistornin läpimitta." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimiläpimitta" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Erityisellä tukitornilla tuettavan pienen alueen minimiläpimitta X- ja Y-suunnissa." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4294,16 +4609,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Tulosta tulosteen viereen torni, jolla materiaali esitäytetään aina suuttimen vaihdon jälkeen." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4344,16 +4649,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Esitäyttötornin sijainnin Y-koordinaatti." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Esitäyttötornin virtaus" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4494,6 +4789,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4656,8 +4981,8 @@ msgstr "Kierukoitujen ääriviivojen tasoittaminen" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4869,36 +5194,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "" - -#: fdmprinter.def.json -msgctxt "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" @@ -5039,16 +5334,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Nopeus, jolla siirrytään vapaaliu'un aikana, suhteessa pursotusreitin nopeuteen. Arvoksi suositellaan hieman alle 100 %, sillä vapaaliukusiirron aikana paine Bowden-putkessa laskee." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Vuorottele pintakalvon pyöritystä" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Muuttaa ylä-/alakerrosten tulostussuuntaa. Normaalisti ne tulostetaan vain vinottain. Tämä asetus lisää vain X- ja vain Y -suunnat." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5156,8 +5441,8 @@ msgstr "Ota kartiomainen tuki käyttöön" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Kokeellinen ominaisuus: tekee tukialueet pienemmiksi alaosassa verrattuna ulokkeeseen." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5221,22 +5506,22 @@ msgstr "Keskimääräinen etäisyys kunkin linjasegmentin satunnaisten pisteiden #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." msgstr "" #: fdmprinter.def.json @@ -5530,12 +5815,12 @@ msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" +msgid "Adaptive Layers Topography Size" msgstr "" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." msgstr "" #: fdmprinter.def.json @@ -5545,7 +5830,7 @@ msgstr "" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." msgstr "" #: fdmprinter.def.json @@ -5898,6 +6183,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "" +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5958,6 +6283,70 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Mallissa käytettävä muunnosmatriisi, kun malli ladataan tiedostosta." +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Vuorottele pintakalvon pyöritystä" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Muuttaa ylä-/alakerrosten tulostussuuntaa. Normaalisti ne tulostetaan vain vinottain. Tämä asetus lisää vain X- ja vain Y -suunnat." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Yläpinnan läpikäynti yhden ylimääräisen kerran ilman materiaalin pursotusta. Tämän tarkoitus on sulattaa yläosan muovia enemmän, jolloin saadaan sileämpi pinta." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Aloita kerrokset samalla osalla" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Aloita tulostus jokaisessa kerroksessa tulostamalla kappale, joka on lähellä samaa pistettä, jotta uutta kerrosta ei aloiteta tulostamalla kappaletta, johon edellinen kerros päättyi. Näin saadaan aikaan paremmat ulokkeet ja pienet osat, mutta tulostus kestää kauemmin." + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Määritä, vaikuttavatko mallin ulkolinjan kulmat sauman sijaintiin. Ei mitään tarkoittaa, että kulmilla ei ole vaikutusta sauman sijaintiin. Piilota sauma -valinnalla sauman sijainti sisäkulmassa on todennäköisempää. Paljasta sauma -valinnalla sauman sijainti ulkokulmassa on todennäköisempää. Piilota tai paljasta sauma -valinnalla sauman sijainti sisä- tai ulkokulmassa on todennäköisempää." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ohita pienet Z-raot" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Kun mallissa on pieniä pystyrakoja, ylä- ja alapuolen pintakalvon tekemiseen näihin kapeisiin paikkoihin voi kulua noin 5 % ylimääräistä laskenta-aikaa. Poista siinä tapauksessa tämä asetus käytöstä." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Z:n maksiminopeus" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Maksiminopeus, jolla alustaa liikutetaan. Jos tämä määritetään nollaan, tulostuksessa käytetään laiteohjelmiston oletusasetuksia Z:n maksiminopeudelle." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Tukirakenteiden maksimietäisyys toisistaan X-/Y-suunnissa. Kun erilliset rakenteet ovat tätä arvoa lähempänä toisiaan, rakenteet sulautuvat toisiinsa." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimiläpimitta" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Erityisellä tukitornilla tuettavan pienen alueen minimiläpimitta X- ja Y-suunnissa." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Virtauksen kompensointi: pursotetun materiaalin määrä kerrotaan tällä arvolla." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Vähennä Z-sauman näkyvyyttä tasoittamalla kierukoidut ääriviivat (Z-sauman pitäisi olla lähes näkymätön tulosteessa, mutta kerrosnäkymässä sen voi edelleen havaita). Ota huomioon, että tasoittaminen usein sumentaa pinnan pieniä yksityiskohtia." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Kokeellinen ominaisuus: tekee tukialueet pienemmiksi alaosassa verrattuna ulokkeeseen." + #~ msgctxt "machine_nozzle_tip_outer_diameter label" #~ msgid "Outer nozzle diameter" #~ msgstr "Suuttimen ulkoläpimitta" diff --git a/resources/i18n/fr_FR/cura.po b/resources/i18n/fr_FR/cura.po index c79e12308a..3633753794 100644 --- a/resources/i18n/fr_FR/cura.po +++ b/resources/i18n/fr_FR/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:35+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: French\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: French , French \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Paramètres de la machine" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Fichier GCode" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter ne prend pas en charge le mode non-texte." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Veuillez préparer le G-Code avant d'exporter." @@ -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:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "Mettre à jour le firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Aplatir les paramètres actifs" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Fichier AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Le profil a été aplati et activé." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impression par USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimer via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connecté via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Une impression USB est en cours, la fermeture de Cura arrêtera cette impression. Êtes-vous sûr ?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Fichier X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Une impression est encore en cours. Cura ne peut pas démarrer une autre impression via USB tant que l'impression précédente n'est pas terminée." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Écrit X3G dans des fichiers" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Fichier X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impression en cours" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Enregistrer sur un lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Aucun format de fichier n'est disponible pour écriture !" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Impossible d'enregistrer sur le lecteur {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Erreur" @@ -229,9 +217,9 @@ msgstr "Ejecter le lecteur amovible {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Avertissement" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Lecteur amovible" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Connecté sur le réseau." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Statut d'authentification" - -#: /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: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: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: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: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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Envoi des données à l'imprimante" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Envoi des données" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annuler" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchroniser avec votre imprimante" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Connecté sur le réseau" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Données envoyées" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Afficher sur le moniteur" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Vide" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Inconnu" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Imprimer via le cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Imprimer via le cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Connecté via le cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Erreur de cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Impossible de transférer les données à l'imprimante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "demain" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "aujourd'hui" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Téléchargement via Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Prise en main" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Connecté !" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Consulter votre connexion" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Connecter via le réseau" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Guide des paramètres de Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimer sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprimer sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Connecté sur le réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Veuillez patienter jusqu'à ce que la tâche en cours ait été envoyée." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Erreur d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Nouvelles imprimantes cloud trouvées" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "De nouvelles imprimantes ont été trouvées connectées à votre compte. Vous pouvez les trouver dans votre liste d'imprimantes découvertes." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Ne plus afficher ce message" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Vous tentez de vous connecter à {0} mais ce n'est pas l'hôte de groupe. Vous pouvez visiter la page Web pour la configurer en tant qu'hôte de groupe." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Pas un hôte de groupe" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurer le groupe" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Lancez et surveillez des impressions où que vous soyez avec votre compte Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Se connecter à Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Prise en main" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Lancement d'une tâche d'impression" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Téléchargement de la tâche d'impression sur l'imprimante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "L'envoi de la tâche d'impression à l'imprimante a réussi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Données envoyées" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Vous tentez de vous connecter à une imprimante qui n'exécute pas Ultimaker Connect. Veuillez mettre à jour l'imprimante avec le dernier micrologiciel." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Mettre à jour votre imprimante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura a détecté des profils de matériau qui ne sont pas encore installés sur l'imprimante hôte du groupe {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Envoi de matériaux à l'imprimante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Impossible de transférer les données à l'imprimante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Erreur de réseau" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "demain" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "aujourd'hui" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimer via le cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimer via le cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Connecté via le cloud" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Surveiller" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Impossible d'accéder aux informations de mise à jour." @@ -625,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Vue en couches" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura n'affiche pas les couches avec précision lorsque l'impression filaire est activée" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Vue simulation" @@ -685,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Image GIF" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Ouvrir le maillage triangulaire compressé" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF binaire" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "JSON incorporé glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Format Triangle de Stanford" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange compressé" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -749,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurer les paramètres par modèle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recommandé" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personnalisé" @@ -765,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Fichier 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Buse" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Le fichier projet {0} contient un type de machine inconnu {1}. Impossible d'importer la machine. Les modèles seront importés à la place." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Ouvrir un fichier de projet" @@ -792,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Fichier G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analyse du G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Détails G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Assurez-vous que le g-code est adapté à votre imprimante et à la configuration de l'imprimante avant d'y envoyer le fichier. La représentation du g-code peut ne pas être exacte." @@ -857,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Profil Cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Assistant de profil" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Assistant de profil" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -887,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Aperçu" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -903,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "La connexion a échoué" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Non pris en charge" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Le fichier existe déjà" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Le fichier {0} existe déjà. Êtes-vous sûr de vouloir le remplacer ?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL de fichier invalide :" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles :" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Paramètres mis à jour" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrudeuse(s) désactivée(s)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Inconnu" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Échec de l'exportation du profil vers {0} : {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Échec de l'exportation du profil vers {0} : le plug-in du générateur a rapporté une erreur." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil exporté vers {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "L'exportation a réussi" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Impossible d'importer le profil depuis {0} avant l'ajout d'une imprimante." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Aucun profil personnalisé à importer dans le fichier {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Échec de l'importation du profil depuis le fichier {0} :" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Le profil {0} contient des données incorrectes ; échec de l'importation." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "La machine définie dans le profil {0} ({1}) ne correspond pas à votre machine actuelle ({2}) ; échec de l'importation." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Échec de l'importation du profil depuis le fichier {0} :" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Importation du profil {0} réussie" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Le fichier {0} ne contient pas de profil valide." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Le profil {0} est un type de fichier inconnu ou est corrompu." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Personnaliser le profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Il manque un type de qualité au profil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1103,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Autre" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Fichier {0} prédécoupé" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1123,73 +953,121 @@ msgstr "Groupe nº {group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Fermer" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Ajouter" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annuler" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visuel" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Le profil visuel est conçu pour imprimer des prototypes et des modèles visuels dans le but d'obtenir une qualité visuelle et de surface élevée." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Le profil d'ingénierie est conçu pour imprimer des prototypes fonctionnels et des pièces finales dans le but d'obtenir une meilleure précision et des tolérances" +" plus étroites." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Ébauche" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "L'ébauche du profil est conçue pour imprimer les prototypes initiaux et la validation du concept dans le but de réduire considérablement le temps d'impression." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Pas écrasé" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Personnaliser les profils" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Tous les types supportés ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tous les fichiers (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Inconnu" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Imprimantes en réseau disponibles" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Matériau personnalisé" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personnalisé" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Les imprimantes ci-dessous ne peuvent pas être connectées car elles font partie d'un groupe" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Imprimantes en réseau disponibles" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "La hauteur du volume d'impression a été réduite en raison de la valeur du paramètre « Séquence d'impression » afin d'éviter que le portique ne heurte les modèles imprimés." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume d'impression" @@ -1214,39 +1092,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Impossible de lire la réponse." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Impossible d’atteindre le serveur du compte Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Veuillez donner les permissions requises lors de l'autorisation de cette application." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Une erreur s'est produite lors de la connexion, veuillez réessayer." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplication et placement d'objets" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Placement des objets" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Impossible de trouver un emplacement dans le volume d'impression pour tous les objets" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Placement de l'objet" @@ -1395,53 +1273,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Chargement des machines..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Configuration des préférences..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Préparation de la scène..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Chargement de l'interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Un seul fichier G-Code peut être chargé à la fois. Importation de {0} sautée" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Impossible d'ouvrir un autre fichier si le G-Code est en cours de chargement. Importation de {0} sautée" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Le modèle sélectionné était trop petit pour être chargé." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Paramètres de l'imprimante" @@ -1454,15 +1337,15 @@ msgstr "X (Largeur)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1494,50 +1377,55 @@ msgstr "Plateau chauffant" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume de fabrication chauffant" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Parfum G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Paramètres de la tête d'impression" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Hauteur du portique" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Nombre d'extrudeuses" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "G-Code de démarrage" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "G-Code de fin" @@ -1567,22 +1455,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Décalage buse X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Extrudeuse G-Code de fin" @@ -1593,7 +1481,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installé" @@ -1608,16 +1496,16 @@ msgctxt "@label" msgid "ratings" msgstr "évaluations" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plug-ins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Matériaux" @@ -1627,49 +1515,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1730,17 +1618,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Quitter Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contributions de la communauté" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Plug-ins de la communauté" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Matériaux génériques" @@ -1801,27 +1689,47 @@ msgctxt "@label" msgid "Featured" msgstr "Fonctionnalités" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilité" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Machine" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Plateau" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Support" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualité" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Fiche technique" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Fiche de sécurité" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Directives d'impression" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Site Internet" @@ -1921,70 +1829,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gérer l'imprimante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Verre" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "La webcam n'est pas disponible car vous surveillez une imprimante cloud." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Chargement..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Indisponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Injoignable" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Inactif" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Sans titre" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anonyme" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Nécessite des modifications de configuration" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Détails" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Imprimante indisponible" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Premier disponible" @@ -1994,212 +1908,195 @@ msgctxt "@label" msgid "Queued" msgstr "Mis en file d'attente" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Il n'y a pas de travaux d'impression dans la file d'attente. Découpez et envoyez une tache pour en ajouter une." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Tâches d'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Temps total d'impression" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Attente de" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Toutes les tâches ont été imprimées." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -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:50 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Connexion existante" - -#: /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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Connecter à l'imprimante en réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n" -"\n" -"Sé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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Sélectionnez votre imprimante dans la liste ci-dessous :" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Modifier" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Supprimer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Rafraîchir" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Si votre imprimante n'apparaît pas dans la liste, lisez le guide de dépannage de l'impression en réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Type" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Version du firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adresse" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Cette imprimante n'est pas configurée pour héberger un groupe d'imprimantes." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Cette imprimante est l'hôte d'un groupe d'imprimantes %1." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "L'imprimante à cette adresse n'a pas encore répondu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Connecter" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Adresse IP non valide" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Veuillez saisir une adresse IP valide." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Adresse de l'imprimante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address 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." +msgid "Enter the IP address of your printer on the network." +msgstr "Saisissez l'adresse IP de votre imprimante sur le réseau." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Finit %1 à %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimer" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Imprimer sur le réseau" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimer" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Sélection d'imprimantes" @@ -2288,68 +2185,59 @@ msgctxt "@action:button" msgid "Override" msgstr "Remplacer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminium" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Connecter à une imprimante" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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." +"- 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 l'imprimante est connectée au réseau.- Vérifiez si vous êtes connecté pour découvrir les imprimantes connectées au cloud." #: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" @@ -2558,70 +2446,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Lissage" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Type de maille" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modèle normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimer comme support" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Ne pas prendre en charge le chevauchement avec d'autres modèles" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modifier les paramètres de chevauchement avec d'autres modèles" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modifier les paramètres de remplissage d'autres modèles" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Sélectionner les paramètres" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Sélectionner les paramètres pour personnaliser ce modèle" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrer..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Afficher tout" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Type de maille" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modèle normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimer comme support" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modifier les paramètres de chevauchement" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Ne prend pas en charge le chevauchement" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Remplissage uniquement" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Sélectionner les paramètres" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Ouvrir un projet" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Mettre à jour l'existant" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Créer" @@ -2648,6 +2535,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Mise à jour" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Créer" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2661,7 +2553,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Paramètres de profil" @@ -2672,75 +2564,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Comment le conflit du profil doit-il être résolu ?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nom" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Absent du profil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 écrasent" msgstr[1] "%1 écrase" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Dérivé de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 écrasent" msgstr[1] "%1, %2 écrase" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Paramètres du matériau" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Comment le conflit du matériau doit-il être résolu ?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilité des paramètres" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Mode" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Paramètres visibles :" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 sur %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Le chargement d'un projet effacera tous les modèles sur le plateau." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Ouvrir" @@ -2847,48 +2745,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Créez automatiquement une sauvegarde chaque jour où Cura est démarré." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Non pris en charge" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Exporter" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Astuce" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Test d'impression" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Liste de contrôle" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Blocage Olsson" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2974,170 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Êtes-vous sûr(e) de vouloir abandonner l'impression ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informations" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmer le changement de diamètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Le nouveau diamètre de filament est réglé sur %1 mm, ce qui n'est pas compatible avec l'extrudeuse actuelle. Souhaitez-vous poursuivre ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Afficher le nom" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marque" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Type de matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Couleur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propriétés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diamètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Coût du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Poids du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Longueur du filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Coût au mètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Ce matériau est lié à %1 et partage certaines de ses propriétés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Délier le matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Description" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informations d'adhérence" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Paramètres d'impression" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Activer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Créer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Dupliquer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Exporter" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Imprimante" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmer la suppression" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Êtes-vous sûr de vouloir supprimer l'objet %1 ? Vous ne pourrez pas revenir en arrière !" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importer un matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Impossible d'importer le matériau %1 : %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Matériau %1 importé avec succès" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exporter un matériau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Échec de l'exportation de matériau vers %1 : %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Matériau exporté avec succès vers %1" @@ -3152,414 +3014,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Vérifier tout" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Actuel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unité" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Vous devez redémarrer l'application pour que ces changements prennent effet." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Découper automatiquement si les paramètres sont modifiés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Découper automatiquement" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportement Viewport" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Surligne les parties non supportées du modèle en rouge. Sans ajouter de support, ces zones ne s'imprimeront pas correctement." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mettre en surbrillance les porte-à-faux" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Déplace la caméra afin que le modèle sélectionné se trouve au centre de la vue" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrer la caméra lorsqu'un élément est sélectionné" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Le comportement de zoom par défaut de Cura doit-il être inversé ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverser la direction du zoom de la caméra." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Le zoom doit-il se faire dans la direction de la souris ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Le zoom vers la souris n'est pas pris en charge dans la perspective orthographique." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomer vers la direction de la souris" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Les modèles dans la zone d'impression doivent-ils être déplacés afin de ne plus se croiser ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Veillez à ce que les modèles restent séparés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Les modèles dans la zone d'impression doivent-ils être abaissés afin de toucher le plateau ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Abaisser automatiquement les modèles sur le plateau" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Afficher le message d'avertissement dans le lecteur G-Code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Message d'avertissement dans le lecteur G-Code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "La couche doit-elle être forcée en mode de compatibilité ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forcer l'affichage de la couche en mode de compatibilité (redémarrage requis)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Est-ce que Cura devrait ouvrir à l'endroit où il a été fermé ?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurer la position de la fenêtre au démarrage" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Quel type de rendu de la caméra doit-il être utilisé?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Rendu caméra :" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspective" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Orthographique" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Ouvrir et enregistrer des fichiers" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Les modèles doivent-ils être mis à l'échelle du volume d'impression s'ils sont trop grands ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Réduire la taille des modèles trop grands" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modèle peut apparaître en tout petit si son unité est par exemple en mètres plutôt qu'en millimètres. Ces modèles doivent-ils être agrandis ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Mettre à l'échelle les modèles extrêmement petits" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Les modèles doivent-ils être sélectionnés après leur chargement ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Sélectionner les modèles lorsqu'ils sont chargés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Un préfixe basé sur le nom de l'imprimante doit-il être automatiquement ajouté au nom de la tâche d'impression ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Ajouter le préfixe de la machine au nom de la tâche" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Un résumé doit-il être affiché lors de l'enregistrement d'un fichier de projet ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Afficher la boîte de dialogue du résumé lors de l'enregistrement du projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportement par défaut lors de l'ouverture d'un fichier de projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportement par défaut lors de l'ouverture d'un fichier de projet : " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Toujours me demander" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Toujours ouvrir comme projet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Toujours importer les modèles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Lorsque vous apportez des modifications à un profil puis passez à un autre profil, une boîte de dialogue apparaît, vous demandant si vous souhaitez conserver les modifications. Vous pouvez aussi choisir une option par défaut, et le dialogue ne s'affichera plus." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profils" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportement par défaut pour les valeurs de paramètres modifiées lors du passage à un profil différent : " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Toujours me demander" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Toujours rejeter les paramètres modifiés" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Toujours transférer les paramètres modifiés dans le nouveau profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Confidentialité" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura doit-il vérifier les mises à jour au démarrage du programme ?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Vérifier les mises à jour au démarrage" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Les données anonymes de votre impression doivent-elles être envoyées à Ultimaker ? Notez qu'aucun modèle, aucune adresse IP ni aucune autre information permettant de vous identifier personnellement ne seront envoyés ou stockés." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Envoyer des informations (anonymes) sur l'impression" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Plus d'informations" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Renommer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profils" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Créer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Dupliquer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Créer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Veuillez fournir un nom pour ce profil." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Dupliquer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Renommer le profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importer un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exporter un profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Imprimante : %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Profils par défaut" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Mettre à jour le profil à l'aide des paramètres / forçages actuels" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Ignorer les modifications actuelles" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Ce profil utilise les paramètres par défaut spécifiés par l'imprimante, de sorte qu'aucun paramètre / forçage n'apparaît dans la liste ci-dessous." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Vos paramètres actuels correspondent au profil sélectionné." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Paramètres généraux" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Marché en ligne" @@ -3619,36 +3489,36 @@ msgstr "Sans titre" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "paramètres de recherche" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copier la valeur vers tous les extrudeurs" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copier toutes les valeurs modifiées vers toutes les extrudeuses" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Masquer ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Afficher ce paramètre" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurer la visibilité des paramètres..." @@ -3664,32 +3534,32 @@ msgstr "" "\n" "Cliquez pour rendre ces paramètres visibles." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Ce paramètre est toujours partagé par toutes les extrudeuses. Le modifier ici entraînera la modification de la valeur pour toutes les extrudeuses." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "La valeur est résolue à partir des valeurs par extrudeur " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3700,7 +3570,7 @@ msgstr "" "\n" "Cliquez pour restaurer la valeur du profil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3711,12 +3581,19 @@ msgstr "" "\n" "Cliquez pour restaurer la valeur calculée." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Recommandé" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personnalisé" @@ -3741,36 +3618,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Générer des structures pour soutenir les parties du modèle qui possèdent des porte-à-faux. Sans ces structures, ces parties s'effondreront durant l'impression." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Hauteur de la couche" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Vous avez modifié certains paramètres du profil. Si vous souhaitez les modifier, allez dans le mode Personnaliser." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "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 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Un profil personnalisé est actuellement actif. Pour activer le curseur de qualité, choisissez un profil de qualité par défaut dans l'onglet Personnaliser" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3781,12 +3643,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Off" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Expérimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3797,6 +3664,11 @@ msgstr "" "\n" "Cliquez pour ouvrir le gestionnaire de profils." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Personnaliser les profils" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3832,59 +3704,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrudeuse" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Température cible de l'extrémité chauffante. L'extrémité chauffante sera chauffée ou refroidie pour tendre vers cette température. Si la valeur est 0, le chauffage de l'extrémité chauffante sera coupé." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Température actuelle de cette extrémité chauffante." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Température jusqu'à laquelle préchauffer l'extrémité chauffante." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuler" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Préchauffer" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Préchauffez l'extrémité chauffante avant l'impression. Vous pouvez continuer l'ajustement de votre impression pendant qu'elle chauffe, ce qui vous évitera un temps d'attente lorsque vous serez prêt à lancer l'impression." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Couleur du matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Matériau dans cet extrudeur." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Buse insérée dans cet extrudeur." @@ -3924,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoris" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Générique" @@ -3949,42 +3821,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Im&primante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Définir comme extrudeur actif" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Activer l'extrudeuse" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Désactiver l'extrudeuse" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "Plateau" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Position de la &caméra" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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" @@ -4004,17 +3881,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gérer la visibilité des paramètres..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "Enregi&strer..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Exporter..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Exporter la sélection..." @@ -4043,12 +3920,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Configurations" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Sélectionner la configuration" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Configurations" @@ -4078,12 +3955,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Activé" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Utiliser de la colle pour une meilleure adhérence avec cette combinaison de matériaux." @@ -4103,22 +3980,22 @@ 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" @@ -4128,6 +4005,11 @@ msgctxt "@label" msgid "View type" msgstr "Type d'affichage" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Liste d'objets" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4179,32 +4061,37 @@ 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:126 +#: /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" msgstr "Impossible de découper" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Annuler" @@ -4239,233 +4126,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Imprimantes préréglées" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Marché en ligne" @@ -4480,49 +4372,49 @@ 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:409 +#: /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:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fermeture de Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Êtes-vous sûr de vouloir quitter Cura ?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Installer le paquet" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Ouvrir le(s) fichier(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Nous avons trouvé au moins un fichier G-Code parmi les fichiers que vous avez sélectionné. Vous ne pouvez ouvrir qu'un seul fichier G-Code à la fois. Si vous souhaitez ouvrir un fichier G-Code, veuillez ne sélectionner qu'un seul fichier de ce type." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Ajouter une imprimante" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Quoi de neuf" @@ -4593,17 +4485,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "À propos de Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "version : %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Solution complète pour l'impression 3D par dépôt de filament fondu." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4612,122 +4504,122 @@ 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 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Interface utilisateur graphique" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Cadre d'application" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Générateur G-Code" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Bibliothèque de communication interprocess" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Langage de programmation" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "Cadre IUG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Liens cadre IUG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Bibliothèque C/C++ Binding" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Format d'échange de données" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Prise en charge de la bibliothèque pour le calcul scientifique" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Prise en charge de la bibliothèque pour des maths plus rapides" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers STL" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Prise en charge de la bibliothèque pour le traitement des objets planaires" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Prise en charge de la bibliothèque pour le traitement des mailles triangulaires" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Prise en charge de la bibliothèque pour l'analyse de réseaux complexes" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Prise en charge de la bibliothèque pour le traitement des fichiers 3MF" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Prise en charge de la bibliothèque pour les métadonnées et le streaming de fichiers" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Bibliothèque de communication série" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Bibliothèque de découverte ZeroConf" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Bibliothèque de découpe polygone" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Bibliothèque Python HTTP" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Police" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Icônes SVG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Déploiement d'applications sur multiples distributions Linux" @@ -4747,32 +4639,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Enregistrer le projet" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Plateau" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrudeuse %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & matériau" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Matériau" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Ne pas afficher à nouveau le résumé du projet lors de l'enregistrement" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Enregistrer" @@ -4948,12 +4835,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Dépannage" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Nom de l'imprimante" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Veuillez donner un nom à votre imprimante" @@ -5012,20 +4899,30 @@ msgctxt "@button" msgid "Get started" msgstr "Prise en main" -#: /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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Vue 3D" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vue de face" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Vue du dessus" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vue gauche" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vue droite" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5087,16 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Contrôleur de modèle" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Exporter les contenus de tous les paramètres vers un fichier HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Mode God" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5107,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Programme de mise à jour du firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Créer un profil de changements de qualité aplati." +msgid "Provides support for reading AMF files." +msgstr "Fournit la prise en charge de la lecture de fichiers AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Aplatisseur de profil" +msgid "AMF Reader" +msgstr "Lecteur AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -5127,16 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impression par USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permet de sauvegarder la tranche résultante sous forme de fichier X3G, pour prendre en charge les imprimantes qui lisent ce format (Malyan, Makerbot et autres imprimantes basées sur Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5179,23 +5056,13 @@ msgstr "Plugin de périphérique de sortie sur disque amovible" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gère les connexions réseau vers les imprimantes Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gère les connexions réseau vers les imprimantes Ultimaker en réseau." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Connexion au réseau UM3" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Connexion réseau Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5327,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Mise à niveau de 3.3 vers 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Configurations des mises à niveau de Cura 4.3 vers Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Mise à niveau de 4.3 vers 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5387,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Mise à niveau de version, de 3.0 vers 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Configurations des mises à jour de Cura 4.1 vers Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Mise à jour de 4.1 vers 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5417,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Mise à niveau de 2.2 vers 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Configurations des mises à jour de Cura 4.2 vers Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Mise à jour de 4.2 vers 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5427,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Lecteur d'images" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Fournit la prise en charge de la lecture de fichiers modèle 3D." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Lecteur de Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5457,16 +5364,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Lecteur 3MF" -#: SVGToolpathReader/build/plugin.json -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." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Lecteur de Toolpaths SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5507,16 +5404,6 @@ 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." @@ -5557,6 +5444,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lecteur de profil Cura" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Aplatir les paramètres actifs" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Le profil a été aplati et activé." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Écrit X3G dans des fichiers" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Fichier X3G" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Fichier X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Ouvrir le maillage triangulaire compressé" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Assistant de profil" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Assistant de profil" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Réessayer" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Ne pas prendre en charge le chevauchement avec d'autres modèles" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modifier les paramètres de chevauchement avec d'autres modèles" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modifier les paramètres de remplissage d'autres modèles" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Mettre à jour l'existant" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Non pris en charge" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Précédent" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Astuce" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Test d'impression" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Liste de contrôle" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Sélectionnez les mises à niveau disponibles pour cet Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Blocage Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Rendu caméra : " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Utiliser la fonctionnalité multi-plateau" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Utiliser la fonctionnalité multi-plateau (redémarrage requis)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Profils par défaut" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "paramètres de recherche" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Hauteur de la couche" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Ce profil de qualité n'est pas disponible pour votre matériau et configuration des buses actuels. Veuillez modifier ces derniers pour activer ce profil de qualité." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Un profil personnalisé est actuellement actif. Pour activer le curseur de qualité, choisissez un profil de qualité par défaut dans l'onglet Personnaliser" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "Plateau" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Plateau" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Exporter les contenus de tous les paramètres vers un fichier HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Mode God" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Créer un profil de changements de qualité aplati." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Aplatisseur de profil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permet aux fabricants de matériaux de créer de nouveaux matériaux et profils de qualité à l'aide d'une interface utilisateur ad hoc." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistant de profil d'impression" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Connecté sur le réseau." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Connecté sur le réseau. Veuillez approuver la demande d'accès sur l'imprimante." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Connecté sur le réseau. Pas d'accès pour commander l'imprimante." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Accès à l'imprimante demandé. Veuillez approuver la demande sur l'imprimante" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Statut d'authentification" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Statut d'authentification" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Renvoyer la demande d'accès" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Accès à l'imprimante accepté" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Aucun accès pour imprimer avec cette imprimante. Impossible d'envoyer la tâche d'impression." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Demande d'accès" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Envoyer la demande d'accès à l'imprimante" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Impossible de démarrer une nouvelle tâche d'impression." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Un problème avec la configuration de votre Ultimaker empêche le démarrage de l'impression. Veuillez résoudre ce problème avant de continuer." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Configuration différente" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Êtes-vous sûr(e) de vouloir imprimer avec la configuration sélectionnée ?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Problème de compatibilité entre la configuration ou l'étalonnage de l'imprimante et Cura. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Envoi de nouvelles tâches (temporairement) bloqué, envoi de la tâche d'impression précédente en cours." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Envoi des données à l'imprimante" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Envoi des données" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Pas de PrintCore inséré dans la fente {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Aucun matériau inséré dans la fente {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore différent (Cura : {cura_printcore_name}, Imprimante : {remote_printcore_name}) sélectionné pour l'extrudeuse {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Matériau différent (Cura : {0}, Imprimante : {1}) sélectionné pour l'extrudeuse {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchroniser avec votre imprimante" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Voulez-vous utiliser votre configuration d'imprimante actuelle dans Cura ?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Les PrintCores et / ou matériaux sur votre imprimante diffèrent de ceux de votre projet actuel. Pour un résultat optimal, découpez toujours pour les PrintCores et matériaux insérés dans votre imprimante." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Afficher sur le moniteur" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} a terminé d'imprimer '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "La tâche d'impression '{job_name}' est terminée." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impression terminée" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vide" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Inconnu" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Erreur de cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Impossible d'exporter la tâche d'impression." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Une erreur s'est produite lors de la connexion au cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Téléchargement via Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Se connecter à Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Ne plus me demander pour cette imprimante." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Vous pouvez maintenant lancer et surveiller des impressions où que vous soyez avec votre compte Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Connecté !" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Consulter votre connexion" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "La machine définie dans le profil {0} ({1}) ne correspond pas à votre machine actuelle ({2}) ; échec de l'importation." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Échec de l'importation du profil depuis le fichier {0} :" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Connexion existante" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Ce groupe / cette imprimante a déjà été ajouté à Cura. Veuillez sélectionner un autre groupe / imprimante." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Saisissez l'adresse IP ou le nom d'hôte de votre imprimante sur le réseau." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Connecter à une imprimante" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guide des paramètres de Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Zoom vers la souris n'est pas pris en charge dans la perspective orthogonale." + +#~ msgid "Orthogonal" +#~ msgstr "Orthogonale" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gère les connexions réseau vers les imprimantes Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Connexion au réseau UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Fournit des informations et explications supplémentaires sur les paramètres de Cura, avec des images et des animations." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guide des paramètres" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guide des paramètres de Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Les paramètres ont été modifiés pour correspondre aux extrudeuses actuellement disponibles : [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Description de l'utilisateur" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Ces options ne sont pas disponibles car vous surveillez une imprimante cloud." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Aller à Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Toutes les tâches ont été imprimées." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Voir l'historique d'impression" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Pour imprimer directement sur votre imprimante sur le réseau, assurez-vous que votre imprimante est connectée au réseau via un câble réseau ou en connectant votre imprimante à votre réseau Wi-Fi. Si vous ne connectez pas Cura avec votre imprimante, vous pouvez utiliser une clé USB pour transférer les fichiers g-code sur votre imprimante.\n" +#~ "\n" +#~ "Sélectionnez votre imprimante dans la liste ci-dessous :" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Assurez-vous que votre imprimante est connectée :\n" +#~ "- Vérifiez si l'imprimante est sous tension.\n" +#~ "- Vérifiez si l'imprimante est connectée au réseau." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Afficher uniquement le plateau actuel" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Réorganiser sur tous les plateaux" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Réorganiser le plateau actuel" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permet de sauvegarder la tranche résultante sous forme de fichier X3G, pour prendre en charge les imprimantes qui lisent ce format (Malyan, Makerbot et autres imprimantes basées sur Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lit les fichiers SVG comme des Toolpaths, pour déboguer les mouvements de l'imprimante." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Lecteur de Toolpaths SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Récapitulatif des changements" diff --git a/resources/i18n/fr_FR/fdmextruder.def.json.po b/resources/i18n/fr_FR/fdmextruder.def.json.po index c855187d83..59ade887b6 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: French\n" diff --git a/resources/i18n/fr_FR/fdmprinter.def.json.po b/resources/i18n/fr_FR/fdmprinter.def.json.po index d250e6508f..9779482577 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: French\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: French , French \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "Commandes G-Code à exécuter au tout début, séparées par \n." +msgstr "" +"Commandes G-Code à exécuter au tout début, séparées par \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "Commandes G-Code à exécuter tout à la fin, séparées par \n." +msgstr "" +"Commandes G-Code à exécuter tout à la fin, séparées par \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Si la machine a un plateau chauffé présent." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Est dotée de la stabilisation de la température du volume d'impression" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Si la machine est capable de stabiliser la température du volume d'impression." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -333,7 +347,7 @@ msgstr "La durée minimale pendant laquelle une extrudeuse doit être inactive a #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "Parfum G-Code" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Le nombre de couches inférieures. Lorsqu'elle est calculée par l'épaisseur du dessous, cette valeur est arrondie à un nombre entier." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Couches inférieures initiales" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Le nombre de couches inférieures initiales à partir du haut du plateau. Lorsqu'elle est calculée par l'épaisseur du dessous, cette valeur est arrondie" +" à un nombre entier." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1219,7 +1244,7 @@ msgstr "Imprimer les parties du modèle qui sont horizontalement plus fines que #: fdmprinter.def.json msgctxt "xy_offset label" msgid "Horizontal Expansion" -msgstr "Vitesse d’impression horizontale" +msgstr "Expansion horizontale" #: fdmprinter.def.json msgctxt "xy_offset description" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Angle le plus aigu" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Position de la jointure en Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "La position près de laquelle démarre l'impression de chaque partie dans une couche." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Arrière gauche" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Précédent" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Arrière droit" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Droite" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Avant droit" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Avant" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Avant gauche" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Gauche" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Préférence de jointure d'angle" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer jointure » génère généralement le positionnement de la jointure sur un angle intérieur. « Exposer jointure » génère généralement le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer jointure » génère généralement le positionnement de la jointure sur un angle intérieur ou extérieur." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer la jointure » génère le positionnement de la jointure sur un angle intérieur. « Exposer la jointure » génère le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer la jointure » génère le positionnement de la jointure sur un angle intérieur ou extérieur. « Jointure intelligente » autorise les angles intérieurs et extérieurs, mais choisit plus fréquemment les angles intérieurs, le cas échéant." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Masquer ou exposer jointure" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Masquage intelligent" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Si cette option est activée, les coordonnées de la jointure z sont rel #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorer les petits trous en Z" +msgid "No Skin in Z Gaps" +msgstr "Aucune couche dans les trous en Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quand le modèle présente de petits trous verticaux, environ 5 % de temps de calcul supplémentaire peut être alloué à la génération de couches du dessus et du dessous dans ces espaces étroits. Dans ce cas, désactivez ce paramètre." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Lorsque le modèle comporte de petits trous verticaux de quelques couches seulement, il doit normalement y avoir une couche autour de celles-ci dans l'espace étroit. Activez ce paramètre pour ne pas générer de couche si le trou vertical est très petit. Cela améliore le temps d'impression et le temps de découpage, mais laisse techniquement le remplissage exposé à l'air." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Activer l'étirage" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Aller au-dessus de la surface supérieure une fois supplémentaire, mais sans extruder de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Allez au-dessus de la surface une fois supplémentaire, mais en extrudant très peu de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse. La pression dans la chambre de la buse est maintenue élevée afin que les plis de la surface soient remplis de matériau." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Le changement instantané maximal de vitesse lors de l'étirage." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Pourcentage de chevauchement de la couche extérieure" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuster le degré de chevauchement entre les parois et les (extrémités des) lignes centrales de la couche extérieure, en pourcentage de la largeur des lignes de la couche extérieure et de la paroi intérieure. Un chevauchement léger permet de relier fermement les parois à la couche extérieure. Notez que, si la largeur de la couche extérieure est égale à celle de la ligne de la paroi, un pourcentage supérieur à 50 % peut déjà faire dépasser la couche extérieure de la paroi, car dans ce cas la position de la buse de l'extrudeuse peut déjà atteindre le milieu de la paroi." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Chevauchement de la couche extérieure" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuster le degré de chevauchement entre les parois et les (extrémités des) lignes centrales de la couche extérieure. Un chevauchement léger permet de relier fermement les parois à la couche extérieure. Notez que, si la largeur de la couche extérieure est égale à celle de la ligne de la paroi, une valeur supérieure à la moitié de la largeur de la paroi peut déjà faire dépasser la couche extérieure de la paroi, car dans ce cas la position de la buse de l'extrudeuse peut déjà atteindre le milieu de la paroi." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Le motif de remplissage est décalé de cette distance sur l'axe Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Randomiser le démarrage du remplissage" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Randomisez la ligne de remplissage qui est imprimée en premier. Cela empêche un segment de devenir plus fort, mais cela se fait au prix d'un déplacement supplémentaire." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Ajoutez des parois supplémentaires autour de la zone de remplissage. De telles parois peuvent réduire l'affaissement des lignes de couche extérieure supérieure / inférieure, réduisant le nombre de couches extérieures supérieures / inférieures nécessaires pour obtenir la même qualité, au prix d'un peu de matériau supplémentaire.\nConfigurée correctement, cette fonctionnalité peut être combinée avec « Relier les polygones de remplissage » pour relier tous les remplissages en un seul mouvement d'extrusion sans avoir besoin de déplacements ou de rétractions." +msgstr "" +"Ajoutez des parois supplémentaires autour de la zone de remplissage. De telles parois peuvent réduire l'affaissement des lignes de couche extérieure supérieure / inférieure, réduisant le nombre de couches extérieures supérieures / inférieures nécessaires pour obtenir la même qualité, au prix d'un peu de matériau supplémentaire.\n" +"Configurée correctement, cette fonctionnalité peut être combinée avec « Relier les polygones de remplissage » pour relier tous les remplissages en un seul mouvement d'extrusion sans avoir besoin de déplacements ou de rétractions." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Le degré de chevauchement entre le remplissage et les parois. Un léger chevauchement permet de lier fermement les parois au remplissage." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Pourcentage de chevauchement de la couche extérieure" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajuster le degré de chevauchement entre les parois et les (extrémités des) lignes centrales de la couche extérieure, en pourcentage de la largeur des lignes de la couche extérieure et de la paroi intérieure. Un chevauchement léger permet de relier fermement les parois à la couche extérieure. Notez que, si la largeur de la couche extérieure est égale à celle de la ligne de la paroi, un pourcentage supérieur à 50 % peut déjà faire dépasser la couche extérieure de la paroi, car dans ce cas la position de la buse de l'extrudeuse peut déjà atteindre le milieu de la paroi." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Chevauchement de la couche extérieure" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajuster le degré de chevauchement entre les parois et les (extrémités des) lignes centrales de la couche extérieure. Un chevauchement léger permet de relier fermement les parois à la couche extérieure. Notez que, si la largeur de la couche extérieure est égale à celle de la ligne de la paroi, une valeur supérieure à la moitié de la largeur de la paroi peut déjà faire dépasser la couche extérieure de la paroi, car dans ce cas la position de la buse de l'extrudeuse peut déjà atteindre le milieu de la paroi." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,8 +1962,8 @@ msgstr "Température du volume d'impression" #: fdmprinter.def.json 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." +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" @@ -1983,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Taux de contraction en pourcentage." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Matériau cristallin" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Ce matériau se casse-t-il proprement lorsqu'il est chauffé (cristallin) ou est-ce le type qui produit de longues chaînes polymères entrelacées (non cristallines) ?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Position anti-suintage rétractée" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Jusqu'où le matériau doit être rétracté avant qu'il cesse de suinter." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Vitesse de rétraction de l'anti-suintage" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "À quelle vitesse le matériau doit-il être rétracté lors d'un changement de filament pour empêcher le suintage." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Préparation de rupture Position rétractée" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Jusqu'où le filament peut être étiré avant qu'il ne se casse, pendant qu'il est chauffé." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Vitesse de rétraction de préparation de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "La vitesse à laquelle le filament doit être rétracté juste avant de le briser dans une rétraction." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Position rétractée de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Jusqu'où rétracter le filament afin de le casser proprement." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Vitesse de rétraction de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "La vitesse à laquelle rétracter le filament afin de le rompre proprement." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Température de rupture" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "La température à laquelle le filament est cassé pour une rupture propre." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1993,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensation du débit : la quantité de matériau extrudée est multipliée par cette valeur." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Débit de paroi" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensation de débit sur les lignes de la paroi." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Débit de paroi externe" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensation de débit sur la ligne de la paroi la plus à l'extérieur." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Débit de paroi(s) interne(s)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensation de débit sur les lignes de la paroi pour toutes les lignes de paroi, à l'exception de la ligne la plus externe." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Débit du dessus/dessous" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensation de débit sur les lignes du dessus/dessous." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Débit de la surface du dessus" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensation de débit sur les lignes des zones en haut de l'impression." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Débit de remplissage" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensation de débit sur les lignes de remplissage." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Débit de la jupe/bordure" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensation de débit sur les lignes de jupe ou bordure." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Débit du support" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensation de débit sur les lignes de support." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Débit de l'interface de support" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensation de débit sur les lignes de plafond ou de bas de support." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Débit du plafond de support" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensation de débit sur les lignes du plafond de support." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Débit du bas de support" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensation de débit sur les lignes de bas de support." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Débit de la tour primaire" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensation de débit sur les lignes de la tour primaire." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2110,8 +2402,8 @@ msgstr "Limiter les rétractations du support" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Omettre la rétraction lors du passage entre supports en ligne droite. L'activation de ce paramètre permet de gagner du temps lors de l'impression, mais peut conduire à un cordage excessif à l'intérieur de la structure de support." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Omettre la rétraction lors du passage entre supports en ligne droite. L'activation de ce paramètre permet de gagner du temps lors de l'impression, mais peut conduire à un stringing excessif à l'intérieur de la structure de support." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2163,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "La vitesse à laquelle le filament est poussé vers l'arrière après une rétraction de changement de buse." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Montant de l'amorce supplémentaire lors d'un changement de buse" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Matériel supplémentaire à amorcer après le changement de buse." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2354,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "La vitesse à laquelle la jupe et la bordure sont imprimées. Normalement, cette vitesse est celle de la couche initiale, mais il est parfois nécessaire d’imprimer la jupe ou la bordure à une vitesse différente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Vitesse Z maximale" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Vitesse du décalage en Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "La vitesse maximale à laquelle le plateau se déplace. Définir cette valeur sur zéro impose à l'impression d'utiliser les valeurs par défaut du firmware pour la vitesse z maximale." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "La vitesse à laquelle le mouvement vertical en Z est effectué pour des décalages en Z. Cette vitesse est généralement inférieure à la vitesse d'impression car le plateau ou le portique de la machine est plus difficile à déplacer." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2863,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "La distance entre la buse et les pièces déjà imprimées lors du contournement pendant les déplacements." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Démarrer les couches avec la même partie" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Dans chaque couche, démarre l'impression de l'objet à proximité du même point, de manière à ce que nous ne commencions pas une nouvelle couche en imprimant la pièce avec laquelle la couche précédente s'est terminée. Cela renforce les porte-à-faux et les petites pièces, mais augmente le temps d'impression." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3279,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distance entre les lignes de la structure de support de la couche initiale imprimée. Ce paramètre est calculé en fonction de la densité du support." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direction de ligne de remplissage du support" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientation du motif de remplissage pour les supports. Le motif de remplissage du support pivote dans le plan horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que l'angle par défaut est utilisé (0 degré)." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3415,8 +3707,8 @@ msgstr "Distance de jointement des supports" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "La distance maximale entre les supports dans les directions X/Y. Lorsque des supports séparés sont plus rapprochés que cette valeur, ils fusionnent." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "La distance maximale entre les supports dans les directions X/Y. Lorsque des modèle séparés sont plus rapprochés que cette valeur, ils fusionnent." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3700,8 +3992,9 @@ msgstr "Surface minimale de l'interface de support" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Taille minimale de la surface des polygones d'interface de support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Taille minimale de la surface des polygones d'interface de support. Les polygones dont la surface est inférieure à cette valeur ne seront pas imprimés" +" comme support normal." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3710,8 +4003,9 @@ msgstr "Surface minimale du plafond de support" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Taille minimale de la surface des plafonds du support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Taille minimale de la surface des plafonds du support. Les polygones dont la surface est inférieure à cette valeur ne seront pas imprimés comme support" +" normal." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3720,8 +4014,8 @@ msgstr "Surface minimale du bas de support" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Taille minimale de la surface des bas du support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Taille minimale de la surface des bas du support. Les polygones dont la surface est inférieure à cette valeur ne seront pas imprimés comme support normal." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3753,6 +4047,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Quantité de décalage appliqué aux bas du support." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direction de ligne d'interface du support" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles par défaut sont utilisés (alternative entre 45 et 135 degrés si les interfaces sont assez épaisses ou 90 degrés)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direction de la ligne de plafond de support" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles par défaut sont utilisés (alternative entre 45 et 135 degrés si les interfaces sont assez épaisses ou 90 degrés)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direction de la ligne de bas de support" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Une liste de sens de ligne (exprimés en nombres entiers) à utiliser. Les éléments de la liste sont utilisés de manière séquentielle à mesure de l'avancement des couches. La liste reprend depuis le début lorsque la fin est atteinte. Les éléments de la liste sont séparés par des virgules et la liste entière est encadrée entre crochets. La valeur par défaut est une liste vide, ce qui signifie que les angles par défaut sont utilisés (alternative entre 45 et 135 degrés si les interfaces sont assez épaisses ou 90 degrés)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3794,14 +4118,14 @@ msgid "The diameter of a special tower." msgstr "Le diamètre d’une tour spéciale." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diamètre minimal" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diamètre maximal supporté par la tour" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Le diamètre minimal sur les axes X/Y d’une petite zone qui doit être soutenue par une tour de soutien spéciale." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Le diamètre maximal sur les axes X/Y d’une petite zone qui doit être soutenue par une tour de soutien spéciale." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3923,7 +4247,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "La distance horizontale entre la jupe et la première couche de l’impression.\nIl s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." +msgstr "" +"La distance horizontale entre la jupe et la première couche de l’impression.\n" +"Il s’agit de la distance minimale séparant la jupe de l’objet. Si la jupe a d’autres lignes, celles-ci s’étendront vers l’extérieur." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4295,16 +4621,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprimer une tour à côté de l'impression qui sert à amorcer le matériau après chaque changement de buse." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Tour primaire circulaire" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Réaliser la tour primaire en forme circulaire." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4345,16 +4661,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Les coordonnées Y de la position de la tour primaire." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Débit de la tour primaire" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensation du débit : la quantité de matériau extrudée est multipliée par cette valeur." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4495,6 +4801,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Supprimer les couches vides sous la première couche imprimée si elles sont présentes. Le fait de désactiver ce paramètre peut entraîner l'apparition de premières couches vides si le paramètre Tolérance à la découpe est défini sur Exclusif ou Milieu." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Résolution maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Taille minimum d'un segment de ligne après découpage. Si vous augmentez cette valeur, la maille aura une résolution plus faible. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code et augmentera la vitesse de découpe en enlevant des détails de la maille que l'imprimante ne peut pas traiter de toute manière." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Résolution de déplacement maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Taille minimale d'un segment de ligne de déplacement après la découpe. Si vous augmentez cette valeur, les mouvements de déplacement auront des coins moins lisses. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code, mais cela peut réduire la précision de l'évitement du modèle." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Écart maximum" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "L'écart maximum autorisé lors de la réduction de la résolution pour le paramètre Résolution maximum. Si vous augmentez cette valeur, l'impression sera moins précise, mais le G-Code sera plus petit. L'écart maximum est une limite pour la résolution maximum. Donc si les deux entrent en conflit, l'Écart maximum restera valable." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4657,8 +4993,8 @@ msgstr "Lisser les contours spiralisés" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails fins de la surface." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails très fins de la surface." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4870,36 +5206,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Les polygones en couches tranchées dont la circonférence est inférieure à cette valeur seront filtrés. Des valeurs élevées permettent d'obtenir un maillage de meilleure résolution mais augmentent le temps de découpe. Cette option est principalement destinée aux imprimantes SLA haute résolution et aux modèles 3D de très petite taille avec beaucoup de détails." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Résolution maximum" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Taille minimum d'un segment de ligne après découpage. Si vous augmentez cette valeur, la maille aura une résolution plus faible. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code et augmentera la vitesse de découpe en enlevant des détails de la maille que l'imprimante ne peut pas traiter de toute manière." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Résolution de déplacement maximum" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Taille minimale d'un segment de ligne de déplacement après la découpe. Si vous augmentez cette valeur, les mouvements de déplacement auront des coins moins lisses. Cela peut permettre à l'imprimante de suivre la vitesse à laquelle elle doit traiter le G-Code, mais cela peut réduire la précision de l'évitement du modèle." - -#: fdmprinter.def.json -msgctxt "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" @@ -5040,16 +5346,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Vitesse de déplacement pendant une roue libre, par rapport à la vitesse de déplacement pendant l'extrusion. Une valeur légèrement inférieure à 100 % est conseillée car, lors du mouvement en roue libre, la pression dans le tube bowden chute." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alterner la rotation dans les couches extérieures" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterne le sens d'impression des couches du dessus/dessous. Elles sont généralement imprimées uniquement en diagonale. Ce paramètre ajoute les sens X uniquement et Y uniquement." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5157,8 +5453,8 @@ msgstr "Activer les supports coniques" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Fonctionnalité expérimentale : rendre les aires de support plus petites en bas qu'au niveau du porte-à-faux à supporter." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Rendre les aires de support plus petites en bas qu'au niveau du porte-à-faux à supporter." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5222,23 +5518,24 @@ msgstr "Distance moyenne entre les points ajoutés aléatoirement sur chaque seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Décalage d'extrusion max. pour compensation du débit" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Distance de compensation maximum en mm." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "La distance maximale en mm pour déplacer le filament afin de compenser les variations du débit." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Facteur de compensation du débit" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Facteur de multiplication pour le débit -> translation de la distance." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "La distance de déplacement du filament pour compenser les variations du débit, en pourcentage de la distance de déplacement du filament en une seconde" +" d'extrusion." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5390,7 +5687,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\nCela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." +msgstr "" +"Distance d’un déplacement ascendant qui est extrudé à mi-vitesse.\n" +"Cela peut permettre une meilleure adhérence aux couches précédentes sans surchauffer le matériau dans ces couches. Uniquement applicable à l'impression filaire." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5529,13 +5828,14 @@ msgstr "Différence de hauteur de la couche suivante par rapport à la précéde #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Limite des couches adaptatives" +msgid "Adaptive Layers Topography Size" +msgstr "Taille de la topographie des couches adaptatives" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Limite indiquant d'utiliser ou non une couche plus petite. Ce nombre est comparé à la tangente de la pente la plus raide d'une couche." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distance horizontale cible entre deux couches adjacentes. La réduction de ce paramètre entraîne l'utilisation de couches plus fines pour rapprocher les" +" bords des couches." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5544,8 +5844,9 @@ msgstr "Angle de parois en porte-à-faux" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Les parois ayant un angle supérieur à cette valeur seront imprimées en utilisant les paramètres de parois en porte-à-faux. Si la valeur est 90, aucune paroi ne sera considérée comme étant en porte-à-faux." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Les parois ayant un angle supérieur à cette valeur seront imprimées en utilisant les paramètres de parois en porte-à-faux. Si la valeur est 90, aucune" +" paroi ne sera considérée comme étant en porte-à-faux. La saillie soutenue par le support ne sera pas non plus considérée comme étant en porte-à-faux." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5897,6 +6198,48 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "La distance de déplacement de la tête d'avant en arrière à travers la brosse." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Taille maximale des petits trous" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Les trous et les contours des pièces dont le diamètre est inférieur à celui-ci seront imprimés en utilisant l'option Vitesse de petite structure." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Longueur max de petite structure" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Les contours des structures dont le diamètre est inférieur à cette longueur seront imprimés en utilisant l'option Vitesse de petite structure." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Vitesse de petite structure" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Les petites structures seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider à l'adhésion et à la" +" précision." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Vitesse de la couche initiale de petite structure" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Les petites structures sur la première couche seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider" +" à l'adhésion et à la précision." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5957,6 +6300,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matrice de transformation à appliquer au modèle lors de son chargement depuis le fichier." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Taille minimale de la surface des polygones d'interface de support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Taille minimale de la surface des plafonds du support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Taille minimale de la surface des bas du support : les polygones dont la surface est inférieure à cette valeur ne seront pas générés." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alterner la rotation dans les couches extérieures" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterne le sens d'impression des couches du dessus/dessous. Elles sont généralement imprimées uniquement en diagonale. Ce paramètre ajoute les sens X uniquement et Y uniquement." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Décalage d'extrusion max. pour compensation du débit" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Distance de compensation maximum en mm." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Facteur de compensation du débit" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Facteur de multiplication pour le débit -> translation de la distance." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Limite des couches adaptatives" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Limite indiquant d'utiliser ou non une couche plus petite. Ce nombre est comparé à la tangente de la pente la plus raide d'une couche." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Les parois ayant un angle supérieur à cette valeur seront imprimées en utilisant les paramètres de parois en porte-à-faux. Si la valeur est 90, aucune paroi ne sera considérée comme étant en porte-à-faux." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Les petites structures seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider à l'adhésion et à la précision." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Vitesse de la première couche" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Les petites structures sur la première couche seront imprimées à ce pourcentage de la vitesse d'impression normale. Une impression plus lente peut aider à l'adhésion et à la précision." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Aller au-dessus de la surface supérieure une fois supplémentaire, mais sans extruder de matériau. Cela signifie de faire fondre le plastique en haut un peu plus, pour créer une surface lisse." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Démarrer les couches avec la même partie" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Dans chaque couche, démarre l'impression de l'objet à proximité du même point, de manière à ce que nous ne commencions pas une nouvelle couche en imprimant la pièce avec laquelle la couche précédente s'est terminée. Cela renforce les porte-à-faux et les petites pièces, mais augmente le temps d'impression." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientation du motif de remplissage pour les supports. Le motif de remplissage du support pivote dans le plan horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "L'écart maximum autorisé lors de la réduction de la résolution pour le paramètre Résolution maximum. Si vous augmentez cette valeur, l'impression sera moins précise, mais le G-Code sera plus petit." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Parfum G-Code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Vérifie si les angles du contour du modèle influencent l'emplacement de la jointure. « Aucune » signifie que les angles n'ont aucune influence sur l'emplacement de la jointure. « Masquer jointure » génère généralement le positionnement de la jointure sur un angle intérieur. « Exposer jointure » génère généralement le positionnement de la jointure sur un angle extérieur. « Masquer ou exposer jointure » génère généralement le positionnement de la jointure sur un angle intérieur ou extérieur." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorer les petits trous en Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quand le modèle présente de petits trous verticaux, environ 5 % de temps de calcul supplémentaire peut être alloué à la génération de couches du dessus et du dessous dans ces espaces étroits. Dans ce cas, désactivez ce paramètre." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "La température utilisée pour le volume d'impression. Si cette valeur est 0, la température du volume d'impression ne sera pas ajustée." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omettre la rétraction lors du passage entre supports en ligne droite. L'activation de ce paramètre permet de gagner du temps lors de l'impression, mais peut conduire à un cordage excessif à l'intérieur de la structure de support." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Vitesse Z maximale" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "La vitesse maximale à laquelle le plateau se déplace. Définir cette valeur sur zéro impose à l'impression d'utiliser les valeurs par défaut du firmware pour la vitesse z maximale." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "La distance maximale entre les supports dans les directions X/Y. Lorsque des supports séparés sont plus rapprochés que cette valeur, ils fusionnent." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diamètre minimal" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Le diamètre minimal sur les axes X/Y d’une petite zone qui doit être soutenue par une tour de soutien spéciale." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Tour primaire circulaire" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Réaliser la tour primaire en forme circulaire." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensation du débit : la quantité de matériau extrudée est multipliée par cette valeur." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Lisser les contours spiralisés pour réduire la visibilité de la jointure en Z (la jointure en Z doit être à peine visible sur l'impression mais sera toujours visible dans la vue en couches). Veuillez remarquer que le lissage aura tendance à estomper les détails fins de la surface." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Fonctionnalité expérimentale : rendre les aires de support plus petites en bas qu'au niveau du porte-à-faux à supporter." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Nombre d'extrudeuses activées" @@ -6162,7 +6649,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" #~ "." @@ -6175,7 +6661,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" #~ "." @@ -6232,7 +6717,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 6d6b5e0a6b..b215eae599 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-03-14 14:31+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Italian\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Italian , Italian \n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -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:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Impostazioni macchina" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "File G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter non supporta la modalità non di testo." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Preparare il codice G prima dell’esportazione." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente modello 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,63 +64,56 @@ msgid "" "

{model_names}

\n" "

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

\n" "

View print quality guide

" -msgstr "

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

\n

{model_names}

\n

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

\n

Visualizza la guida alla qualità di stampa

" +msgstr "" +"

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

\n" +"

{model_names}

\n" +"

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

\n" +"

Visualizza la guida alla qualità di stampa

" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Aggiornamento firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Impostazioni attive profilo appiattito" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "File AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Il profilo è stato appiattito e attivato." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Stampa USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Stampa tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Connesso tramite USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Stampa tramite USB in corso, la chiusura di Cura interrompe la stampa. Confermare?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "File X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Stampa ancora in corso. Cura non può avviare un'altra stampa tramite USB finché la precedente non è stata completata." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Scrive X3g sui file" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "File X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Stampa in corso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -156,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Salva su unità rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Non ci sono formati di file disponibili per la scrittura!" @@ -193,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Impossibile salvare su unità rimovibile {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Errore" @@ -225,9 +217,9 @@ msgstr "Rimuovi il dispositivo rimovibile {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Avvertenza" @@ -254,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unità rimovibile" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Collegato alla rete." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Stato di autenticazione" - -#: /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: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: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:115 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Accesso alla stampante accettato" - -#: /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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Invio dati alla stampante in corso" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Invio dati" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annulla" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizzazione con la stampante" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Collegato alla rete" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dati inviati" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Visualizzazione in Controlla" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Vuoto" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Sconosciuto" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Stampa tramite Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Stampa tramite Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Collegato tramite Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Errore cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Impossibile caricare i dati sulla stampante." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "domani" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "oggi" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Caricamento tramite Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Per iniziare" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Collegato!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Controlla collegamento" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Collega tramite rete" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Guida alle impostazioni Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Stampa sulla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Stampa sulla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Collegato alla rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Attendere che sia stato inviato il processo corrente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Errore di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Nuove stampanti in cloud rilevate" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Sono state trovate nuove stampanti collegate al tuo account. Puoi vederle nell'elenco delle stampanti rilevate." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Non mostrare nuovamente questo messaggio" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Tentativo di connessione a {0} in corso, che non è l'host di un gruppo. È possibile visitare la pagina web per configurarla come host del gruppo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Non host del gruppo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurare il gruppo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Invia e controlla i processi di stampa ovunque con l’account Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Connettiti a Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Per iniziare" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Invio di un processo di stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Caricamento del processo di stampa sulla stampante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Processo di stampa inviato con successo alla stampante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dati inviati" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Si sta tentando di connettersi a una stampante che non esegue Ultimaker Connect. Aggiornare la stampante con il firmware più recente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Aggiornare la stampante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura ha rilevato dei profili di materiale non ancora installati sulla stampante host del gruppo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Invio dei materiali alla stampante" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Impossibile caricare i dati sulla stampante." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Errore di rete" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "domani" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "oggi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Stampa tramite Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Stampa tramite Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Collegato tramite Cloud" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Controlla" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Non è possibile accedere alle informazioni di aggiornamento." @@ -621,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Visualizzazione strato" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura non visualizza in modo accurato gli strati se la funzione Wire Printing è abilitata" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Vista simulazione" @@ -681,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Immagine GIF" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -745,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configura impostazioni per modello" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Consigliata" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizzata" @@ -761,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "File 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Ugello" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Il file di progetto {0} contiene un tipo di macchina sconosciuto {1}. Impossibile importare la macchina. Verranno invece importati i modelli." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Apri file progetto" @@ -788,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "File G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Parsing codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Dettagli codice G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Verifica che il codice G sia idoneo alla tua stampante e alla sua configurazione prima di trasmettere il file. La rappresentazione del codice G potrebbe non essere accurata." @@ -853,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Profilo Cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Assistente profilo" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Assistente profilo" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -883,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Anteprima" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -899,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Login non riuscito" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Non supportato" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Il file esiste già" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Il file {0} esiste già. Sei sicuro di volerlo sovrascrivere?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "File URL non valido:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Le impostazioni sono state modificate in base all’attuale disponibilità di estrusori:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Impostazioni aggiornate" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Estrusore disabilitato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Sconosciuto" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Impossibile esportare il profilo su {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Impossibile esportare il profilo su {0}: Rilevata anomalia durante scrittura plugin." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profilo esportato su {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Esportazione riuscita" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Impossibile importare il profilo da {0} prima di aggiungere una stampante." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Nessun profilo personalizzato da importare nel file {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Impossibile importare il profilo da {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Questo profilo {0} contiene dati errati, impossibile importarlo." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "La macchina definita nel profilo {0} ({1}) non corrisponde alla macchina corrente ({2}), impossibile importarla." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Impossibile importare il profilo da {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profilo importato correttamente {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Il file {0} non contiene nessun profilo valido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Il profilo {0} ha un tipo di file sconosciuto o corrotto." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Profilo personalizzato" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Il profilo è privo del tipo di qualità." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1099,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Altro" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "File pre-sezionato {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1119,73 +953,122 @@ msgstr "Gruppo #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Chiudi" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Aggiungi" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annulla" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visivo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Il profilo visivo è destinato alla stampa di prototipi e modelli visivi, con l'intento di ottenere una qualità visiva e della superficie elevata." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Il profilo di progettazione è destinato alla stampa di prototipi funzionali e di componenti d'uso finale, allo scopo di ottenere maggiore precisione e" +" tolleranze strette." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Bozza" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Il profilo bozza è destinato alla stampa dei prototipi iniziali e alla convalida dei concept, con l'intento di ridurre in modo significativo il tempo di" +" stampa." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Non sottoposto a override" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Profili personalizzati" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Tutti i tipi supportati ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tutti i file (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Sconosciuto" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Stampanti disponibili in rete" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Materiale personalizzato" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizzata" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Le stampanti riportate di seguito non possono essere collegate perché fanno parte di un gruppo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Stampanti disponibili in rete" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "L’altezza del volume di stampa è stata ridotta a causa del valore dell’impostazione \"Sequenza di stampa” per impedire la collisione del gantry con i modelli stampati." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume di stampa" @@ -1210,39 +1093,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Impossibile leggere la risposta." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Impossibile raggiungere il server account Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Fornire i permessi necessari al momento dell'autorizzazione di questa applicazione." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Si è verificato qualcosa di inatteso durante il tentativo di accesso, riprovare." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Moltiplicazione e collocazione degli oggetti" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Sistemazione oggetti" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Impossibile individuare una posizione nel volume di stampa per tutti gli oggetti" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Sistemazione oggetto" @@ -1278,7 +1161,12 @@ msgid "" "

Backups can be found in the configuration folder.

\n" "

Please send us this Crash Report to fix the problem.

\n" " " -msgstr "

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

\n

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

\n

I backup sono contenuti nella cartella configurazione.

\n

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

\n " +msgstr "" +"

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

\n" +"

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

\n" +"

I backup sono contenuti nella cartella configurazione.

\n" +"

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

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

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

\n

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

\n " +msgstr "" +"

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

\n" +"

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

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" @@ -1383,53 +1274,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Caricamento macchine in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Impostazione delle preferenze..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Impostazione scena in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Caricamento interfaccia in corso..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "È possibile caricare un solo file codice G per volta. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Impossibile aprire altri file durante il caricamento del codice G. Importazione saltata {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Il modello selezionato è troppo piccolo per il caricamento." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Impostazioni della stampante" @@ -1442,15 +1338,15 @@ msgstr "X (Larghezza)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1482,50 +1378,55 @@ msgstr "Piano riscaldato" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume di stampa riscaldato" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Versione codice G" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Impostazioni della testina di stampa" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Altezza gantry" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Numero di estrusori" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "Codice G avvio" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "Codice G fine" @@ -1555,22 +1456,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Scostamento X ugello" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Codice G fine estrusore" @@ -1581,7 +1482,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Installa" @@ -1596,16 +1497,16 @@ msgctxt "@label" msgid "ratings" msgstr "valori" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plugin" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiali" @@ -1615,49 +1516,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1718,17 +1619,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Esci da Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contributi della comunità" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Plugin della comunità" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiali generici" @@ -1769,7 +1670,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 "Questo plugin contiene una licenza.\nÈ necessario accettare questa licenza per poter installare il plugin.\nAccetti i termini sotto riportati?" +msgstr "" +"Questo plugin contiene una licenza.\n" +"È necessario accettare questa licenza per poter installare il plugin.\n" +"Accetti i termini sotto riportati?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" @@ -1786,27 +1690,47 @@ msgctxt "@label" msgid "Featured" msgstr "In primo piano" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilità" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Macchina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Piano di stampa" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Supporto" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualità" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Scheda dati tecnici" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Scheda dati di sicurezza" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Linee guida di stampa" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Sito web" @@ -1906,70 +1830,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Aggiornamento firmware non riuscito per firmware mancante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gestione stampanti" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Vetro" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "La webcam non è disponibile perché si sta controllando una stampante cloud." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Caricamento in corso..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Non disponibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Non raggiungibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Ferma" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Senza titolo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anonimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Richiede modifiche di configurazione" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Dettagli" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Stampante non disponibile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Primo disponibile" @@ -1979,209 +1909,195 @@ msgctxt "@label" msgid "Queued" msgstr "Coda di stampa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Non sono presenti processi di stampa nella coda. Eseguire lo slicing e inviare un processo per aggiungerne uno." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Processi di stampa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Tempo di stampa totale" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "In attesa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Tutti i processi sono stampati." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -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:50 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Collegamento esistente" - -#: /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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Collega alla stampante in rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n\nSelezionare la stampante dall’elenco seguente:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se non si esegue il collegamento di Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selezionare la stampante dall’elenco seguente:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Modifica" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Rimuovi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Aggiorna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se la stampante non è nell’elenco, leggere la guida alla risoluzione dei problemi per la stampa in rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versione firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Indirizzo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Questa stampante non è predisposta per comandare un gruppo di stampanti." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Questa stampante comanda un gruppo di %1 stampanti." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "La stampante a questo indirizzo non ha ancora risposto." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Collega" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Indirizzo IP non valido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Inserire un indirizzo IP valido." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Indirizzo stampante" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." +msgid "Enter the IP address of your printer on the network." +msgstr "Inserire l'indirizzo IP della stampante in rete." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Finisce %1 a %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Stampa" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Stampa sulla rete" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Stampa" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Selezione stampante" @@ -2270,65 +2186,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Override" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alluminio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Collega a una stampante" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2537,70 +2448,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Smoothing" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo di maglia" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modello normale" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Stampa come supporto" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Non supporta sovrapposizione con altri modelli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modifica impostazioni per sovrapposizione con altri modelli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modifica impostazioni per riempimento di altri modelli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Seleziona impostazioni" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Seleziona impostazioni di personalizzazione per questo modello" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtro..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostra tutto" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo di maglia" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modello normale" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Stampa come supporto" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificare le impostazioni per le sovrapposizioni" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Non supportano le sovrapposizioni" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Solo riempimento" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Seleziona impostazioni" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Apri progetto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Aggiorna esistente" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Crea nuovo" @@ -2627,6 +2537,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Aggiorna" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Crea nuovo" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2640,7 +2555,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Impostazioni profilo" @@ -2651,75 +2566,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Come può essere risolto il conflitto nel profilo?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Non nel profilo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 override" msgstr[1] "%1 override" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivato da" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 override" msgstr[1] "%1, %2 override" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Impostazioni materiale" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Come può essere risolto il conflitto nel materiale?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Impostazione visibilità" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modalità" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Impostazioni visibili:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 su %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Il caricamento di un progetto annulla tutti i modelli sul piano di stampa." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Apri" @@ -2826,48 +2747,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Crea automaticamente un backup ogni giorno in cui viene avviata Cura." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Non supportato" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Esporta" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Suggerimento" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Prova di stampa" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Lista di controllo" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Blocco Olsson" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2953,170 +2832,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Sei sicuro di voler interrompere la stampa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informazioni" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Conferma modifica diametro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Il nuovo diametro del filamento impostato a %1 mm non è compatibile con l'attuale estrusore. Continuare?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Visualizza nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marchio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo di materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Colore" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Proprietà" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densità" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diametro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Costo del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Peso del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Lunghezza del filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Costo al metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Questo materiale è collegato a %1 e condivide alcune delle sue proprietà." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Scollega materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descrizione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informazioni sull’aderenza" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Impostazioni di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Attiva" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Crea" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Esporta" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Stampante" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Conferma rimozione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Sei sicuro di voler rimuovere %1? Questa operazione non può essere annullata!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importa materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Impossibile importare materiale {1}: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Materiale importato correttamente %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Esporta materiale" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Impossibile esportare il materiale su %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiale esportato correttamente su %1" @@ -3131,414 +3016,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Controlla tutto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calcolato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Corrente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unità" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Riavviare l'applicazione per rendere effettive le modifiche." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Seziona automaticamente alla modifica delle impostazioni." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seziona automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento del riquadro di visualizzazione" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Evidenzia in rosso le zone non supportate del modello. In assenza di supporto, queste aree non saranno stampate in modo corretto." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Visualizza sbalzo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Sposta la fotocamera in modo che il modello si trovi al centro della visualizzazione quando è selezionato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centratura fotocamera alla selezione dell'elemento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Il comportamento dello zoom predefinito di Cura dovrebbe essere invertito?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverti la direzione dello zoom della fotocamera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Lo zoom si muove nella direzione del mouse?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Nella prospettiva ortogonale lo zoom verso la direzione del mouse non è supportato." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoom verso la direzione del mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "I modelli sull’area di stampa devono essere spostati per evitare intersezioni?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Assicurarsi che i modelli siano mantenuti separati" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "I modelli sull’area di stampa devono essere portati a contatto del piano di stampa?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Rilascia automaticamente i modelli sul piano di stampa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Visualizza il messaggio di avvertimento sul lettore codice G." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Messaggio di avvertimento sul lettore codice G" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Lo strato deve essere forzato in modalità di compatibilità?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forzare la modalità di compatibilità visualizzazione strato (riavvio necessario)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Aprire Cura nel punto in cui è stato chiuso?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Ripristinare la posizione della finestra all'avvio" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Quale tipo di rendering della fotocamera è necessario utilizzare?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Rendering fotocamera:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Prospettiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortogonale" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Apertura e salvataggio file" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "I modelli devono essere ridimensionati al volume di stampa, se troppo grandi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Ridimensiona i modelli troppo grandi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Un modello può apparire eccessivamente piccolo se la sua unità di misura è espressa in metri anziché in millimetri. Questi modelli devono essere aumentati?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Ridimensiona i modelli eccessivamente piccoli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "I modelli devono essere selezionati dopo essere stati caricati?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selezionare i modelli dopo il caricamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Al nome del processo di stampa deve essere aggiunto automaticamente un prefisso basato sul nome della stampante?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Aggiungi al nome del processo un prefisso macchina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Quando si salva un file di progetto deve essere visualizzato un riepilogo?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Visualizza una finestra di riepilogo quando si salva un progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento predefinito all'apertura di un file progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento predefinito all'apertura di un file progetto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Chiedi sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Apri sempre come progetto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importa sempre i modelli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Dopo aver modificato un profilo ed essere passati a un altro, si apre una finestra di dialogo che chiede se mantenere o eliminare le modifiche oppure se scegliere un comportamento predefinito e non visualizzare più tale finestra di dialogo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamento predefinito per i valori di impostazione modificati al passaggio a un profilo diverso: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Chiedi sempre" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Elimina sempre le impostazioni modificate" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Trasferisci sempre le impostazioni modificate a un nuovo profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura deve verificare la presenza di eventuali aggiornamenti all’avvio del programma?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Controlla aggiornamenti all’avvio" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "I dati anonimi sulla stampa devono essere inviati a Ultimaker? Nota, non sono trasmessi o memorizzati modelli, indirizzi IP o altre informazioni personali." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Invia informazioni di stampa (anonime)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Ulteriori informazioni" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Rinomina" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profili" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Crea" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Crea profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Indica un nome per questo profilo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplica profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Rinomina profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importa profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Esporta profilo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Stampante: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Profili predefiniti" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Aggiorna il profilo con le impostazioni/esclusioni correnti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Elimina le modifiche correnti" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Questo profilo utilizza le impostazioni predefinite dalla stampante, perciò non ci sono impostazioni/esclusioni nell’elenco riportato di seguito." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Le impostazioni correnti corrispondono al profilo selezionato." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Impostazioni globali" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Mercato" @@ -3598,36 +3491,36 @@ msgstr "Senza titolo" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "impostazioni ricerca" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copia valore su tutti gli estrusori" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copia tutti i valori modificati su tutti gli estrusori" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nascondi questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Mantieni visibile questa impostazione" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configura visibilità delle impostazioni..." @@ -3638,55 +3531,71 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n\nFare clic per rendere visibili queste impostazioni." +msgstr "" +"Alcune impostazioni nascoste utilizzano valori diversi dal proprio valore normale calcolato.\n" +"\n" +"Fare clic per rendere visibili queste impostazioni." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Questa impostazione è sempre condivisa tra tutti gli estrusori. La sua modifica varierà il valore per tutti gli estrusori." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Questo valore è risolto da valori per estrusore " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Questa impostazione ha un valore diverso dal profilo.\n\nFare clic per ripristinare il valore del profilo." +msgstr "" +"Questa impostazione ha un valore diverso dal profilo.\n" +"\n" +"Fare clic per ripristinare il valore del profilo." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n\nFare clic per ripristinare il valore calcolato." +msgstr "" +"Questa impostazione normalmente viene calcolata, ma attualmente ha impostato un valore assoluto.\n" +"\n" +"Fare clic per ripristinare il valore calcolato." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Consigliata" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizzata" @@ -3711,36 +3620,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Genera strutture per supportare le parti del modello a sbalzo. Senza queste strutture, queste parti collasserebbero durante la stampa." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Altezza dello strato" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Sono state modificate alcune impostazioni del profilo. Per modificarle, andare alla modalità personalizzata." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 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" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Un profilo personalizzato è attualmente attivo. Per attivare il cursore qualità, selezionare un profilo di qualità predefinito nella scheda Personalizza" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3751,18 +3645,31 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Disinserita" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Sperimentale" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Profilo" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n\nFare clic per aprire la gestione profili." +msgstr "" +"Alcuni valori di impostazione/esclusione sono diversi dai valori memorizzati nel profilo.\n" +"\n" +"Fare clic per aprire la gestione profili." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Profili personalizzati" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" @@ -3799,59 +3706,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Estrusore" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Temperatura target dell'estremità riscaldata. L'estremità riscaldata si riscalderà o raffredderà sino a questo valore di temperatura. Se questo è 0, l'estremità riscaldata verrà spenta." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "La temperatura corrente di questa estremità calda." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "La temperatura di preriscaldo dell’estremità calda." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annulla" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Pre-riscaldo" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Riscalda l’estremità calda prima della stampa. È possibile continuare a regolare la stampa durante il riscaldamento e non è necessario attendere il riscaldamento dell’estremità calda quando si è pronti per la stampa." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Il colore del materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Il materiale di questo estrusore." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "L’ugello inserito in questo estrusore." @@ -3891,12 +3798,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Preferiti" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Generale" @@ -3916,42 +3823,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "S&tampante" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "Ma&teriale" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Imposta come estrusore attivo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Abilita estrusore" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Disabilita estrusore" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Piano di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profilo" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posizione fotocamera" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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" @@ -3971,17 +3883,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gestisci Impostazione visibilità..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Salva..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Esporta..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Esporta selezione..." @@ -4010,12 +3922,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Configurazioni" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Seleziona configurazione" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Configurazioni" @@ -4045,12 +3957,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Abilitato" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Utilizzare la colla per una migliore adesione con questa combinazione di materiali." @@ -4070,22 +3982,22 @@ 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" @@ -4095,6 +4007,11 @@ msgctxt "@label" msgid "View type" msgstr "Visualizza tipo" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Elenco oggetti" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4126,7 +4043,10 @@ msgid "" "- Send print jobs to Ultimaker printers outside your local network\n" "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" "- Get exclusive access to print profiles from leading brands" -msgstr "- Invia i processi di stampa alle stampanti Ultimaker esterne alla rete locale\n- Invia le impostazioni Ultimaker Cura nel cloud per usarle ovunque\n- Ottieni l’accesso esclusivo ai profili di stampa dai principali marchi" +msgstr "" +"- Invia i processi di stampa alle stampanti Ultimaker esterne alla rete locale\n" +"- Invia le impostazioni Ultimaker Cura nel cloud per usarle ovunque\n" +"- Ottieni l’accesso esclusivo ai profili di stampa dai principali marchi" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 msgctxt "@button" @@ -4143,32 +4063,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Nessuna stima di costo disponibile" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" msgstr "Sezionamento impossibile" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Annulla" @@ -4203,233 +4128,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Stampanti preimpostate" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Mercato" @@ -4444,49 +4374,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Impostazioni" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Chiusura di Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Sei sicuro di voler uscire da Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Installa il pacchetto" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Apri file" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Rilevata la presenza di uno o più file codice G tra i file selezionati. È possibile aprire solo un file codice G alla volta. Se desideri aprire un file codice G, selezionane uno solo." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Aggiungi stampante" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Scopri le novità" @@ -4508,7 +4438,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "Sono state personalizzate alcune impostazioni del profilo.\nMantenere o eliminare tali impostazioni?" +msgstr "" +"Sono state personalizzate alcune impostazioni del profilo.\n" +"Mantenere o eliminare tali impostazioni?" #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -4555,139 +4487,141 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Informazioni su Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "versione: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Soluzione end-to-end per la stampa 3D con filamento fuso." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\nCura è orgogliosa di utilizzare i seguenti progetti open source:" +msgstr "" +"Cura è stato sviluppato da Ultimaker B.V. in cooperazione con la comunità.\n" +"Cura è orgogliosa di utilizzare i seguenti progetti open source:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Interfaccia grafica utente" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Struttura applicazione" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Generatore codice G" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Libreria di comunicazione intra-processo" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Lingua di programmazione" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "Struttura GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Vincoli struttura GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Libreria vincoli C/C++" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Formato scambio dati" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Libreria di supporto per calcolo scientifico" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Libreria di supporto per calcolo rapido" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Libreria di supporto per gestione file STL" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Libreria di supporto per gestione oggetti planari" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Libreria di supporto per gestione maglie triangolari" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Libreria di supporto per l’analisi di reti complesse" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Libreria di supporto per gestione file 3MF" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Libreria di supporto per metadati file e streaming" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Libreria di comunicazione seriale" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Libreria scoperta ZeroConf" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Libreria ritaglio poligono" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Libreria Python HTTP" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Font" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Icone SVG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Apertura applicazione distribuzione incrociata Linux" @@ -4707,32 +4641,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Salva progetto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Piano di stampa" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Estrusore %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiale" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Materiale" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Non mostrare il riepilogo di progetto alla ripetizione di salva" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Salva" @@ -4908,12 +4837,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Ricerca e riparazione dei guasti" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Nome stampante" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Assegna un nome alla stampante" @@ -4963,27 +4892,39 @@ 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\nUltimaker Cura. Questa operazione richiederà solo pochi istanti." +msgstr "" +"Segui questa procedura per configurare\n" +"Ultimaker Cura. Questa operazione richiederà solo pochi istanti." #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 msgctxt "@button" msgid "Get started" msgstr "Per iniziare" -#: /home/ruben/Projects/Cura/resources/qml/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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Visualizzazione 3D" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Visualizzazione frontale" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Visualizzazione superiore" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vista sinistra" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vista destra" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5045,16 +4986,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Controllo modello" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Scarica contenuto di tutte le impostazioni in un file HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Modalità God" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5065,15 +4996,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Aggiornamento firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Crea un profilo appiattito di modifiche di qualità." +msgid "Provides support for reading AMF files." +msgstr "Fornisce il supporto per la lettura di file 3MF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Appiattitore di profilo" +msgid "AMF Reader" +msgstr "Lettore 3MF" #: USBPrinting/plugin.json msgctxt "description" @@ -5085,16 +5016,6 @@ msgctxt "name" msgid "USB printing" msgstr "Stampa USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Consente di salvare il sezionamento risultante come un file X3G, per supportare le stampanti che leggono questo formato (Malyan, Makerbot ed altre stampanti basate su firmware Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5137,23 +5058,13 @@ msgstr "Plugin dispositivo di output unità rimovibile" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gestisce le connessioni di rete alle stampanti Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gestisce le connessioni di rete alle stampanti Ultimaker in rete." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Connessione di rete UM3" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Connessione di rete Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5285,6 +5196,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Aggiornamento della versione da 3.3 a 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Aggiorna le configurazioni da Cura 4.3 a Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Aggiornamento della versione da 4.3 a 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5345,6 +5266,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Aggiornamento della versione da 3.0 a 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Aggiorna le configurazioni da Cura 4.1 a Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Aggiornamento della versione da 4.1 a 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5375,6 +5306,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Aggiornamento della versione da 2.2 a 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Aggiorna le configurazioni da Cura 4.2 a Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Aggiornamento della versione da 4.2 a 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5385,6 +5326,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Lettore di immagine" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Fornisce supporto per la lettura dei file modello." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh Reader" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5415,16 +5366,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Lettore 3MF" -#: SVGToolpathReader/build/plugin.json -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." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Lettore di toolpath (percorso utensile) SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5465,16 +5406,6 @@ 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." @@ -5515,6 +5446,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Lettore profilo Cura" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Impostazioni attive profilo appiattito" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Il profilo è stato appiattito e attivato." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Scrive X3g sui file" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "File X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "File X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Assistente profilo" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Assistente profilo" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Riprova" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Non supporta sovrapposizione con altri modelli" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modifica impostazioni per sovrapposizione con altri modelli" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modifica impostazioni per riempimento di altri modelli" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Aggiorna esistente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Non supportato" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Precedente" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Suggerimento" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Prova di stampa" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista di controllo" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Seleziona qualsiasi aggiornamento realizzato per questa Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Blocco Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Rendering fotocamera: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Utilizzare la funzionalità piano di stampa multiplo" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Utilizzare la funzionalità piano di stampa multiplo (necessario riavvio)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Profili predefiniti" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "impostazioni ricerca" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Altezza dello strato" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Questo profilo di qualità non è disponibile per la configurazione attuale del materiale e degli ugelli. Modificare tali configurazioni per abilitare il profilo di qualità desiderato." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Un profilo personalizzato è attualmente attivo. Per attivare il cursore qualità, selezionare un profilo di qualità predefinito nella scheda Personalizza" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Piano di stampa" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profilo" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Piano di stampa" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Scarica contenuto di tutte le impostazioni in un file HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Modalità God" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Crea un profilo appiattito di modifiche di qualità." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Appiattitore di profilo" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Consente ai produttori di materiali di creare nuovi profili materiale e di qualità utilizzando una UI drop-in." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistente profilo di stampa" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Collegato alla rete." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Collegato alla rete. Si prega di approvare la richiesta di accesso sulla stampante." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Collegato alla rete. Nessun accesso per controllare la stampante." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Richiesto accesso alla stampante. Approvare la richiesta sulla stampante" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Stato di autenticazione" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Stato di autenticazione" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Invia nuovamente la richiesta di accesso" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Accesso alla stampante accettato" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Nessun accesso per stampare con questa stampante. Impossibile inviare il processo di stampa." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Richiesta di accesso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Invia la richiesta di accesso alla stampante" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Impossibile avviare un nuovo processo di stampa." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "È presente un problema di configurazione della stampante che rende impossibile l’avvio della stampa. Risolvere il problema prima di continuare." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Mancata corrispondenza della configurazione" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Sei sicuro di voler stampare con la configurazione selezionata?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Le configurazioni o la calibrazione della stampante e di Cura non corrispondono. Per ottenere i migliori risultati, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Invio nuovi processi (temporaneamente) bloccato, invio in corso precedente processo di stampa." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Invio dati alla stampante in corso" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Invio dati" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Nessun PrintCore caricato nello slot {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Nessun materiale caricato nello slot {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore diverso (Cura: {cura_printcore_name}, Stampante: {remote_printcore_name}) selezionata per estrusore {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Materiale diverso (Cura: {0}, Stampante: {1}) selezionato per l’estrusore {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizzazione con la stampante" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Desideri utilizzare la configurazione corrente della tua stampante in Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "I PrintCore e/o i materiali sulla stampante differiscono da quelli contenuti nel tuo attuale progetto. Per ottenere i risultati migliori, sezionare sempre per i PrintCore e i materiali inseriti nella stampante utilizzata." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Visualizzazione in Controlla" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "La stampante '{printer_name}' ha finito di stampare '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Il processo di stampa '{job_name}' è terminato." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Stampa finita" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vuoto" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Sconosciuto" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Errore cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Impossibile esportare il processo di stampa." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Si è verificato un errore di collegamento al cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Caricamento tramite Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Collegato a Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Non chiedere nuovamente per questa stampante." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Ora è possibile inviare e controllare i processi di stampa ovunque con l’account Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Collegato!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Controlla collegamento" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "La macchina definita nel profilo {0} ({1}) non corrisponde alla macchina corrente ({2}), impossibile importarla." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Impossibile importare il profilo da {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Collegamento esistente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Stampante/gruppo già aggiunto a Cura. Selezionare un’altra stampante o un altro gruppo." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Inserire l’indirizzo IP o l’hostname della stampante sulla rete." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Collega a una stampante" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guida alle impostazioni Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Nella prospettiva ortogonale lo zoom verso la direzione del mouse non è supportato." + +#~ msgid "Orthogonal" +#~ msgstr "Ortogonale" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gestisce le connessioni di rete alle stampanti Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Connessione di rete UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Fornisce informazioni e spiegazioni aggiuntive sulle impostazioni in Cura, con immagini e animazioni." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guida alle impostazioni" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guida alle impostazioni Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Le impostazioni sono state modificate in base all’attuale disponibilità di estrusori: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descrizione utente" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Queste opzioni non sono disponibili perché si sta controllando una stampante cloud." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Vai a Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Tutti i processi sono stampati." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Visualizza cronologia di stampa" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Per stampare direttamente sulla stampante in rete, verificare che la stampante desiderata sia collegata alla rete mediante un cavo di rete o mediante collegamento alla rete WIFI. Se si collega Cura alla stampante, è comunque possibile utilizzare una chiavetta USB per trasferire i file codice G alla stampante.\n" +#~ "\n" +#~ "Selezionare la stampante dall’elenco seguente:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Accertarsi che la stampante sia collegata:\n" +#~ "- Controllare se la stampante è accesa.\n" +#~ "- Controllare se la stampante è collegata alla rete." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Vedi solo il piano di stampa corrente" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Sistema su tutti i piani di stampa" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Sistema il piano di stampa corrente" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Consente di salvare il sezionamento risultante come un file X3G, per supportare le stampanti che leggono questo formato (Malyan, Makerbot ed altre stampanti basate su firmware Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Legge i file SVG come toolpath (percorsi utensile), per eseguire il debug dei movimenti della stampante." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Lettore di toolpath (percorso utensile) SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Registro modifiche" @@ -5721,7 +6095,6 @@ msgstr "Lettore profilo Cura" #~ "- 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" @@ -5748,7 +6121,6 @@ msgstr "Lettore profilo Cura" #~ "\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." @@ -5961,7 +6333,6 @@ msgstr "Lettore profilo Cura" #~ "Print Setup disabled\n" #~ "G-code files cannot be modified" #~ msgstr "" - #~ "Impostazione di stampa disabilitata\n" #~ "I file codice G non possono essere modificati" @@ -6214,7 +6585,6 @@ msgstr "Lettore profilo Cura" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Impossibile esportare utilizzando qualità \"{}\" quality!\n" #~ "Tornato a \"{}\"." @@ -6391,7 +6761,6 @@ msgstr "Lettore profilo Cura" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "Alcuni modelli potrebbero non essere stampati in modo ottimale a causa delle dimensioni dell’oggetto e del materiale scelto: {model_names}.\n" #~ "Suggerimenti utili per migliorare la qualità di stampa:\n" #~ "1) Utilizzare angoli arrotondati.\n" @@ -6408,7 +6777,6 @@ msgstr "Lettore profilo Cura" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "Nessun modello trovato nel disegno. Si prega di controllare nuovamente il contenuto e accertarsi che all’interno vi sia un componente o gruppo.\n" #~ "\n" #~ "Grazie." @@ -6419,7 +6787,6 @@ msgstr "Lettore profilo Cura" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Trovato più di un componente o gruppo all’interno del disegno. Attualmente sono supportati solo i disegni con esattamente un componente o gruppo all’interno.\n" #~ "\n" #~ " Spiacenti." @@ -6444,7 +6811,6 @@ msgstr "Lettore profilo Cura" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Gentile cliente,\n" #~ "non abbiamo trovato un’installazione valida di SolidWorks nel suo sistema. Questo significa che SolidWorks non è installato o che non possiede una licenza valida. La invitiamo a verificare che l’esecuzione di SolidWorks avvenga senza problemi e/o a contattare il suo ICT.\n" #~ "\n" @@ -6459,7 +6825,6 @@ msgstr "Lettore profilo Cura" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "Gentile cliente,\n" #~ "attualmente ha in esecuzione questo plugin su un sistema operativo diverso da Windows. Questo plugin funziona solo su Windows con SolidWorks installato, con inclusa una licenza valida. Si prega di installare questo plugin su una macchina Windows con SolidWorks installato.\n" #~ "\n" @@ -6564,7 +6929,6 @@ msgstr "Lettore profilo Cura" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Aprire la directory\n" #~ "con macro e icona" @@ -6863,7 +7227,6 @@ msgstr "Lettore profilo Cura" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "Nessun modello trovato nel disegno. Si prega di controllare nuovamente il contenuto e accertarsi che all’interno vi sia un componente o gruppo.\n" #~ "\n" #~ " Grazie." @@ -6874,7 +7237,6 @@ msgstr "Lettore profilo Cura" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "Trovato più di un componente o gruppo all’interno del disegno. Attualmente sono supportati solo i disegni con esattamente un componente o gruppo all’interno.\n" #~ "\n" #~ " Spiacenti." @@ -6909,7 +7271,6 @@ msgstr "Lettore profilo Cura" #~ "

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

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

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

\n" #~ "

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

\n" #~ " " @@ -7076,7 +7437,6 @@ msgstr "Lettore profilo Cura" #~ "

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

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

Si è verificata un'eccezione irreversibile. Si prega di inviarci questo crash report per risolvere il problema

\n" #~ "

Utilizzare il pulsante \"Invia report\" per inviare un report sui bug automaticamente ai nostri server

\n" #~ " " @@ -7223,7 +7583,6 @@ msgstr "Lettore profilo Cura" #~ "

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

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

Si è verificata un'eccezione fatale che non stato possibile superare!

\n" #~ "

Utilizzare le informazioni sotto riportate per inviare un rapporto sull'errore a http://github.com/Ultimaker/Cura/issues

\n" #~ " " @@ -7266,7 +7625,6 @@ msgstr "Lettore profilo Cura" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " I plugin contengono una licenza.\n" #~ "È necessario accettare questa licenza per poter installare il plugin.\n" #~ "Accetti i termini sotto riportati?" @@ -7794,7 +8152,6 @@ msgstr "Lettore profilo Cura" #~ msgid "Print Selected Model with %1" #~ msgid_plural "Print Selected Models With %1" #~ msgstr[0] "Stampa modello selezionato con %1" - #~ msgstr[1] "Stampa modelli selezionati con %1" #~ msgctxt "@info:status" @@ -7824,7 +8181,6 @@ msgstr "Lettore profilo Cura" #~ "

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

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

Si è verificata un'eccezione fatale impossibile da ripristinare!

\n" #~ "

Ci auguriamo che l’immagine di questo gattino vi aiuti a superare lo shock.

\n" #~ "

Utilizzare le informazioni riportate di seguito per pubblicare una segnalazione errori all'indirizzo http://github.com/Ultimaker/Cura/issues

" diff --git a/resources/i18n/it_IT/fdmextruder.def.json.po b/resources/i18n/it_IT/fdmextruder.def.json.po index aa477c4fd4..4d730ebf7c 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Italian\n" diff --git a/resources/i18n/it_IT/fdmprinter.def.json.po b/resources/i18n/it_IT/fdmprinter.def.json.po index e5be994c85..2f7a93df43 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Italian\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Italian , Italian \n" "Language: it_IT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "I comandi codice G da eseguire all’avvio, separati da \n." +msgstr "" +"I comandi codice G da eseguire all’avvio, separati da \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -69,7 +71,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "I comandi codice G da eseguire alla fine, separati da \n." +msgstr "" +"I comandi codice G da eseguire alla fine, separati da \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Indica se la macchina ha un piano di stampa riscaldato." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "È dotato della stabilizzazione della temperatura del volume di stampa" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Se la macchina è in grado di stabilizzare la temperatura del volume di stampa." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -333,8 +347,8 @@ msgstr "Il tempo minimo in cui un estrusore deve essere inattivo prima che l’u #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" -msgstr "Tipo di codice G" +msgid "G-code Flavor" +msgstr "Versione codice G" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Indica il numero degli strati inferiori. Quando calcolato mediante lo spessore dello strato inferiore, il valore viene arrotondato a numero intero." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Layer inferiori iniziali" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Il numero di layer inferiori iniziali, dal piano di stampa verso l'alto. Quando viene calcolato mediante lo spessore inferiore, questo valore viene arrotondato" +" a un numero intero." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Angolo più acuto" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posizione della cucitura in Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "La posizione accanto al punto in cui avviare la stampa di ciascuna parte in uno layer." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Indietro a sinistra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Indietro" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Indietro a destra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Destra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Avanti a destra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Avanti" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Avanti a sinistra" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Sinistra" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Preferenze angolo giunzione" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno. Smart Hiding consente sia gli angoli interni che quelli esterni ma sceglie con maggiore frequenza gli angoli interni, se opportuno." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Nascondi o esponi giunzione" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Occultamento intelligente" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Se abilitato, le coordinate della giunzione Z sono riferite al centro di #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignora i piccoli interstizi a Z" +msgid "No Skin in Z Gaps" +msgstr "Nessun rivest. est. negli interstizi a Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quando il modello presenta piccoli spazi vuoti verticali, circa il 5% del tempo di calcolo supplementare può essere utilizzato per la generazione di rivestimenti esterni superiori ed inferiori in questi interstizi. In questo caso disabilitare l’impostazione." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Quando il modello presenta piccoli spazi vuoti verticali composti da un numero ridotto di strati, intorno a questi strati di norma dovrebbe essere presente un rivestimento esterno nell'interstizio. Abilitare questa impostazione per non generare il rivestimento esterno se l'interstizio verticale è molto piccolo. Ciò consente di migliorare il tempo di stampa e il tempo di sezionamento, ma dal punto di vista tecnico lascia il riempimento esposto all'aria." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Abilita stiratura" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di materiale. Ha lo scopo di fondere ulteriormente la plastica alla sommità, creando una superficie più uniforme." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Andare ancora una volta sulla superficie superiore, questa volta estrudendo una piccolissima quantità di materiale. Lo scopo è quello di sciogliere ulteriormente la plastica sulla parte superiore, creando una superficie più liscia. La pressione nella camera dell'ugello viene mantenuta elevata, in modo che le grinze nella superficie siano riempite con il materiale." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Indica la variazione della velocità istantanea massima durante la stiratura." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Percentuale di sovrapposizione del rivestimento esterno" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Regolare l’entità della sovrapposizione tra le pareti e (i punti finali delle) linee centrali del rivestimento esterno espressa in percentuale delle larghezze delle linee del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. Si noti che, data una larghezza uguale del rivestimento esterno e della linea perimetrale, qualsiasi percentuale superiore al 50% può già causare il superamento della parete da parte del rivestimento esterno in quanto, in quel punto, la posizione dell’ugello dell’estrusore del rivestimento esterno può già avere superato la parte centrale della parete." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sovrapposizione del rivestimento esterno" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Regolare l’entità della sovrapposizione tra le pareti e (i punti finali delle) linee centrali del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. Si noti che, data una larghezza uguale del rivestimento esterno e della linea perimetrale, qualsiasi percentuale superiore alla metà della parete può già causare il superamento della parete da parte del rivestimento esterno in quanto, in quel punto, la posizione dell’ugello dell’estrusore del rivestimento esterno può già aver superato la parte centrale della parete." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Il riempimento si sposta di questa distanza lungo l'asse Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Avvio con riempimento casuale" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Decidere in modo casuale quale sarà la linea di riempimento ad essere stampata per prima. In tal modo si evita che un segmento diventi il più resistente sebbene si esegua uno spostamento aggiuntivo." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Aggiunge pareti supplementari intorno alla zona di riempimento. Queste pareti possono ridurre l’abbassamento delle linee del rivestimento esterno superiore/inferiore, pertanto saranno necessari meno strati di rivestimento esterno superiore/inferiore per ottenere la stessa qualità al costo del materiale supplementare.\nQuesta funzione può essere abbinata a Collega poligoni riempimento per collegare tutto il riempimento in un unico percorso di estrusione senza necessità di avanzamenti o arretramenti, se configurata correttamente." +msgstr "" +"Aggiunge pareti supplementari intorno alla zona di riempimento. Queste pareti possono ridurre l’abbassamento delle linee del rivestimento esterno superiore/inferiore, pertanto saranno necessari meno strati di rivestimento esterno superiore/inferiore per ottenere la stessa qualità al costo del materiale supplementare.\n" +"Questa funzione può essere abbinata a Collega poligoni riempimento per collegare tutto il riempimento in un unico percorso di estrusione senza necessità di avanzamenti o arretramenti, se configurata correttamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Indica la quantità di sovrapposizione tra il riempimento e le pareti. Una leggera sovrapposizione consente il saldo collegamento delle pareti al riempimento." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Percentuale di sovrapposizione del rivestimento esterno" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Regolare l’entità della sovrapposizione tra le pareti e (i punti finali delle) linee centrali del rivestimento esterno espressa in percentuale delle larghezze delle linee del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. Si noti che, data una larghezza uguale del rivestimento esterno e della linea perimetrale, qualsiasi percentuale superiore al 50% può già causare il superamento della parete da parte del rivestimento esterno in quanto, in quel punto, la posizione dell’ugello dell’estrusore del rivestimento esterno può già avere superato la parte centrale della parete." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Sovrapposizione del rivestimento esterno" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Regolare l’entità della sovrapposizione tra le pareti e (i punti finali delle) linee centrali del rivestimento esterno. Una leggera sovrapposizione consente alle pareti di essere saldamente collegate al rivestimento. Si noti che, data una larghezza uguale del rivestimento esterno e della linea perimetrale, qualsiasi percentuale superiore alla metà della parete può già causare il superamento della parete da parte del rivestimento esterno in quanto, in quel punto, la posizione dell’ugello dell’estrusore del rivestimento esterno può già aver superato la parte centrale della parete." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,8 +1962,8 @@ msgstr "Temperatura volume di stampa" #: fdmprinter.def.json 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." +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" @@ -1983,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Il tasso di contrazione in percentuale." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Materiale cristallino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Questo tipo di materiale è quello che si stacca in modo netto quando viene riscaldato (cristallino) oppure è il tipo che produce lunghe catene di polimeri intrecciati (non cristallino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Posizione retratta anti fuoriuscita di materiale" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "La distanza alla quale deve essere retratto il materiale prima che smetta di fuoriuscire." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocità di retrazione anti fuoriuscita del materiale" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "La velocità a cui deve essere retratto il materiale durante un cambio di filamento per evitare la fuoriuscita di materiale." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posizione di retrazione prima della rottura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "La lunghezza massima di estensione del filamento prima che si rompa durante il riscaldamento." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocità di retrazione prima della rottura" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "La velocità massima di retrazione del filamento prima che si rompa durante questa operazione." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posizione di retrazione per la rottura" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "La distanza di retrazione del filamento al fine di consentirne la rottura netta." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocità di retrazione per la rottura" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "La velocità alla quale retrarre il filamento al fine di romperlo in modo netto." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura di rottura" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "La temperatura a cui il filamento viene rotto, con una rottura netta." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1993,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Determina la compensazione del flusso: la quantità di materiale estruso viene moltiplicata per questo valore." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Flusso della parete" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensazione del flusso sulle linee perimetrali." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Flusso della parete esterna" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensazione del flusso sulla linea perimetrale più esterna." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Flusso pareti interne" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensazione del flusso sulle linee perimetrali per tutte le linee perimetrali tranne quella più esterna." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Flusso superiore/inferiore" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensazione del flusso sulle linee superiore/inferiore." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Flusso rivestimento esterno superficie superiore" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensazione del flusso sulle linee delle aree nella parte superiore della stampa." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Flusso di riempimento" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensazione del flusso sulle linee di riempimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Flusso dello skirt/brim" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensazione del flusso sulle linee dello skirt o del brim." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Flusso del supporto" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensazione del flusso sulle linee di supporto." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Flusso interfaccia di supporto" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensazione del flusso sulle linee di supporto superiore o inferiore." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Flusso supporto superiore" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensazione del flusso sulle linee di supporto superiore." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Flusso supporto inferiore" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensazione del flusso sulle linee di supporto inferiore." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Flusso torre di innesco" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensazione del flusso sulle linee della torre di innesco." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2110,7 +2402,7 @@ msgstr "Limitazione delle retrazioni del supporto" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Omettere la retrazione negli spostamenti da un supporto ad un altro in linea retta. L'abilitazione di questa impostazione riduce il tempo di stampa, ma può comportare un'eccessiva produzione di filamenti all'interno della struttura del supporto." #: fdmprinter.def.json @@ -2163,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Indica la velocità alla quale il filamento viene sospinto indietro dopo la retrazione per cambio ugello." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Quantità di materiale extra della Prime Tower, al cambio ugello" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Materiale extra per l'innesco dopo il cambio dell'ugello." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2354,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Indica la velocità a cui sono stampati lo skirt ed il brim. Normalmente questa operazione viene svolta alla velocità di stampa dello strato iniziale, ma a volte è possibile che si desideri stampare lo skirt o il brim ad una velocità diversa." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocità massima Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocità di sollevamento Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Indica la velocità massima di spostamento del piano di stampa. L’impostazione di questo valore a zero causa l’utilizzo per la stampa dei valori preimpostati in fabbrica per la velocità massima Z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Velocità alla quale viene eseguito il movimento Z verticale per i sollevamenti in Z. In genere è inferiore alla velocità di stampa, dal momento che il piano o il corpo di stampa della macchina sono più difficili da spostare." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2863,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "La distanza tra l’ugello e le parti già stampate quando si effettua lo spostamento con aggiramento." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Avvio strati con la stessa parte" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "In ciascuno strato inizia la stampa dell’oggetto vicino allo stesso punto, in modo che non si inizia un nuovo strato con la stampa del pezzo con cui è terminato lo strato precedente. Questo consente di ottenere migliori sovrapposizioni e parti piccole, ma aumenta il tempo di stampa." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3279,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Indica la distanza tra le linee della struttura di supporto dello strato iniziale stampato. Questa impostazione viene calcolata mediante la densità del supporto." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direzione delle linee di riempimento supporto" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Indica l’orientamento della configurazione del riempimento per i supporti. La configurazione del riempimento del supporto viene ruotata sul piano orizzontale." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L’elenco predefinito è vuoto, vale a dire che utilizza l'angolo predefinito di 0 gradi." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3415,8 +3707,8 @@ msgstr "Distanza giunzione supporto" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Indica la distanza massima tra le strutture di supporto nelle direzioni X/Y. Quando la distanza tra le strutture è inferiore al valore indicato, le strutture convergono in una unica." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "La distanza massima tra le strutture di supporto nelle direzioni X/Y. Quando la distanza tra le strutture è inferiore al valore indicato, le strutture convergono in una unica." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3700,8 +3992,9 @@ msgstr "Area minima interfaccia supporto" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Dimensioni minime area per i poligoni di interfaccia del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Dimensione minima dell'area per i poligoni dell'interfaccia di supporto. I poligoni con un'area più piccola rispetto a questo valore saranno stampati come" +" supporto normale." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3710,8 +4003,9 @@ msgstr "Area minima parti superiori supporto" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Dimensioni minime area per le parti superiori del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Dimensione minima dell'area per le parti superiori del supporto. I poligoni con un'area più piccola rispetto a questo valore saranno stampati come supporto" +" normale." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3720,8 +4014,9 @@ msgstr "Area minima parti inferiori supporto" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Dimensioni minime area per le parti inferiori del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Dimensione minima dell'area per le parti inferiori del supporto. I poligoni con un'area più piccola rispetto a questo valore saranno stampati come supporto" +" normale." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3753,6 +4048,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Entità di offset applicato alle parti inferiori del supporto." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direzioni della linea dell'interfaccia di supporto" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L'elenco predefinito è vuoto, vale a dire che utilizza gli angoli predefiniti (alterna tra 45 e 135 gradi se le interfacce sono abbastanza spesse oppure 90 gradi)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direzioni delle linee di supporto superiori" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L'elenco predefinito è vuoto, vale a dire che utilizza gli angoli predefiniti (alterna tra 45 e 135 gradi se le interfacce sono abbastanza spesse oppure 90 gradi)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direzioni della larghezza della linea di supporto inferiore" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Elenco di direzioni linee intere da utilizzare. Gli elementi dall'elenco sono utilizzati in sequenza con il progredire dei layers e, al raggiungimento della fine dell'elenco, la sequenza ricomincia dall’inizio. Le voci elencate sono separate da virgole e l'intero elenco è racchiuso tra parentesi quadre. L'elenco predefinito è vuoto, vale a dire che utilizza gli angoli predefiniti (alterna tra 45 e 135 gradi se le interfacce sono abbastanza spesse oppure 90 gradi)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3794,14 +4119,14 @@ msgid "The diameter of a special tower." msgstr "Corrisponde al diametro di una torre speciale." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diametro minimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diametro supportato dalla torre" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "È il diametro minimo nelle direzioni X/Y di una piccola area, che deve essere sostenuta da una torre speciale." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "È il diametro massimo nelle direzioni X/Y di una piccola area, che deve essere sostenuta da una torre speciale." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3923,7 +4248,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\nQuesta è la distanza minima. Più linee di skirt aumenteranno tale distanza." +msgstr "" +"Indica la distanza orizzontale tra lo skirt ed il primo strato della stampa.\n" +"Questa è la distanza minima. Più linee di skirt aumenteranno tale distanza." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4295,16 +4622,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Stampa una torre accanto alla stampa che serve per innescare il materiale dopo ogni cambio ugello." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre di innesco circolare" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Conferisce alla torre di innesco una forma circolare." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4345,16 +4662,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Indica la coordinata Y della posizione della torre di innesco." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Flusso torre di innesco" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Determina la compensazione del flusso: la quantità di materiale estruso viene moltiplicata per questo valore." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4495,6 +4802,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Rimuovere gli strati vuoti sotto il primo strato stampato, se presenti. La disabilitazione di questa impostazione può provocare la presenza di primi strati vuoti, se l'impostazione di Tolleranza di sezionamento è impostata su Esclusiva o Intermedia." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Risoluzione massima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "La dimensione minima di un segmento di linea dopo il sezionamento. Se tale dimensione aumenta, la maglia avrà una risoluzione inferiore. Questo può consentire alla stampante di mantenere la velocità per processare il g-code ed aumenterà la velocità di sezionamento eliminando i dettagli della maglia che non è comunque in grado di processare." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Risoluzione massima di spostamento" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "La dimensione minima di un segmento lineare di spostamento dopo il sezionamento. Aumentando tale dimensione, le corse di spostamento avranno meno angoli arrotondati. La stampante può così mantenere la velocità per processare il g-code, ma si può verificare una riduzione della precisione di aggiramento del modello." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Deviazione massima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "La deviazione massima consentita quando si riduce la risoluzione per l'impostazione Risoluzione massima. Se si aumenta questo parametro, la stampa sarà meno precisa, ma il g-code sarà più piccolo. Deviazione massima rappresenta il limite per Risoluzione massima; pertanto se le due impostazioni sono in conflitto, verrà considerata vera l'impostazione Deviazione massima." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4657,8 +4994,8 @@ msgstr "Levigazione dei profili con movimento spiraliforme" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella vista dello strato). Notare che la levigatura tende a rimuovere le bavature fini della superficie." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella visualizzazione a strati). Notare che la levigatura tende a rimuovere le bavature fini della superficie." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4870,36 +5207,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "I poligoni in strati sezionati con una circonferenza inferiore a questo valore verranno scartati. I valori inferiori generano una maglia con risoluzione superiore al costo del tempo di sezionamento. È dedicata in particolare alle stampanti SLA ad alta risoluzione e a modelli 3D molto piccoli, ricchi di dettagli." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Risoluzione massima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "La dimensione minima di un segmento di linea dopo il sezionamento. Se tale dimensione aumenta, la maglia avrà una risoluzione inferiore. Questo può consentire alla stampante di mantenere la velocità per processare il g-code ed aumenterà la velocità di sezionamento eliminando i dettagli della maglia che non è comunque in grado di processare." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Risoluzione massima di spostamento" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "La dimensione minima di un segmento lineare di spostamento dopo il sezionamento. Aumentando tale dimensione, le corse di spostamento avranno meno angoli arrotondati. La stampante può così mantenere la velocità per processare il g-code, ma si può verificare una riduzione della precisione di aggiramento del modello." - -#: fdmprinter.def.json -msgctxt "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" @@ -5040,16 +5347,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "È la velocità a cui eseguire lo spostamento durante il Coasting, rispetto alla velocità del percorso di estrusione. Si consiglia di impostare un valore leggermente al di sotto del 100%, poiché durante il Coasting la pressione nel tubo Bowden scende." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Rotazione alternata del rivestimento esterno" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna la direzione di stampa degli strati superiori/inferiori. Normalmente vengono stampati solo diagonalmente. Questa impostazione aggiunge le direzioni solo X e solo Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5157,8 +5454,8 @@ msgstr "Abilitazione del supporto conico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Funzione sperimentale: realizza aree di supporto più piccole nella parte inferiore che in corrispondenza dello sbalzo." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Realizza aree di supporto più piccole nella parte inferiore che in corrispondenza dello sbalzo." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5222,23 +5519,24 @@ msgstr "Indica la distanza media tra i punti casuali introdotti su ciascun segme #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Offset massimo dell'estrusione di compensazione del flusso" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "La massima distanza in mm da compensare." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Distanza massima in mm di spostamento del filamento per compensare le modifiche nella velocità di flusso." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Fattore di compensazione del flusso" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Il fattore di moltiplicazione per il flusso -> traslazione distanza." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Distanza di spostamento del filamento al fine di compensare le modifiche nella velocità di flusso, come percentuale della distanza di spostamento del filamento" +" in un secondo di estrusione." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5390,7 +5688,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\nCiò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." +msgstr "" +"Indica la distanza di uno spostamento verso l'alto con estrusione a velocità dimezzata.\n" +"Ciò può garantire una migliore adesione agli strati precedenti, senza eccessivo riscaldamento del materiale su questi strati. Applicabile solo alla funzione Wire Printing." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5529,13 +5829,14 @@ msgstr "La differenza in altezza dello strato successivo rispetto al precedente. #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Soglia strati adattivi" +msgid "Adaptive Layers Topography Size" +msgstr "Dimensione della topografia dei layer adattivi" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Soglia per l’utilizzo o meno di uno strato di dimensioni minori. Questo numero è confrontato al valore dell’inclinazione più ripida di uno strato." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distanza orizzontale target tra due layer adiacenti. Riducendo questa impostazione, i layer più sottili verranno utilizzati per avvicinare i margini dei" +" layer." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5544,8 +5845,9 @@ msgstr "Angolo parete di sbalzo" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Le pareti che sbalzano oltre questo angolo verranno stampate utilizzando le impostazioni parete di sbalzo. Quando il valore è 90, nessuna parete sarà trattata come sbalzo." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Le pareti con uno sbalzo superiore a quest'angolo saranno stampate con le impostazioni per le pareti a sbalzo. Se il valore è 90, nessuna parete sarà trattata" +" come parete a sbalzo. Nemmeno lo sbalzo supportato dal supporto sarà trattato come tale." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5897,6 +6199,48 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "La distanza dello spostamento longitudinale eseguito dalla testina attraverso lo spazzolino." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Dimensione massima foro piccolo" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "I fori e i profili delle parti con un diametro inferiore a quello indicato verranno stampati utilizzando Velocità Dettagli di piccole dimensioni." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Lunghezza massima dettagli di piccole dimensioni" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Profili di dettagli inferiori a questa lunghezza saranno stampati utilizzando Velocità Dettagli di piccole dimensioni." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocità dettagli piccole dimensioni" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "I dettagli di piccole dimensioni verranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare in termini di" +" adesione e precisione." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocità layer iniziale per dettagli di piccole dimensioni" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "I dettagli di piccole dimensioni sul primo layer saranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare" +" in termini di adesione e precisione." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5957,6 +6301,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matrice di rotazione da applicare al modello quando caricato dal file." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Dimensioni minime area per i poligoni di interfaccia del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Dimensioni minime area per le parti superiori del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Dimensioni minime area per le parti inferiori del supporto. I poligoni con un’area inferiore a questo valore non verranno generati." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Rotazione alternata del rivestimento esterno" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna la direzione di stampa degli strati superiori/inferiori. Normalmente vengono stampati solo diagonalmente. Questa impostazione aggiunge le direzioni solo X e solo Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Offset massimo dell'estrusione di compensazione del flusso" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "La massima distanza in mm da compensare." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Fattore di compensazione del flusso" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Il fattore di moltiplicazione per il flusso -> traslazione distanza." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Soglia strati adattivi" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Soglia per l’utilizzo o meno di uno strato di dimensioni minori. Questo numero è confrontato al valore dell’inclinazione più ripida di uno strato." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Le pareti che sbalzano oltre questo angolo verranno stampate utilizzando le impostazioni parete di sbalzo. Quando il valore è 90, nessuna parete sarà trattata come sbalzo." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "I dettagli di piccole dimensioni verranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare in termini di adesione e precisione." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocità primo layer" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "I dettagli di piccole dimensioni sul primo layer saranno stampati a questa percentuale della velocità di stampa normale. Una stampa più lenta può aiutare in termini di adesione e precisione." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Ulteriore passaggio sopra la superficie superiore, senza estrusione di materiale. Ha lo scopo di fondere ulteriormente la plastica alla sommità, creando una superficie più uniforme." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Avvio strati con la stessa parte" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "In ciascuno strato inizia la stampa dell’oggetto vicino allo stesso punto, in modo che non si inizia un nuovo strato con la stampa del pezzo con cui è terminato lo strato precedente. Questo consente di ottenere migliori sovrapposizioni e parti piccole, ma aumenta il tempo di stampa." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Indica l’orientamento della configurazione del riempimento per i supporti. La configurazione del riempimento del supporto viene ruotata sul piano orizzontale." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "La deviazione massima consentita quando si riduce la risoluzione per l'impostazione di Risoluzione massima. Se si aumenta questo parametro, la stampa sarà meno precisa, ma il codice g sarà più piccolo." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Tipo di codice G" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controlla se gli angoli sul profilo del modello influenzano la posizione della giunzione. Nessuno significa che gli angoli non hanno alcuna influenza sulla posizione della giunzione. Nascondi giunzione favorisce la presenza della giunzione su un angolo interno. Esponi giunzione favorisce la presenza della giunzione su un angolo esterno. Nascondi o esponi giunzione favorisce la presenza della giunzione su un angolo interno o esterno." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignora i piccoli interstizi a Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quando il modello presenta piccoli spazi vuoti verticali, circa il 5% del tempo di calcolo supplementare può essere utilizzato per la generazione di rivestimenti esterni superiori ed inferiori in questi interstizi. In questo caso disabilitare l’impostazione." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "La temperatura utilizzata per il volume di stampa. Se il valore è 0, la temperatura del volume di stampa non verrà regolata." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omettere la retrazione negli spostamenti da un supporto ad un altro in linea retta. L'abilitazione di questa impostazione riduce il tempo di stampa, ma può comportare un'eccessiva produzione di filamenti all'interno della struttura del supporto." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocità massima Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Indica la velocità massima di spostamento del piano di stampa. L’impostazione di questo valore a zero causa l’utilizzo per la stampa dei valori preimpostati in fabbrica per la velocità massima Z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Indica la distanza massima tra le strutture di supporto nelle direzioni X/Y. Quando la distanza tra le strutture è inferiore al valore indicato, le strutture convergono in una unica." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diametro minimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "È il diametro minimo nelle direzioni X/Y di una piccola area, che deve essere sostenuta da una torre speciale." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre di innesco circolare" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Conferisce alla torre di innesco una forma circolare." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Determina la compensazione del flusso: la quantità di materiale estruso viene moltiplicata per questo valore." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Leviga i profili con movimento spiraliforme per ridurre la visibilità della giunzione Z (la giunzione Z dovrebbe essere appena visibile sulla stampa, ma rimane visibile nella vista dello strato). Notare che la levigatura tende a rimuovere le bavature fini della superficie." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Funzione sperimentale: realizza aree di supporto più piccole nella parte inferiore che in corrispondenza dello sbalzo." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Numero di estrusori abilitati" @@ -6162,7 +6650,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" #~ "." @@ -6175,7 +6662,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" #~ "." @@ -6232,7 +6718,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 f01c2af9f2..def6a45abf 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:46+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Japanese\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-09-23 14:15+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Japanese , Japanese \n" "Language: ja_JP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.2.1\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "プリンターの設定" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-codeファイル" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter は非テキストモードはサポートしていません。" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "エクスポートする前にG-codeの準備をしてください。" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3Dモデルアシスタント" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,57 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "ファームウェアアップデート" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "アクティブ設定を平らにします" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF ファイル" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -#, fuzzy -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "プロファイルが平らになり、アクティベートされました。" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USBプリンティング" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USBを使ってプリントする" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "USBにて接続する" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USBプリントを実行しています。Cura を閉じるとこのプリントも停止します。実行しますか?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3Gファイル" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "現在印刷中です。Curaは、前の印刷が完了するまでUSBを介した次の印刷を開始できません。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "X3Gをファイルに書き込む" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3Gファイル" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "現在印刷中" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -161,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "リムーバブルドライブ{0}に保存" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "書き出すために利用可能な形式のファイルがありません!" @@ -198,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "リムーバブルドライブ{0}に保存することができませんでした: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "エラー" @@ -230,9 +217,9 @@ msgstr "リムーバブルデバイス{0}を取り出す" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -259,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "リムーバブルドライブ" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "認証ステータス" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "アクセスリクエストを再送信" - -#: /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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "新しいプリントジョブを開始できません。" - -#: /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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "プリンターにプリントデータを送信中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "プリントデータを送信中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "キャンセル" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "プリンターと同期する" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "ネットワーク上で接続" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "プリントジョブは正常にプリンターに送信されました。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "データを送信しました" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "モニター表示" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "空にする" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "不明" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "クラウドからプリントする" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "クラウドからプリントする" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "クラウドを使って接続しました" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "クラウドエラー" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "印刷ジョブをエクスポートできませんでした。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "データをプリンタにアップロードできませんでした。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "翌日" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "本日" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Ultimaker Cloud 経由でアップロード中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "このプリンタでは次回から質問しない。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "はじめに" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "接続しました!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "接続の確認" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "ネットワーク上にて接続" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Cura 設定ガイド" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "ネットワーク上のプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "ネットワークのプリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "ネットワーク上で接続" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "現在のジョブが送信されるまで待機してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "印刷エラー" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "新しいクラウドプリンターが見つかりました" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "アカウントに接続された新しいプリンターが見つかりました。検出されたプリンターのリストで確認できます。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "今後このメッセージを表示しない" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "{0}に接続を試みていますが、これはグループのホストではありません。グループホストとして設定するには、ウェブページを参照してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "グループホストではありません" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "グループの設定" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Ultimaker のアカウントを使用して、どこからでも印刷ジョブを送信およびモニターします。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ultimaker Cloud に接続する" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "はじめに" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "印刷ジョブ送信中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "プリントジョブをプリンターにアップロードしています。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "プリントジョブは正常にプリンターに送信されました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "データを送信しました" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Ultimaker Connectを実行していないプリンターに接続しようとしています。プリンターを最新のファームウェアに更新してください。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "プリンターの更新" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Curaはグループ{0}のホストプリンターにまだインストールされていない材料プロフィールを検出しました。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "プリンターに材料を送信しています" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "データをプリンタにアップロードできませんでした。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "ネットワークエラー" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "翌日" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "本日" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "クラウドからプリントする" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "クラウドからプリントする" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "クラウドを使って接続しました" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "モニター" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "必要なアップデートの情報にアクセスできません。" @@ -626,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "レイヤービュー" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Curaはワイヤープリンティング設定中には正確にレイヤーを表示しません" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "シミュレーションビュー" @@ -686,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF画像" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "圧縮トライアングルメッシュを開く" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTFバイナリ" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF埋め込みJSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "圧縮COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -750,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "各モデル構成設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "推奨" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "カスタム" @@ -766,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF ファイル" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "ノズル" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "プロジェクトファイル {0} に不明なマシンタイプ {1} があります。マシンをインポートできません。代わりにモデルをインポートします。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "プロジェクトファイルを開く" @@ -793,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Gファイル" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-codeを解析" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-codeの詳細" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "データファイルを送信する前に、プリンターとプリンターの構成設定にそのG-codeが適応しているか確認してください。G-codeの表示が適切でない場合があります。" @@ -858,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Curaプロファイル" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "プロファイルアシスタント" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "プロファイルアシスタント" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "プレビュー" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -904,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "ログインに失敗しました" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "サポート対象外" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "すでに存在するファイルです" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "{0} は既に存在します。ファイルを上書きしますか?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "無効なファイルのURL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "現在利用可能な次のエクストルーダーに合わせて設定が変更されました:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "設定が更新されました" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "エクストルーダーを無効にしました" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "不明" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "{0}にプロファイルを書き出すのに失敗しました: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "{0}にプロファイルを書き出すことに失敗しました。:ライタープラグイン失敗の報告。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "{0}にプロファイルを書き出しました" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "書き出し完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "プリンタを追加する前に、{0}からプロファイルの取り込はできません。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "ファイル{0}にはカスタムプロファイルがインポートされていません" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "{0}からプロファイルの取り込に失敗しました:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "このプロファイル{0}には、正しくないデータが含まれているため、インポートできません。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "プロファイル{0}の中で定義されているマシン({1})は、現在お使いのマシン({2})と一致しないため、インポートできませんでした。" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" -msgstr "{0}からプロファイルの取り込に失敗しました:" +msgstr "{0}からプロファイルの取り込みに失敗しました:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "プロファイル {0}の取り込み完了" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "ファイル{0}には、正しいプロファイルが含まれていません。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "プロファイル{0}は不特定なファイルまたは破損があります。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "カスタムプロファイル" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "プロファイルはクオリティータイプが不足しています。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1104,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "他" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "スライス前ファイル {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "次" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1124,73 +953,120 @@ msgstr "グループ #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "閉める" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "追加" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "キャンセル" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "ビジュアル" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "ビジュアルプロファイルは、優れたビジュアルと表面品質を目的としたビジュアルプロトタイプやモデルをプリントするために設計されています。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "エンジニアリングプロファイルは、精度向上と公差の厳格対応を目的とした機能プロトタイプや最終用途部品をプリントするために設計されています。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "ドラフト" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "ドラフトプロファイルは、プリント時間の大幅短縮を目的とした初期プロトタイプとコンセプト検証をプリントするために設計されています。" + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "上書きできません" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "カスタムプロファイル" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "すべてのサポートのタイプ ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "全てのファイル" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "不明" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "ネットワークで利用可能なプリンター" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "カスタムフィラメント" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "カスタム" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "下のプリンターはグループの一員であるため接続できません" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "ネットワークで利用可能なプリンター" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "プリントシークエンス設定値により、ガントリーと造形物の衝突を避けるため印刷データの高さを低くしました。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "造形サイズ" @@ -1215,39 +1091,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "応答を読み取れません。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Ultimaker アカウントサーバーに到達できません。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "このアプリケーションの許可において必要な権限を与えてください。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "ログイン時に予期しないエラーが発生しました。やり直してください。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "造形データを増やす、配置する" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "造形データを配置" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "全ての造形物の造形サイズに対し、適切な位置が確認できません" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "造形データを配置" @@ -1396,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "プリンターを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "プレファレンスをセットアップ中..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "シーンをセットアップ中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "インターフェイスを読み込み中…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一度に一つのG-codeしか読み取れません。{0}の取り込みをスキップしました。" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-codeを読み込み中は他のファイルを開くことができません。{0}の取り込みをスキップしました。" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選択したモデルは読み込むのに小さすぎます。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "プリンターの設定" @@ -1455,15 +1336,15 @@ msgstr "X(幅)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1495,50 +1376,55 @@ msgstr "ヒーテッドドベッド" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "加熱式ビルドボリューム" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "G-codeフレーバー" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "プリントヘッド設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y分" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "最大X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "最大Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "ガントリーの高さ" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "エクストルーダーの数" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "G-Codeの開始" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "G-codeの終了" @@ -1568,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "ノズルオフセットX" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "ノズルオフセットY" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷却ファンの番号" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "エクストルーダーがG-Codeを終了する" @@ -1594,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "インストールした" @@ -1609,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "評価" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "プラグイン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "マテリアル" @@ -1628,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1731,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Curaを終了する" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "地域貢献" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "コミュニティプラグイン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "汎用材料" @@ -1802,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "特長" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "互換性" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "プリンター" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "ビルドプレート" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "サポート" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "品質" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "技術データシート" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "安全データシート" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "印刷ガイドライン" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "ウェブサイト" @@ -1922,70 +1828,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "ファームウェアが見つからず、ファームウェアアップデート失敗しました。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "プリンター管理" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "ガラス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "クラウドプリンタをモニタリングしている場合は、ウェブカムを利用できません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "読み込み中..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "利用不可" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "到達不能" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "アイドル" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "無題" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "匿名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "構成の変更が必要です" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "詳細" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "利用できないプリンター" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "次の空き" @@ -1995,212 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "順番を待つ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "キューに印刷ジョブがありません。追加するには、スライスしてジョブを送信します。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "プリントジョブ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "合計印刷時間" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "待ち時間" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "すべてのジョブが印刷されます。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "印刷履歴の表示" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "ネットワーク上で繋がったプリンターに接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"ネットワーク接続にて直接プリントするためには、必ずケーブルまたはWifiネットワークにて繋がっていることを確認してください。Curaをプリンターに接続していない場合でも、USBメモリを使って直接プリンターにg-codeファイルをトランスファーできます。\n" -"\n" -"下のリストからプリンターを選択してください:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "印刷ジョブをネットワークを介してプリンターに直接送信するには、ネットワークケーブルを使用してプリンターを確実にネットワークに接続するか、プリンターを WIFI ネットワークに接続します。Cura をプリンタに接続していない場合でも、USB ドライブを使用して g コードファイルをプリンターに転送することはできます。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "以下のリストからプリンタを選択します:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "編集" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "取り除く" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "更新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "お持ちのプリンターがリストにない場合、ネットワーク・プリンティング・トラブルシューティング・ガイドを読んでください" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "タイプ" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "ファームウェアバージョン" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "アドレス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "このプリンターは、プリンターのグループをホストするために設定されていません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "このプリンターは %1 プリンターのループのホストプリンターです。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "このアドレスのプリンターは応答していません。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "接続" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "無効なIPアドレス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "有効なIPアドレスを入力してください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "プリンターアドレス" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "ネットワーク内のプリンターのIPアドレスまたはホストネームを入力してください。" +msgid "Enter the IP address of your printer on the network." +msgstr "ネットワーク内のプリンターのIPアドレスを入力してください。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "%1 を %2 に終了します" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "プリント" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "ネットワーク上のプリント" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "プリント" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "プリンターの選択" @@ -2289,67 +2184,58 @@ msgctxt "@action:button" msgid "Override" msgstr "上書き" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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 に変更します。" +msgstr "材料 %1 を %2 から %3 に変更します。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:82 +#: /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:85 +#: /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 に変更します。" +msgstr "プリントコア %1 を %2 から %3 に変更します。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "アルミニウム" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "プリンターにつなぐ" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2558,70 +2444,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "スムージング" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "メッシュタイプ" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "標準モデル" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "サポートとしてプリント" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "他のモデルとのオーバーラップは未サポート" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "他のモデルとのオーバーラップの設定を変更" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "他のモデルのインフィルの設定を変更" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "設定を選択する" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "このモデルをカスタマイズする設定を選択する" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "フィルター…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "すべて表示する" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "メッシュタイプ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "標準モデル" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "サポートとしてプリント" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "オーバーラップの設定を変更" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "オーバーラップをサポートしない" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "インフィルのみ" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "設定を選択する" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "プロジェクトを開く" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" -msgstr "existingをアップデートする" +msgstr "既存を更新する" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "新しいものを作成する" @@ -2648,6 +2533,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "アップデート" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新しいものを作成する" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2661,7 +2551,7 @@ msgid "Printer Group" msgstr "プリンターグループ" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "プロファイル設定" @@ -2672,28 +2562,34 @@ msgid "How should the conflict in the profile be resolved?" msgstr "このプロファイルの問題をどのように解決すればいいか?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "ネーム" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "プロファイル内にない" # Can’t edit the Japanese text -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1個の設定を上書き" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "次から引き出す" @@ -2701,48 +2597,48 @@ msgstr "次から引き出す" # can’t inset the japanese text # %1: print quality profile name # %2: number of overridden ssettings -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%2の%1個の設定を上書き" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "フィラメント設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "このフィラメントの問題をどのように解決すればいいか?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "視野設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "モード" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "ビジブル設定:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%2のうち%1" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "プロジェクトを読み込むとビルドプレート上のすべてのモデルがクリアされます。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "開く" @@ -2849,48 +2745,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Cura を起動した日は常にバックアップを自動生成します。" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "サポート対象外" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "書き出す" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "ヒント" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "試し印刷" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "チェックリスト" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2976,170 +2830,176 @@ 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:72 msgctxt "@title" msgid "Information" msgstr "インフォメーション" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "直径変更の確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "新しいフィラメントの直径は %1 mm に設定されています。これは現在のエクストルーダーに適応していません。続行しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "ディスプレイ名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "ブランド" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "フィラメントタイプ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "プロパティ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "直径" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "フィラメントコスト" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "フィラメントの重さ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "フィラメントの長さ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "毎メーターコスト" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "このフィラメントは %1にリンクすプロパティーを共有する。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "フィラメントをリンクを外す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "記述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "接着のインフォメーション" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "プリント設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "アクティベート" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "作成する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "書き出す" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "モデルを取り除きました" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "%1を取り外しますか?この作業はやり直しが効きません!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "フィラメントを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "%1フィラメントを取り込むことができない: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "フィラメント%1の取り込みに成功しました" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "フィラメントを書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "フィラメントの書き出しに失敗しました %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "フィラメントの%1への書き出しが完了ました" @@ -3154,414 +3014,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "全てを調べる" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "計算された" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "現在" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "ユニット" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 msgctxt "@label" msgid "Interface" msgstr "インターフェイス" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "言語:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "通貨:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "テーマ:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "それらの変更を有効にするためにはアプリケーションを再起動しなけらばなりません。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "セッティングを変更すると自動にスライスします。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動的にスライスする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "ビューポイント機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "赤でサポートができないエリアをハイライトしてください。サポートがない場合、正確にプリントができない場合があります。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "ディスプレイオーバーハング" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "モデルの選択時にモデルがカメラの中心に見えるようにカメラを移動する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "アイテムを選択するとカメラが中心にきます" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Curaのデフォルトのズーム機能は変更できるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "カメラのズーム方向を反転する。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "ズームはマウスの方向に動くべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "マウスに対するズームは、正射投影ではサポートされていません。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "マウスの方向にズームする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "交差を避けるためにプラットホーム上のモデルを移動するべきですか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "モデルの距離が離れているように確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "プラットホーム上のモデルはブルドプレートに触れるように下げるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動的にモデルをビルドプレートに落とす" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "G-codeリーダーに注意メッセージを表示します。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-codeリーダーに注意メッセージ" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "レイヤーはコンパティビリティモードに強制されるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "レイヤービューコンパティビリティモードを強制する。(再起動が必要)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Curaを終了した場所で開くようにしますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "開始時にウィンドウの位置を復元" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "どのような種類のカメラレンダリングを使用する必要がありますか?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "カメラレンダリング:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "パースペクティブ表示" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "平行投影表示" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "ファイルを開くまた保存" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "モデルがビルドボリュームに対して大きすぎる場合はスケールされるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "大きなモデルをスケールする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "ユニット値がミリメートルではなくメートルの場合、モデルが極端に小さく現れる場合があります。モデルはスケールアップされるべきですか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "極端に小さなモデルをスケールアップする" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "モデルはロード後に選択しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "ロード後にモデルを選択" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "プリンター名の敬称はプリントジョブの名前に自動的に加えられるべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "プリンターの敬称をジョブネームに加える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "プロジェクトファイルを保存時にサマリーを表示するべきか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "プロジェクトを保存時にダイアログサマリーを表示する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "プロジェクトファイルを開く際のデフォルト機能" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "プロジェクトファイル開く際のデフォルト機能: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "毎回確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "常にプロジェクトとして開く" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "常にモデルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "プロファイル内を変更し異なるプロファイルにしました、どこの変更点を保持、破棄したいのダイアログが表示されます、また何度もダイアログが表示されないようにデフォルト機能を選ぶことができます。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "プロファイル交換時に設定値を変更するためのデフォルト処理: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "毎回確認する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "常に変更した設定を廃棄する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "常に変更した設定を新しいプロファイルに送信する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "プライバシー" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Curaのプログラム開始時にアップデートがあるかチェックしますか?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "スタート時にアップデートあるかどうかのチェック" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "プリンターの不明なデータをUltimakerにおくりますか?メモ、モデル、IPアドレス、個人的な情報は送信されたり保存されたりはしません。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(不特定な) プリントインフォメーションを送信" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "詳細" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "マルチビルドプレート機能を使用" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "名を変える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "作成する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "プロファイルを作る" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "このプロファイルの名前を指定してください。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "プロファイルを複製する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "プロファイル名を変える" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "プロファイルを取り込む" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "プロファイルを書き出す" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "プリンター:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "デフォルトプロファイル" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 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:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "今の変更を破棄する" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "このプロファイルはプリンターによりデフォルトを使用、従いこのプロファイルはセッティング/書き換えが以下のリストにありません。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "設定は選択したプロファイルにマッチしています。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "グローバル設定" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "マーケットプレース" @@ -3621,36 +3489,36 @@ msgstr "無題" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +msgid "Search settings" msgstr "検索設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "すべてのエクストルーダーの値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "すべてのエクストルーダーに対して変更された値をコピーする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "この設定を非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "この設定を表示しない" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "常に見えるように設定する" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "視野のセッティングを構成する…" @@ -3665,32 +3533,32 @@ msgstr "" "いくらかの非表示設定は通常の計算された値と異なる値を使用します。\n" "表示されるようにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "この設定は常に全てのエクストルーダーに共有されています。ここですべてのエクストルーダーの数値を変更できます。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "この値は各エクストルーダーの値から取得します " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3700,7 +3568,7 @@ msgstr "" "この設定にプロファイルと異なった値があります。\n" "プロファイルの値を戻すためにクリックしてください。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3710,12 +3578,18 @@ msgstr "" "このセッティングは通常計算されます、今は絶対値に固定されています。\n" "計算された値に変更するためにクリックを押してください。" +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "推奨" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "カスタム" @@ -3740,36 +3614,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "オーバーハングがあるモデルにサポートを生成します。このサポート構造なしでは、プリント中にオーバーハングのパーツが崩壊してしまいます。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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 "ブリムまたはラフトのプリントの有効化。それぞれ、プリントの周り、また造形物の下に底面を加え切り取りやすくします。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "レイヤーの高さ" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "プロファイルの設定がいくつか変更されました。変更を有効にするにはカスタムモードに移動してください。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "この品質プロファイルは、現在の材料およびノズル構成では使用できません。この品質プロファイルを有効にするには、これらを変更してください。" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "カスタムプロファイルが有効になっています。品質スライダーを有効にするには、カスタムタブでデフォルトの品質プロファイルを選択してください" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3780,12 +3639,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "オフ" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "実験" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "プロファイル" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3795,6 +3659,11 @@ msgstr "" "いくらかの設定プロファイルにある値とことなる場合無効にします。\n" "プロファイルマネージャーをクリックして開いてください。" +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "カスタムプロファイル" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3830,59 +3699,59 @@ 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」を押してコマンドを送信します。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "エクストルーダー" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "ホットエンドの目標温度。ホットエンドはこの温度に向けて上がったり下がったりします。これが0の場合、ホットエンドの加熱はオフになっています。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "このホットエンドの現在の温度です。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "ホットエンドをプリヒートする温度です。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "キャンセル" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "プレヒート" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "プリント開始前にホットエンドを加熱します。加熱中もプリントの調整を行えます、またホットエンドが加熱するまでプリント開始を待つ必要もありません。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "エクストルーダーのマテリアルの色。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "エクストルーダー入ったフィラメント。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "ノズルが入ったエクストルーダー。" @@ -3922,12 +3791,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "お気に入り" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "汎用" @@ -3947,42 +3816,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&プリンター" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&フィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "アクティブエクストルーダーとしてセットする" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "エクストルーダーを有効にする" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "エクストルーダーを無効にする" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&プロファイル" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "カメラ位置 (&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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)" @@ -4002,17 +3876,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "視野のセッティングを管理する…" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&保存..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&エクスポート..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "選択エクスポート..." @@ -4041,12 +3915,12 @@ msgctxt "@header" msgid "Configurations" msgstr "構成" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "構成の選択" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "構成" @@ -4076,12 +3950,12 @@ msgctxt "@label" msgid "Enabled" msgstr "有効" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "フィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "この材料の組み合わせの接着に接着材を使用する。" @@ -4101,22 +3975,22 @@ 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 "残り時間" @@ -4126,6 +4000,11 @@ msgctxt "@label" msgid "View type" msgstr "タイプ表示" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "オブジェクトリスト" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4177,32 +4056,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "コスト予測がありません" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "スライスできません" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "キャンセル" @@ -4237,233 +4121,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "プリンターのプリセット" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "プリンター管理" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "フィラメントを管理する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "モデルを消去する" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "&モデルを増倍する…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&マーケットプレース" @@ -4478,49 +4367,49 @@ msgctxt "@label" msgid "This package will be installed after restarting." msgstr "このパッケージは再起動後にインストールされます。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura を閉じる" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura を終了しますか?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "ファイルを開く" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "パッケージをインストール" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "ファイルを開く(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "選択したファイルの中に複数のG-codeが存在します。1つのG-codeのみ一度に開けます。G-codeファイルを開く場合は、1点のみ選んでください。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "プリンターを追加する" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "新情報" @@ -4589,139 +4478,139 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Curaについて" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "バージョン: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "熱溶解積層型3Dプリンティングのエンドtoエンドソリューション。" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" msgstr "CuraはUltimakerB.Vのコミュニティの協力によって開発され、Curaはオープンソースで使えることを誇りに思います:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "グラフィックユーザーインターフェイス" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "アプリケーションフレームワーク" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "G-codeの生成" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "インタープロセスコミュニケーションライブラリー" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "プログラミング用語" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUIフレームワーク" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUIフレームワークバインディング" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C/C++ バインディングライブラリー" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "データインターフェイスフォーマット" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "サイエンスコンピューティングを操作するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "ファターマスを操作するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "STLファイルを操作するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "平面対象物を操作するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "参画メッシュを操作するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "複雑なネットワークを分析するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "3MFファイルを操作するためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "ファイルメタデータとストリーミングのためのライブラリーサポート" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "シリアルコミュニケーションライブラリー" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConfディスカバリーライブラリー" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "ポリゴンクリッピングライブラリー" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Python HTTPライブラリー" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "フォント" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVGアイコン" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Linux 分散アプリケーションの開発" @@ -4741,32 +4630,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "プロジェクトを保存" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "ビルドプレート" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "エクストルーダー%1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1とフィラメント" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存中のプロジェクトサマリーを非表示にする" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "保存" @@ -4942,12 +4826,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "トラブルシューティング" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "プリンター名" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "プリンター名を入力してください" @@ -5006,20 +4890,30 @@ msgctxt "@button" msgid "Get started" 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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3Dビュー" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "トップビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "左ビュー" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "右ビュー" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5081,16 +4975,6 @@ msgctxt "name" msgid "Model Checker" msgstr "モデルチェッカー" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "HTMLファイルに設定内容を放置する。" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Godモード" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5101,15 +4985,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "ファームウェアアップデーター" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" +msgid "Provides support for reading AMF files." +msgstr "AMFファイルの読込みをサポートしています。" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "プロファイルフラッター" +msgid "AMF Reader" +msgstr "AMFリーダー" #: USBPrinting/plugin.json msgctxt "description" @@ -5121,16 +5005,6 @@ msgctxt "name" msgid "USB printing" msgstr "USBプリンティング" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "結果スライスをX3Gファイルとして保存して、このフォーマット(Malyan、Makerbot、およびその他のSailfishベースのプリンター)を読むプリンターをサポートできるようにします。" - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5173,23 +5047,13 @@ msgstr "取り外し可能なドライブアウトプットデバイスプラグ #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker3のプリンターのネットワーク接続を管理する。" +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Ultimakerのネットワーク接属できるプリンターのネットワーク接続を管理します。" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3ネットワークコネクション" - -#: 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 "設定ガイド" +msgid "Ultimaker Network Connection" +msgstr "Ultimakerネットワーク接続" #: MonitorStage/plugin.json msgctxt "description" @@ -5321,6 +5185,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "3.3から3.4にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Cura 4.3からCura 4.4へのコンフィグレーションアップグレート。" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "4.3から4.4にバージョンアップグレート" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5381,6 +5255,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "3.0から3.1にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "コンフィギュレーションを Cura 4.1 から Cura 4.2 にアップグレートする。" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "4.0 から 4.1 にバージョンアップグレート" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5411,6 +5295,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "2.2 から2.4にバージョンアップグレート" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Cura 4.2からCura 4.3の設定をアップグレードします。" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "4.2から4.3にバージョンをアップグレート" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5421,6 +5315,16 @@ msgctxt "name" msgid "Image Reader" msgstr "画像リーダー" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "モデルファイルを読み込むためのサポートを供給します。" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimeshリーダー" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5451,16 +5355,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MFリーダー" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "プリンターの動きをデバッグするためのツールパスとして SVG ファイルを読み込みます。" - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG ツールパスリーダー" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5501,16 +5395,6 @@ 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." @@ -5551,6 +5435,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Curaプロファイルリーダー" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "アクティブ設定を平らにします" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "プロファイルが平らになり、アクティベートされました。" + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "X3Gをファイルに書き込む" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3Gファイル" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3Gファイル" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "圧縮トライアングルメッシュを開く" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "プロファイルアシスタント" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "プロファイルアシスタント" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "再試行" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "プリントコア" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "他のモデルとのオーバーラップは未サポート" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "他のモデルとのオーバーラップの設定を変更" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "他のモデルのインフィルの設定を変更" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "現在のプロファイルに読み込む" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "サポート対象外" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "前" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "ヒント" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "試し印刷" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "チェックリスト" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "このUltimaker2に施したアップグレードを選択してください。" + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "カメラレンダリング: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "マルチビルドプレート機能を使用" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "マルチビルドプレート機能を使用 (再起動が必要)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "デフォルトプロファイル" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "検索設定" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "レイヤーの高さ" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "この品質プロファイルは、現在の材料およびノズル構成では使用できません。この品質プロファイルを有効にするには、これらを変更してください。" + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "カスタムプロファイルが有効になっています。品質スライダーを有効にするには、カスタムタブでデフォルトの品質プロファイルを選択してください" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "ビルドプレート (&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&プロファイル" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "ビルドプレート" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "HTMLファイルに設定内容を放置する。" + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Godモード" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "プロファイルを変更するフラットエンドクオリティーを作成する。" + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "プロファイルフラッター" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "材料メーカーがドロップインUIを使用して新しい材料と品質のプロファイルを作成できるようにします。" + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "プリントプロファイルアシスタント" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "ネットワーク上で接続。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "ネットワーク上で接続。プリンタへのリクエストを承認してください。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "ネットワーク上で接続。プリントを操作するアクセス権がありません。" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "プリンターへのアクセスが申請されました。プリンタへのリクエストを承認してください" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "認証ステータス" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "認証ステータス" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "アクセスリクエストを再送信" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "プリンターへのアクセスが承認されました" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "このプリンターへのアクセスが許可されていないため、プリントジョブの送信ができませんでした。" + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "アクセスのリクエスト" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "アクセスのリクエスト送信" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "新しいプリントジョブを開始できません。" + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimakerの設定に問題があるため、印刷が開始できません。問題を解消してからやり直してください。" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "ミスマッチの構成" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "選択された構成にてプリントを開始してもいいですか?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "プリンターの設定、キャリブレーションとCuraの構成にミスマッチがあります。プリンターに設置されたプリントコア及びフィラメントを元にCuraをスライスすることで最良の印刷結果を出すことができます。" + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "新しいデータの送信 (temporarily) をブロックします、前のプリントジョブが送信中です。" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "プリンターにプリントデータを送信中" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "プリントデータを送信中" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "プリントコアがスロット{slot_number}に入っていません。" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "材料がスロット{slot_number}に入っていません。" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "エクストルーダー {extruder_id} に対して異なるプリントコア(Cura: {cura_printcore_name}, プリンター: {remote_printcore_name})が選択されています。" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "異なるフィラメントが入っています(Cura:{0}, プリンター{1})エクストルーダー{2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "プリンターと同期する" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Curaで設定しているプリンタ構成を使用されますか?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "プリンターのプリントコア及びフィラメントが現在のプロジェクトと異なります。最善な印刷結果のために、プリンタに装着しているプリントコア、フィラメントに合わせてスライスして頂くことをお勧めします。" + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "モニター表示" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "プリンター’{printer_name}’が’{job_name}’のプリントを終了しました。" + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "プリントジョブ '{job_name}' は完了しました。" + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "プリント終了" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "空にする" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "不明" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "クラウドエラー" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "印刷ジョブをエクスポートできませんでした。" + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "クラウドの接続時にエラーが発生しました。" + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud 経由でアップロード中" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud に接続する" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "このプリンタでは次回から質問しない。" + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Ultimaker のアカウントを使用して、どこからでも印刷ジョブを送信およびモニターできるようになりました。" + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "接続しました!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "接続の確認" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "プロファイル{0}の中で定義されているマシン({1})は、現在お使いのマシン({2})と一致しないため、インポートできませんでした。" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "{0}からプロファイルの取り込に失敗しました:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "既存の接続" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "このプリンター/グループはすでにCuraに追加されています。別のプリンター/グループを選択しえください。" + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "ネットワーク内のプリンターのIPアドレスまたはホストネームを入力してください。" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "プリンターにつなぐ" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定ガイド" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "平行投影表示では、マウスの方向にズームする操作がサポートされていません。" + +#~ msgid "Orthogonal" +#~ msgstr "平行投影表示" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Ultimaker3のプリンターのネットワーク接続を管理する。" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3ネットワークコネクション" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "画像とアニメーションで、Cura の設定に関する追加情報と説明を提供します。" + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "設定ガイド" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定ガイド" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "現在利用可能なエクストルーダー [%s] に合わせて設定が変更されました。" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "ユーザー詳細" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "クラウドプリンタをモニタリングしている場合は、これらのオプションは利用できません。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Cura Connectに移動する" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "すべてのジョブが印刷されます。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "印刷履歴の表示" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "ネットワーク接続にて直接プリントするためには、必ずケーブルまたはWifiネットワークにて繋がっていることを確認してください。Curaをプリンターに接続していない場合でも、USBメモリを使って直接プリンターにg-codeファイルをトランスファーできます。\n" +#~ "\n" +#~ "下のリストからプリンターを選択してください:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "プリンタが接続されていること確認してください:\n" +#~ "- プリンタの電源が入っていることを確認してください。\n" +#~ "- プリンタがネットワークに接続されているか確認してください。" + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "現在のビルドプレートのみを表示" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "すべてのビルドプレートに配置" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "現在のビルドプレートを配置" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "結果スライスをX3Gファイルとして保存して、このフォーマット(Malyan、Makerbot、およびその他のSailfishベースのプリンター)を読むプリンターをサポートできるようにします。" + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "プリンターの動きをデバッグするためのツールパスとして SVG ファイルを読み込みます。" + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG ツールパスリーダー" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Changelog" @@ -5872,7 +6199,7 @@ msgstr "Curaプロファイルリーダー" #~ msgctxt "@label" #~ msgid "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?" -#~ msgstr "互換性のない構成で印刷ジョブを開始すると3Dプリンターを損傷することがあります。構成と印刷 %1 を上書きしますか?" +#~ msgstr "互換性のない構成で印刷ジョブを開始すると3Dプリンターを損傷することがあります。構成と印刷 %1 を上書きしますか?" #~ msgctxt "@window:title" #~ msgid "Override configuration configuration and start print" diff --git a/resources/i18n/ja_JP/fdmextruder.def.json.po b/resources/i18n/ja_JP/fdmextruder.def.json.po index 1da7befadd..d2a33a2db3 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Japanese\n" diff --git a/resources/i18n/ja_JP/fdmprinter.def.json.po b/resources/i18n/ja_JP/fdmprinter.def.json.po index ae7c83c552..a53f3de7ca 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-05-28 09:49+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Japanese\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-09-23 14:15+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Japanese , Japanese \n" "Language: ja_JP\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.2.1\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -231,6 +231,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "プリンターに加熱式ビルドプレートが付属しているかどうか。" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "造形温度安定化処理有り" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "機器が造形温度を安定化処理できるかどうかです。" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -359,7 +369,7 @@ msgstr "ノズルが冷却される前にエクストルーダーが静止しな #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "G-codeフレーバー" #: fdmprinter.def.json @@ -1063,6 +1073,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "最底面のレイヤー数。下の厚さで計算すると、この値は整数に変換されます。" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "初期底面レイヤー" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "ビルドプレートから上にある初期底面レイヤーの数。下の厚さで計算すると、この値は整数に変換されます。" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1316,6 +1336,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "鋭い角" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Zシーム位置" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "レイヤー内の各パーツの印刷を開始する場所付近の位置。" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "後方左" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "戻る" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "後方右" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "右" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "前方右" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "前" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "前左" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "左" + # msgstr "最も鋭利な角" #: fdmprinter.def.json msgctxt "z_seam_x label" @@ -1344,11 +1414,10 @@ msgctxt "z_seam_corner label" msgid "Seam Corner Preference" msgstr "シームコーナー設定" -# msgstr "薄層のプレファレンス" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "モデル輪郭のコーナーがシーム(縫い目)の位置に影響するかどうかを制御します。 Noneはコーナーがシームの位置に影響を与えないことを意味します。 Seam(縫い目)を非表示にすると、内側のコーナーでシームが発生しやすくなります。 Seamを表示すると、外側の角にシームが発生する可能性が高くなります。 シームを隠す、または表示するを選択することにより、内側または外側コーナーでシームを発生させる可能性が高くなります。" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "モデル輪郭の角がシームの位置に影響を及ぼすかどうかを制御します。[なし] は、角がシームの位置に影響を及ぼさないことを意味します。シームを隠すにすると、シームが内側の角に生じる可能性が高くなります。シームを外側にすると、シームが外側の角に生じる可能性が高くなります。シームを隠す/外側に出すは、シームが内側または外側の角に生じる可能性が高くなります。スマート・シームを使用すると、内外両側の角を使用できますが、適切な場合には内側の角が選択される頻度が高まります。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1373,6 +1442,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "シーム表示/非表示" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "スマート・シーム" + # msgstr "シームを非表示または表示する" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1387,14 +1461,13 @@ msgstr "有効時は、Zシームは各パーツの真ん中に設定されま #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "小さいZギャップは無視" +msgid "No Skin in Z Gaps" +msgstr "Z 軸ギャップにスキンなし" -# msgstr "小さなZギャップを無視する" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "モデルに垂直方向のギャップが小さくある場合、これらの狭いスペースにおいて上部および下部スキンを生成するために、約5%の計算時間が追加されます。そのような場合は、設定を無効にしてください。" +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "モデルの垂直方向に少数層のみの小さなギャップがある場合、通常は、その狭いスペース内にある層の周囲にスキンが存在する必要があります。垂直方向のギャップが非常に小さい場合は、この設定を有効にしてスキンが生成されないようにします。これにより、印刷時間とスライス時間が向上しますが、技術的には空気にさらされたインフィルを残します。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1412,11 +1485,10 @@ msgctxt "ironing_enabled label" msgid "Enable Ironing" msgstr "アイロン有効" -# msgstr "アイロンを有効にする" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "ノズルから吐出せずに上部表面を再度動く機能。表面を溶かしてよりスムースにします。" +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "微量の材料のみを吐出して、再度上部表面を動きます。これにより上部のプラスティックが溶かされ、よりスムースな表面になります。ノズルチャンバーには高い圧力が保たれるため、表面上のしわが材料で埋められます。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1518,6 +1590,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "アイロン時の最大加速度。" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "表面公差量" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "壁とスキンの中央ライン(のエンドポイント)が交差する量(スキンラインのライン幅と壁の最内部に対する割合)を調整します。わずかな交差によって、壁がスキンにしっかりつながります。スキンと壁のライン幅が同じで、割合が50%を超えると、スキンが壁を通過している可能性があります。これは、その時点で、スキン押出機のノズルの位置が、すでに壁の真ん中を過ぎている可能性があるためです。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "表面公差" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "壁とスキンの中央ライン(のエンドポイント)が交差する量を調整します。わずかな交差によって、壁がスキンにしっかりつながります。スキンと壁のライン幅が同じで、壁の幅が半分以上の値になると、スキンが壁を通過している可能性があります。これは、その時点で、スキン押出機のノズルの位置が、すでに壁の真ん中を過ぎている可能性があるためです。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1690,6 +1782,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "インフィルパターンはY軸に沿ってこの距離を移動します。" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "インフィル開始のランダム化" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "どのインフィルラインが最初に印刷されるかをランダム化します。これによって1つのセグメントが強くなることを回避しますが、追加の移動距離が必要となります。" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1745,26 +1847,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "インフィルと壁が交差する量、わずかな交差によって壁がインフィルにしっかりつながります。" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "表面公差量" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "壁とスキンの中央ライン(のエンドポイント)が交差する量(スキンラインのライン幅と壁の最内部に対する割合)を調整します。わずかな交差によって、壁がスキンにしっかりつながります。スキンと壁のライン幅が同じで、割合が50%を超えると、スキンが壁を通過している可能性があります。これは、その時点で、スキン押出機のノズルの位置が、すでに壁の真ん中を過ぎている可能性があるためです。" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "表面公差" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "壁とスキンの中央ライン(のエンドポイント)が交差する量を調整します。わずかな交差によって、壁がスキンにしっかりつながります。スキンと壁のライン幅が同じで、壁の幅が半分以上の値になると、スキンが壁を通過している可能性があります。これは、その時点で、スキン押出機のノズルの位置が、すでに壁の真ん中を過ぎている可能性があるためです。" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1960,8 +2042,8 @@ msgstr "造形温度" #: fdmprinter.def.json 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) の場合、造形温度は調整できません。" +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" @@ -2073,6 +2155,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "収縮率をパーセントで示す。" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "結晶性材料" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "この材料は加熱時にきれいに分解するタイプ (結晶性) または長く絡み合ったポリマー鎖 (非結晶) を作り出すタイプのいずれですか?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "滲出防止引戻し位置" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "滲出を止めるには材料をどこまで引き戻す必要があるか。" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "滲出防止引戻し速度" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "滲出を防止するにはフィラメントスイッチ中に材料をどの程度速く引き戻す必要があるか。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "フィラメントの引き出し準備引戻し位置" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "加熱中にフィラメントの引き出しが生じる距離。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "フィラメント引き出し準備引戻し速度" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "フィラメントの引き出しが起こるための引き戻しの距離。" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "フィラメント引き出しの引戻し位置" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "フィラメントをきれいに引き出すにはフィラメントをどこまで引き戻すか。" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "フィラメント引き出しの引戻し速度" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "フィラメントをきれいに引き出すために維持すべきフィラメントの引戻し速度。" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "フィラメント引き出し温度" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "フィラメントがきれいに引き出される温度。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2083,6 +2245,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流れの補修: 押出されるマテリアルの量は、この値から乗算されます。" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "壁のフロー" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "壁のフロー補正。" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "外壁のフロー" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "最外壁のフロー補正。" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "内壁のフロー" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "最外壁以外の壁のフロー補正。" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "上面/下面フロー" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "上面/下面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "上部表面スキンフロー" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "印刷物の上部表面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "インフィルフロー" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "インフィルのフロー補正。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "スカート/ブリムのフロー" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "スカートまたはブリムのフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "支持材のフロー" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "支持材のフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "支持材界面フロー" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "支持材の天井面または床面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "支持材天井面フロー" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "支持材天井面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "支持材床面フロー" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "支持材床面のフロー補正。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "プライムタワーのフロー" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "プライムタワーのフロー補正。" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2200,8 +2482,8 @@ msgstr "サポート引き戻し限界" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "サポートからサポートに直線移動する場合は、引き戻しを省略します。この設定を有効にすると、印刷時間が短縮されますが、サポート構造内部の糸引きが多くなります。" +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "支持材から支持材に直線移動する場合は、引戻しを省略します。この設定を有効にすると、印刷時間は節約できますが、支持材内で過剰な糸引きが発生する可能性があります。" #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2253,6 +2535,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "ノズル スイッチ後にフィラメントが押し戻される速度。" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "ノズル切替え後のプライムに必要な余剰量" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "ノズル切替え後のプライムに必要な余剰材料。" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2447,14 +2739,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "スカートとブリムのプリント速度 通常は一層目のスピードと同じですが、異なる速度でスカートやブリムをプリントしたい場合に設定してください。" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "最大Z速度" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 軸ホップ速度" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "ビルトプレートが移動する最高速度 この値を0に設定すると、ファームウェアのデフォルト値のZの最高速度が適用されます。" +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 軸ホップに対して垂直 Z 軸方向の動きが行われる速度。これは通常、ビルドプレートまたはマシンのガントリーが動きにくいため、印刷速度よりも低くなります。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2962,17 +3254,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "ノズルが既に印刷された部分を移動する際の間隔。" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "同じパーツでレイヤーを開始する" - -#: fdmprinter.def.json -#, fuzzy -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "各レイヤーの印刷は決まった場所近い距離のポイントにて印刷を始めます。そのため、前のレイヤーが終わった部分から新しいレイヤーのプリントを開始しません。これによりオーバーハングや小さなパーツの印刷改善されますが、その代わり印刷時間が長くなります。" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3079,7 +3360,6 @@ msgid "Regular Fan Speed" msgstr "標準ファン速度" #: fdmprinter.def.json -#, fuzzy msgctxt "cool_fan_speed_min description" msgid "The speed at which the fans spin before hitting the threshold. When a layer prints faster than the threshold, the fan speed gradually inclines towards the maximum fan speed." msgstr "しきい値に達する前のファンの回転スピード。プリント速度がしきい値より速くなると、ファンの速度は上がっていきます。" @@ -3110,7 +3390,6 @@ msgid "Initial Fan Speed" msgstr "初期ファン速度" #: fdmprinter.def.json -#, fuzzy msgctxt "cool_fan_speed_0 description" msgid "The speed at which the fans spin at the start of the print. In subsequent layers the fan speed is gradually increased up to the layer corresponding to Regular Fan Speed at Height." msgstr "プリント開始時にファンが回転する速度。後続のレイヤーでは、ファン速度は、高さに応じて早くなります。" @@ -3385,14 +3664,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "印刷した初期層間の距離が構造ライをサポートします。この設定は、対応濃度で算出されます。" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "サポートインフィルラインの向き" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "対応するインフィルラインの向きです。サポートインフィルパターンは平面で回転します。" +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "使用する整数線の方向のリスト。リストの要素は、層が進行するにつれて順番に使用され、リストの終わりに達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストであり、デフォルト角度の0度を使用します。" #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3522,8 +3801,8 @@ msgstr "サポート接合距離" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "X/Y方向のサポート構造間の最大距離。別の構造がこの値より近づいた場合、構造は 1 つにマージします。" +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "支持材間における X/Y 軸方向の最大距離。個別の支持材間の距離がこの値よりも近い場合、支持材は 1 つにマージされます。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3827,8 +4106,8 @@ msgstr "最小サポートインターフェイス領域" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "インターフェイスポリゴンをサポートする最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "サポートインターフェイスポリゴンの最小領域サイズ。この値より小さい領域のポリゴンは通常のサポートとしてプリントされます。" #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3837,8 +4116,8 @@ msgstr "最小サポートルーフ領域" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "サポートのルーフに対する最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "サポートのルーフの最小領域サイズ。この値より小さい領域のポリゴンは通常のサポートとしてプリントされます。" #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3847,8 +4126,8 @@ msgstr "最小サポートフロア領域" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "サポートのフロアに対する最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "サポートのフロアの最小領域サイズ。この値より小さい領域のポリゴンは通常のサポートとしてプリントされます。" #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3880,6 +4159,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "サポートのフロアに適用されるオフセット量。" +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "サポート面のライン方向" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストとなり、デフォルトの角度を使用します(面がかなり厚い場合には45度と135度を交互に使用、それ以外では90度を使用)。" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "サポートルーフライン方向" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストとなり、デフォルトの角度を使用します(面がかなり厚い場合には45度と135度を交互に使用、それ以外では90度を使用)。" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "サポートフロアライン方向" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "使用する整数線の方向のリスト。リストの要素は、レイヤの層に合わせて順番に使用され、リストの末尾に達すると、最初から再び開始されます。リスト項目はコンマで区切られ、リスト全体は大括弧で囲まれています。デフォルトは空のリストとなり、デフォルトの角度を使用します(面がかなり厚い場合には45度と135度を交互に使用、それ以外では90度を使用)。" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3922,14 +4231,14 @@ msgid "The diameter of a special tower." msgstr "特別な塔の直径。" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "最小直径" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "最大タワーサポート直径" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "特殊なサポート塔によって支持される小さな領域のX / Y方向の最小直径。" +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "特殊なサポートタワーにより支持される小さな領域のX / Y方向の最小直径。" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4431,16 +4740,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "印刷物の横にタワーを造形して、ノズル交換後にフィラメントの調整をします。" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "円形プライムタワー" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "プライムタワーを円形にします。" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4481,16 +4780,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "プライムタワーの位置のy座標。" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "プライムタワーのフロー" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "吐出量: マテリアルの吐出量はこの値の乗算で計算されます。" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4631,6 +4920,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "最初に印刷したレイヤーの下に空のレイヤーがある場合は取り除きます。この設定を無効にすると、スライストレランスが「排他」または「中間」に設定されている場合に最初のレイヤーが空になる原因になります。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最大解像度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "スライス後の線分の最小サイズ。これを増やすと、メッシュの解像度が低くなります。これにより、プリンタが g コードの処理速度に追いつくことができ、処理できないメッシュの詳細を取り除いてスライス速度を速めます。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "最大移動解像度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "スライス後の移動線分の最小サイズ。これを増やすと、移動の跡が滑らかでなくなります。これにより、プリンタが g コードの処理速度に追いつくことができますが、精度が低下します。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "最大偏差" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "最大解像度設定の解像度を下げるときに許容される最大偏差です。これを大きくすると印刷の精度は低くなりますが、g-codeは小さくなります。最大偏差は最大解像度の限度であるため、最大偏差でこの2つが競合する場合には常にtrueとなります。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4796,11 +5115,10 @@ msgctxt "smooth_spiralized_contours label" msgid "Smooth Spiralized Contours" msgstr "滑らかな輪郭" -# msgstr "滑らかならせん状の輪郭" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます(Zシームは印刷物上でほとんどみえませんが、レイヤービューでは確認できます。)スムージングは​​細かいサーフェスの詳細をぼかす傾向があることに注意してください。" +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます (Zシームは印刷物上でほとんどみえませんが、層ビューでは確認できます)。スムージングは、細かい表面の詳細をぼかす傾向があることに注意してください。" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -5018,36 +5336,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "この量よりも小さい円周を持つスライスレイヤーのポリゴンは、除外されます。値を小さくすると、スライス時間のコストで、メッシュの解像度が高くなります。つまり、ほとんどが高解像 SLA プリンター、極小多機能 3D モデルです。" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "最大解像度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "スライス後の線分の最小サイズ。これを増やすと、メッシュの解像度が低くなります。これにより、プリンタが g コードの処理速度に追いつくことができ、処理できないメッシュの詳細を取り除いてスライス速度を速めます。" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "最大移動解像度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "スライス後の移動線分の最小サイズ。これを増やすと、移動の跡が滑らかでなくなります。これにより、プリンタが g コードの処理速度に追いつくことができますが、精度が低下します。" - -#: fdmprinter.def.json -msgctxt "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" @@ -5191,16 +5479,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "コースティング中の移動速度。印刷時の経路の速度設定に比例します。ボーデンチューブの圧力が低下するので、100%よりわずかに低い値が推奨される。" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "レイヤー回転変更" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "トップ/ボトムのレイヤーが印刷される方向を変更します。通常、それらは斜めに印刷されます。この設定では、X方向のみとY方向のみが追加されます。" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5316,8 +5594,8 @@ msgstr "円錐サポートを有効にする" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "実験的機能:オーバーハング部分よりも底面のサポート領域を小さくする。" +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "オーバーハング部分よりも底面の支持領域を小さくする。" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5381,23 +5659,23 @@ msgstr "各線分に導入されたランダム点間の平均距離。ポリゴ #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "流量補正時の最大抽出オフセット" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "補正の最大距離をミリ単位で指定します。" +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "流量の変化を補正するためにフィラメントを移動する最大距離(mm)。" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "流量補正要因" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "流量を距離に変換する際の要因。" +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "流量の変化を補正するためにフィラメントを移動する距離。フィラメントが1秒の押出で移動する距離の割合として指定します。" #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5688,13 +5966,13 @@ msgstr "次のレイヤーの高さを前のレイヤーの高さと比べた差 #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "適応レイヤーしきい値" +msgid "Adaptive Layers Topography Size" +msgstr "適応レイヤーのトポグラフィーサイズ" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "小さいレイヤーを使用するかどうかの閾値。この値が、レイヤー中の最も急な斜面のタンジェントと比較されます。" +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "隣接する2つのレイヤー間の目標水平距離。この設定を小さくすると、レイヤーのエッジが近づくように薄いレイヤーが使用されます。" #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5703,8 +5981,8 @@ msgstr "張り出し壁アングル" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "この角度以上に張り出した壁は、オーバーハング壁設定を使用して印刷されます。値が 90 の場合は、オーバーハング壁として処理されません。" +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "この角度以上に張り出した壁は、オーバーハング壁設定を使用してプリントされます。値が90の場合は、オーバーハング壁として処理されません。サポートによってサポートされているオーバーハングも、オーバーハングとして処理されません。" #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -6056,6 +6334,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "ブラシ全体でヘッド前後に動かす距離。" +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "小さい穴の最大サイズ" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "これより直径が小さな輪郭の穴とパーツは、Small Feature Speedを使用して印刷されます。" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "小型形体の最大長さ" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "この長さより短い輪郭の形体は、Small Feature Speedを使用して印刷されます。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Small Feature Speed" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "小型形体は通常のプリント速度に対してこの割合でプリントされます。低速でプリントすると、接着と精度が向上します。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "小型形体の初期レイヤー速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "最初のレイヤーの小型形体は通常のプリント速度に対してこの割合でプリントされます。低速でプリントすると、接着と精度が向上します。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -6116,6 +6434,155 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "ファイルから読み込むときに、モデルに適用するトランスフォーメーションマトリックス。" +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "インターフェイスポリゴンをサポートする最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "サポートのルーフに対する最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "サポートのフロアに対する最小領域サイズ。この領域よりポリゴンが小さい場合は生成されません。" + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "レイヤー回転変更" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "トップ/ボトムのレイヤーが印刷される方向を変更します。通常、それらは斜めに印刷されます。この設定では、X方向のみとY方向のみが追加されます。" + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "流量補正時の最大抽出オフセット" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "補正の最大距離をミリ単位で指定します。" + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "流量補正要因" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "流量を距離に変換する際の要因。" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "適応レイヤーしきい値" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "小さいレイヤーを使用するかどうかの閾値。この値が、レイヤー中の最も急な斜面のタンジェントと比較されます。" + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "この角度以上に張り出した壁は、オーバーハング壁設定を使用して印刷されます。値が 90 の場合は、オーバーハング壁として処理されません。" + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "小型形体は通常の印刷速度よりこの割合で印刷されます。低速の印刷によって、接着と精度が向上します。" + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "最初のレイヤー速度" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "小型形体の最初のレイヤーは通常の印刷速度よりこの割合で印刷されます。低速の印刷によって、接着と精度が向上します。" + +# msgstr "アイロンを有効にする" +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "ノズルから吐出せずに上部表面を再度動く機能。表面を溶かしてよりスムースにします。" + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "同じパーツでレイヤーを開始する" + +#, fuzzy +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "各レイヤーの印刷は決まった場所近い距離のポイントにて印刷を始めます。そのため、前のレイヤーが終わった部分から新しいレイヤーのプリントを開始しません。これによりオーバーハングや小さなパーツの印刷改善されますが、その代わり印刷時間が長くなります。" + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "対応するインフィルラインの向きです。サポートインフィルパターンは平面で回転します。" + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "最大解像度設定の解像度を下げるときに許容される最大偏差です。これを大きくすると、印刷の精度は低くなりますが、g-code は小さくなります。" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-codeフレーバー" + +# msgstr "薄層のプレファレンス" +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "モデル輪郭のコーナーがシーム(縫い目)の位置に影響するかどうかを制御します。 Noneはコーナーがシームの位置に影響を与えないことを意味します。 Seam(縫い目)を非表示にすると、内側のコーナーでシームが発生しやすくなります。 Seamを表示すると、外側の角にシームが発生する可能性が高くなります。 シームを隠す、または表示するを選択することにより、内側または外側コーナーでシームを発生させる可能性が高くなります。" + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "小さいZギャップは無視" + +# msgstr "小さなZギャップを無視する" +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "モデルに垂直方向のギャップが小さくある場合、これらの狭いスペースにおいて上部および下部スキンを生成するために、約5%の計算時間が追加されます。そのような場合は、設定を無効にしてください。" + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "造形に使用した温度。これがゼロ (0) の場合、造形温度は調整できません。" + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "サポートからサポートに直線移動する場合は、引き戻しを省略します。この設定を有効にすると、印刷時間が短縮されますが、サポート構造内部の糸引きが多くなります。" + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "最大Z速度" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "ビルトプレートが移動する最高速度 この値を0に設定すると、ファームウェアのデフォルト値のZの最高速度が適用されます。" + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "X/Y方向のサポート構造間の最大距離。別の構造がこの値より近づいた場合、構造は 1 つにマージします。" + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "最小直径" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "特殊なサポート塔によって支持される小さな領域のX / Y方向の最小直径。" + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "円形プライムタワー" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "プライムタワーを円形にします。" + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "吐出量: マテリアルの吐出量はこの値の乗算で計算されます。" + +# msgstr "滑らかならせん状の輪郭" +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "らせん状の輪郭を滑らかにしてZシームの視認性を低下させます(Zシームは印刷物上でほとんどみえませんが、レイヤービューでは確認できます。)スムージングは​​細かいサーフェスの詳細をぼかす傾向があることに注意してください。" + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "実験的機能:オーバーハング部分よりも底面のサポート領域を小さくする。" + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "有効なエクストルーダーの数" diff --git a/resources/i18n/ko_KR/cura.po b/resources/i18n/ko_KR/cura.po index 9ca0fa4a84..824cc276e8 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:50+0200\n" -"Last-Translator: Korean \n" -"Language-Team: Jinbum Kim , Korean \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-09-23 14:16+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Korean , Jinbum Kim , Korean \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.2.1\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "기기 설정" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code 파일" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter는 텍스트가 아닌 모드는 지원하지 않습니다." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "내보내기 전에 G-code를 준비하십시오." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D 모델 도우미" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "펌웨어 업데이트" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "활성 설정 병합" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 파일" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "프로파일이 병합되고 활성화되었습니다." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USB 인쇄가 진행 중입니다. Cura를 닫으면 인쇄도 중단됩니다. 계속하시겠습니까?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 파일" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "프린트가 아직 진행 중입니다. Cura는 이전 프린트가 완료될 때까지는 USB를 통해 다른 프린트를 시작할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "파일에 X3g 쓰기" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g 파일" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "프린트 진행 중" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "이동식 드라이브 {0}에 저장" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "쓸 수있는 파일 형식이 없습니다!" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "이동식 드라이브 {0}: {1} 에 저장할 수 없습니다 :" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "오류" @@ -229,9 +217,9 @@ msgstr "이동식 장치 {0} 꺼내기" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "경고" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "이동식 드라이브" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "인증 상태" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "접근 요청 다시 보내기" - -#: /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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "새 프린팅 작업을 시작할 수 없습니다." - -#: /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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "프린터로 데이터 보내기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "데이터 전송 중" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "취소" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "프린터와 동기화" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "네트워크를 통해 연결됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "출력 작업이 프린터에 성공적으로 보내졌습니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "데이터 전송 됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "모니터에서 보기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "비어 있음" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "알 수 없음" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Cloud를 통해 인쇄" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Cloud를 통해 인쇄" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Cloud를 통해 연결됨" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Cloud 오류" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "인쇄 작업을 내보낼 수 없음." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "데이터를 프린터로 업로드할 수 없음." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "내일" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "오늘" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Ultimaker Cloud를 통해 업로드하는 중" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "이 프린터에 대해 다시 물어보지 마십시오." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "시작하기" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "연결됨!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "연결 검토" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "네트워크를 통해 연결" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Cura 설정 가이드" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "네트워크를 통해 프린팅" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "네트워크를 통해 프린팅" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "네트워크를 통해 연결됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "현재 작업이 전송될 때까지 기다려주십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "프린트 오류" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "새 프린터를 찾을 수 없음" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "새 프린터가 계정에 연결되어 있습니다. 발견한 프린터를 목록에서 찾을 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "다시 메시지 표시 안 함" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "연결 시도 중인 {0}이(가) 그룹의 호스트가 아닙니다. 웹 페이지에서 그룹 호스트로 설정할 수 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "그룹 호스트 아님" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "그룹 설정" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Ultimaker 계정을 사용하여 어디에서든 인쇄 작업을 전송하고 모니터링하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ultimaker Cloud에 연결" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "시작하기" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "인쇄 작업 전송" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "프린트 작업을 프린터로 업로드하고 있습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "출력 작업이 프린터에 성공적으로 보내졌습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "데이터 전송 됨" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Ultimaker Connect를 실행하지 않는 프린터에 연결하려 합니다. 프린터를 최신 펌웨어로 업데이트해 주십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "프린터 업데이트" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura가 {0} 그룹의 호스트 프린터에 설치되지 않은 재료 프로파일을 감지했습니다." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "재료를 프린터로 전송 중" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "데이터를 프린터로 업로드할 수 없음." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "네트워크 오류" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "내일" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "오늘" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Cloud를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Cloud를 통해 인쇄" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Cloud를 통해 연결됨" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "모니터" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "업데이트 정보에 액세스 할 수 없습니다." @@ -625,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "레이어 뷰" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "와이어 프린팅이 활성화되어 있을 때 Cura는 레이어를 정확하게 표시하지 않습니다" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "시뮬레이션 뷰" @@ -685,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 이미지" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -749,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "모델 별 설정 구성" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "추천" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "사용자 정의" @@ -765,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 파일" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "노즐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "프로젝트 파일 {0}에 알 수 없는 기기 유형 {1}이(가) 포함되어 있습니다. 기기를 가져올 수 없습니다. 대신 모델을 가져옵니다." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "프로젝트 파일 열기" @@ -792,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 파일" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G 코드 파싱" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-코드 세부 정보" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "파일을 보내기 전에 g-코드가 프린터 및 프린터 구성에 적합한 지 확인하십시오. g-코드가 정확하지 않을 수 있습니다." @@ -857,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura 프로파일" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "프로파일 어시스턴트" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "프로파일 어시스턴트" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -887,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "미리 보기" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -903,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "로그인 실패" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "지원되지 않음" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "파일이 이미 있습니다" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "파일 {0}이 이미 있습니다. 덮어 쓰시겠습니까?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "유효하지 않은 파일 URL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "익스트루더의 현재 가용성과 일치하도록 설정이 변경되었습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "설정이 업데이트되었습니다" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "익스트루더 비활성화됨" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "알 수 없는" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "프로파일을 {0}: {1}로 내보내는데 실패했습니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "프로파일을 {0}로 내보내지 못했습니다. Writer 플러그인이 오류를 보고했습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "프로파일을 {0} 에 내보냅니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "내보내기 완료" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "프린터가 추가되기 전 {0}에서 프로파일을 가져올 수 없습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "{0}(으)로 가져올 사용자 정의 프로파일이 없습니다" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "{0}에서 프로파일을 가져오지 못했습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "프로파일 {0}에는 정확하지 않은 데이터가 포함되어 있으므로, 불러올 수 없습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "프로필 {0}({1})에 정의된 제품이 현재 제품({2})과 일치하지 않으므로, 불러올 수 없습니다." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "{0}에서 프로파일을 가져오지 못했습니다:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "프로파일 {0}을 성공적으로 가져 왔습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "파일 {0}에 유효한 프로파일이 포함되어 있지 않습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "프로파일 {0}에 알 수 없는 파일 유형이 있거나 손상되었습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "사용자 정의 프로파일" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "프로파일에 품질 타입이 누락되었습니다." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1103,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "다른" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "미리 슬라이싱한 파일 {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "다음" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1123,73 +953,120 @@ msgstr "그룹 #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "닫기" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "추가" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "취소" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "뛰어난 외관" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "시각적 프로파일은 높은 시각적 및 표면 품질의 의도를 지니고 시각적 프로토타입과 모델을 인쇄하기 위해 설계되었습니다." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "엔지니어링 프로파일은 정확도를 개선하고 허용 오차를 좁히려는 의도로 기능 프로토타입 및 최종 사용 부품을 인쇄하도록 설계되었습니다." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "초안" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "초안 프로파일은 인쇄 시간을 상당히 줄이려는 의도로 초기 프로토타입과 컨셉트 확인을 인쇄하도록 설계되었습니다." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "재정의되지 않음" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "사용자 정의 프로파일" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "지원되는 모든 유형 ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "모든 파일 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "알 수 없는" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "사용 가능한 네트워크 프린터" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "사용자 정의 소재" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "사용자 정의" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "아래 프린터는 그룹에 속해 있기 때문에 연결할 수 없습니다" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "사용 가능한 네트워크 프린터" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "\"프린팅 순서\"설정 값으로 인해 갠트리가 프린팅 된 모델과 충돌하지 않도록 출력물 높이가 줄어 들었습니다." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "출력물 크기" @@ -1214,39 +1091,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "응답을 읽을 수 없습니다." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Ultimaker 계정 서버에 도달할 수 없음." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "이 응용 프로그램을 인증할 때 필요한 권한을 제공하십시오." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "로그인을 시도할 때 예기치 못한 문제가 발생했습니다. 다시 시도하십시오." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "객체를 증가시키고 배치" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "개체 배치 중" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "모든 개체가 출력할 수 있는 최대 사이즈 내에 위치할 수 없습니다" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "개체 배치 중" @@ -1395,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "기기로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "환경 설정을 설정하는 중..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "장면 설정 중..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "인터페이스 로드 중 ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "한 번에 하나의 G-코드 파일만 로드 할 수 있습니다. {0} 가져 오기를 건너 뛰었습니다." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-코드가 로드되어 있으면 다른 파일을 열 수 없습니다. {0} 가져 오기를 건너 뛰었습니다." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "선택한 모델이 너무 작아서 로드할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "프린터 설정" @@ -1454,15 +1336,15 @@ msgstr "X (너비)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1494,50 +1376,55 @@ msgstr "히트 베드" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "히팅 빌드 사이즈" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Gcode 유형" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "프린트헤드 설정" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X 최소값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y 최소값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X 최대값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y 최대값" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "갠트리 높이" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "익스트루더의 수" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "시작 GCode" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "End GCode" @@ -1567,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "노즐 오프셋 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "노즐 오프셋 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "냉각 팬 번호" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "익스트루더 종료 Gcode" @@ -1593,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "설치됨" @@ -1608,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "평가" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "플러그인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "재료" @@ -1627,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1730,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Cura 끝내기" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "커뮤니티 기여" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "커뮤니티 플러그인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "일반 재료" @@ -1801,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "추천" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "호환성" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "기기" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "빌드 플레이트" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "서포트" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "품질" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "기술 데이터 시트" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "안전 데이터 시트" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "인쇄 가이드라인" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "웹 사이트" @@ -1921,70 +1828,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "펌웨어 누락으로 인해 펌웨어 업데이트에 실패했습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "프린터 관리" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "유리" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "Cloud 프린터를 모니터링하고 있기 때문에 웹캠을 사용할 수 없습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "로딩 중..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "사용불가" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "연결할 수 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "대기 상태" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "제목 없음" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "익명" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "구성 변경 필요" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "세부 사항" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "사용할 수 없는 프린터" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "첫 번째로 사용 가능" @@ -1994,212 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "대기 중" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "대기열에 프린팅 작업이 없습니다. 작업을 추가하려면 슬라이스하여 전송하십시오." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "인쇄 작업" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "총 인쇄 시간" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "대기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "모든 작업이 인쇄됩니다." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "인쇄 내역 보기" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "네트워크 프린터에 연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"네트워크를 통해 프린터로 직접 프린팅하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g 코드 파일을 프린터로 전송할 수 있습니다\n" -"\n" -"아래 목록에서 프린터를 선택하십시오:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "네트워크를 통해 프린터로 직접 프린팅하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g-코드 파일을 프린터로 전송할 수 있습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "아래 목록에서 프린터를 선택하십시오:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "편집" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "제거" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "새로고침" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "프린터가 목록에 없으면 네트워크 프린팅 문제 해결 가이드를 읽어보십시오" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "유형" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "펌웨어 버전" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "주소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "이 프린터는 프린터 그룹을 호스트하도록 설정되어 있지 않습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "이 프린터는 %1개 프린터 그룹의 호스트입니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "이 주소의 프린터가 아직 응답하지 않았습니다." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "연결" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "잘못된 IP 주소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "유효한 IP 주소를 입력하십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "프린터 주소" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "네트워크에 프린터의 IP 주소 또는 호스트 이름을 입력하십시오." +msgid "Enter the IP address of your printer on the network." +msgstr "네트워크에 있는 프린터의 IP 주소를 입력하십시오." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "확인" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "%2에서 %1 완료" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "프린트" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "네트워크를 통해 프린팅" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "프린트" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "프린터 선택" @@ -2288,67 +2184,57 @@ msgctxt "@action:button" msgid "Override" msgstr "무시하기" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "알루미늄" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "프린터에 연결" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2557,70 +2443,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "스무딩(smoothing)" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "메쉬 유형" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "일반 모델" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "서포터로 프린팅" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "다른 모델과 오버랩되도록 지원하지 않음" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "다른 모델과의 오버랩에 대한 설정 수정" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "다른 모델의 내부채움에 대한 설정 수정" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "설정 선택" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "이 모델에 맞게 사용자 정의 설정을 선택하십시오" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "필터..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "모두 보이기" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "메쉬 유형" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "일반 모델" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "서포터로 프린팅" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "오버랩 설정 수정" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "오버랩 지원 안함" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "내부채움 전용" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "설정 선택" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "프로젝트 열기" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "기존 업데이트" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "새로 만들기" @@ -2647,6 +2532,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "업데이트" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "새로 만들기" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2660,7 +2550,7 @@ msgid "Printer Group" msgstr "프린터 그룹" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "프로파일 설정" @@ -2671,73 +2561,79 @@ msgid "How should the conflict in the profile be resolved?" msgstr "프로파일의 충돌을 어떻게 해결해야합니까?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "이름" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "프로파일에 없음" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 무시" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivative from" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 무시" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "재료 설정" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "재료의 충돌은 어떻게 해결되어야합니까?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "표시 설정" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "종류" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "표시 설정 :" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "1 out of %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "프로젝트를 로드하면 빌드 플레이트의 모든 모델이 지워집니다." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "열기" @@ -2844,48 +2740,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Cura가 시작되는 날마다 자동으로 백업을 생성하십시오." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "지원되지 않음" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "내보내기" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "팁" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "인쇄 실험" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "체크리스트" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2971,170 +2825,176 @@ 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:72 msgctxt "@title" msgid "Information" msgstr "정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "직경 변경 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "새 필라멘트의 직경은 %1 mm로 설정되었으며, 현재 압출기와 호환되지 않습니다. 계속하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "표시 이름" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "상표" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "재료 유형" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "색깔" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "속성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "밀도" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "직경" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "필라멘트 비용" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "필라멘트 무게" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "필라멘트 길이" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "미터 당 비용" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "이 재료는 %1에 연결되어 있으며 일부 속성을 공유합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "재료 연결 해제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "설명" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "접착 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "프린팅 설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "활성화" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "생성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "복제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "가져오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "내보내기" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "제거 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "%1을 제거 하시겠습니까? 이것은 취소 할 수 없습니다!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "재료 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "재료를 가져올 수 없습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "재료를 성공적으로 가져왔습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "재료 내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "재료를 내보내는데 실패했습니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "재료를 성공적으로 내보냈습니다" @@ -3149,414 +3009,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "모두 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "계산된" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "현재 설정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "단위" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 msgctxt "@label" msgid "Interface" msgstr "인터페이스" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "언어:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "통화:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "테마:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "이러한 변경 사항을 적용하려면 응용 프로그램을 다시 시작해야합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "설정이 변경되면 자동으로 슬라이싱 합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "자동으로 슬라이싱" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "뷰포트 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "지원되지 않는 모델 영역을 빨간색으로 강조 표시하십시오. 서포트가 없으면 이 영역이 제대로 프린팅되지 않습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "오버행 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "모델을 선택하면 모델이 뷰의 가운데에 오도록 카메라를 이동합니다" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "항목을 선택하면 카메라를 중앙에 위치" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "큐라의 기본 확대 동작을 반전시켜야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "카메라 줌의 방향을 반전시키기." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "확대가 마우스 방향으로 이동해야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "정투영법 시점에서는 마우스 방향으로 확대가 지원되지 않습니다." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "마우스 방향으로 확대" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "모델을 더 이상 교차시키지 않도록 이동해야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "모델이 분리되어 있는지 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "모델을 빌드 플레이트에 닿도록 아래로 움직여야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "모델을 빌드 플레이트에 자동으로 놓기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "g-code 리더에 주의 메시지를 표시하기." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "g-code 리더의 주의 메시지" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "레이어가 호환 모드로 강제 설정되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "레이어 뷰 호환성 모드로 전환 (다시 시작해야 함)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "닫힌 위치에서 Cura를 열어야 합니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "시작 시 창 위치 복원" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "어떤 유형의 카메라 렌더링을 사용해야 합니까?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "카메라 렌더링:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "원근" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "정투영" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "파일 열기 및 저장" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "크기가 너무 큰 경우 모델을 빌드 볼륨에 맞게 조정해야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "큰 모델의 사이즈 수정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "단위가 밀리미터가 아닌 미터 단위 인 경우 모델이 매우 작게 나타날 수 있습니다. 이 모델을 확대할까요?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "매우 작은 모델의 크기 조정" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "모델을 로드한 후에 선택해야 합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "로드된 경우 모델 선택" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "프린터 이름에 기반한 접두어가 프린팅 작업 이름에 자동으로 추가되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "작업 이름에 기기 접두어 추가" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "프로젝트 파일을 저장할 때 요약이 표시되어야합니까?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "프로젝트 저장시 요약 대화 상자 표시" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "프로젝트 파일을 열 때 기본 동작" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "프로젝트 파일을 열 때 기본 동작 " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "항상 묻기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "항상 프로젝트로 열기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "항상 모델 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "프로파일을 변경하고 다른 프로파일로 전환하면 수정 사항을 유지할지 여부를 묻는 대화 상자가 표시됩니다. 기본 행동을 선택하면 해당 대화 상자를 다시 표시 하지 않을 수 있습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "다른 프로파일로 변경하는 경우 변경된 설정값에 대한 기본 동작 " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "항상 묻기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "항상 변경된 설정 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "항상 변경된 설정을 새 프로파일로 전송" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "보안" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura가 프로그램이 시작될 때 업데이트를 확인할까요?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "시작시 업데이트 확인" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "프린터에 대한 익명의 데이터를 Ultimaker로 보낼까요? 모델, IP 주소 또는 기타 개인 식별 정보는 전송되거나 저장되지 않습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(익명) 프린터 정보 보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "추가 정보" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "다수의 빌드 플레이트 사용하기" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "프린터" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "이름 바꾸기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "생성" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "복제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "프로파일 생성하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "이 프로파일에 대한 이름을 제공하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "프로파일 복제하기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "프로파일 이름 바꾸기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "프로파일 가져 오기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "프로파일 내보내기" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "프린터: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "기본 프로파일" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 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:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "현재 변경 사항 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "이 프로파일은 프린터에서 지정한 기본값을 사용하므로 아래 목록에 아무런 설정/재정의가 없습니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "현재 설정이 선택한 프로파일과 일치합니다." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "전역 설정" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "시장" @@ -3616,36 +3484,36 @@ msgstr "제목 없음" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +msgid "Search settings" msgstr "검색 설정" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "모든 익스트루더에 값 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "변경된 사항을 모든 익스트루더에 복사" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "이 설정 숨기기" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "이 설정을 표시하지 않음" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "이 설정을 계속 표시하십시오" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "설정 보기..." @@ -3661,32 +3529,32 @@ msgstr "" "\n" "이 설정을 표시하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "이 설정은 항상 모든 익스트루더 사이에 공유됩니다. 여기서 변경하면 모든 익스트루더에 대한 값이 변경됩니다." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "이 값은 익스트루더마다 결정됩니다 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3697,7 +3565,7 @@ msgstr "" "\n" "프로파일 값을 복원하려면 클릭하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3708,12 +3576,18 @@ msgstr "" "\n" "계산 된 값을 복원하려면 클릭하십시오." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "추천" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "사용자 정의" @@ -3738,36 +3612,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "오버행이 있는 모델 서포트를 생성합니다. 이러한 구조가 없으면 이러한 부분이 프린팅 중에 붕괴됩니다." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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 "브림이나 라프트를 사용합니다. 이렇게하면 출력물 주변이나 아래에 평평한 영역이 추가되어 나중에 쉽게 자를 수 있습니다." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "레이어 높이" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "일부 프로파일 설정을 수정했습니다. 이러한 설정을 변경하려면 사용자 지정 모드로 이동하십시오." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "현재 재료 및 노즐 구성에 대해 이 품질 프로파일을 사용할 수 없습니다. 이 품질 프로파일을 활성화하려면 이를 변경하십시오." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "사용자 지정 프로파일이 현재 활성 상태입니다. 품질 슬라이더를 실행하려면 사용자 지정 탭에서 기본 품질 프로파일을 선택하십시오" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3778,12 +3637,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "비활성" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "실험적 설정" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "프로파일" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3794,6 +3658,11 @@ msgstr "" "\n" "프로파일 매니저를 열려면 클릭하십시오." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "사용자 정의 프로파일" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3829,59 +3698,59 @@ 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’키를 눌러 명령을 전송하십시오." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "익스트루더" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "핫 엔드의 설정 온도입니다. 핫 엔드는 이 온도를 향해 가열되거나 냉각됩니다. 이 값이 0이면 온열 가열이 꺼집니다." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "이 익스트루더의 현재 온도." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "노즐을 예열하기 위한 온도." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "취소" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "예열" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "프린팅하기 전에 노즐을 미리 가열하십시오. 가열되는 동안 계속해서 프린팅물을 조정할 수 있으며, 프린팅 준비가 되면 노즐이 가열 될 때까지 기다릴 필요가 없습니다." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "이 익스트루더의 재료 색." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "이 익스트루더의 재료." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "이 익스트루더에 삽입 된 노즐." @@ -3921,12 +3790,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "재료" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "즐겨찾기" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "일반" @@ -3946,42 +3815,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "프린터(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "재료(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "활성 익스트루더로 설정" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "익스트루더 사용" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "익스트루더 사용하지 않음" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "프로파일(&P)" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "카메라 위치(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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)" @@ -4001,17 +3875,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "보기 설정 관리..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "저장(&S)..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "내보내기(&E)..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "내보내기 선택..." @@ -4038,12 +3912,12 @@ msgctxt "@header" msgid "Configurations" msgstr "구성" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "구성 선택" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "구성" @@ -4073,12 +3947,12 @@ msgctxt "@label" msgid "Enabled" msgstr "실행됨" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "재료" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "더 나은 접착력을 위해 이 재료 조합과 함께 접착제를 사용하십시오.." @@ -4098,22 +3972,22 @@ 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 "예상 남은 시간" @@ -4123,6 +3997,11 @@ msgctxt "@label" msgid "View type" msgstr "유형 보기" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "개체 목록" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4174,32 +4053,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "비용 추산 이용 불가" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "슬라이스 할 수 없습니다" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "취소" @@ -4234,230 +4118,235 @@ msgctxt "@label" msgid "Preset printers" msgstr "프린터 사전 설정" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "프린터 관리" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "재료 관리..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "모델 삭제" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "모델 복제..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&시장" @@ -4472,49 +4361,49 @@ msgctxt "@label" msgid "This package will be installed after restarting." msgstr "다시 시작한 후에 이 패키지가 설치됩니다." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "설정" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura 닫기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura를 정말로 종료하시겠습니까?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "패키지 설치" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "파일 열기" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "선택한 파일 내에 하나 이상의 G-코드 파일이 있습니다. 한 번에 하나의 G-코드 파일 만 열 수 있습니다. G-코드 파일을 열려면 하나만 선택하십시오." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "프린터 추가" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "새로운 기능" @@ -4584,17 +4473,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Cura 소개" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "버전: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "3D 프린팅을 위한 엔드 투 엔트 솔루션." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4603,122 +4492,122 @@ msgstr "" "Cura는 커뮤니티와 공동으로 Ultimaker B.V.에 의해 개발되었습니다.\n" "Cura는 다음의 오픈 소스 프로젝트를 사용합니다:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "그래픽 사용자 인터페이스" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "애플리케이션 프레임 워크" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "GCode 생성기" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "프로세스간 통신 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "프로그래밍 언어" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI 프레임 워크" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUI 프레임 워크 바인딩" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C/C ++ 바인딩 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "데이터 교환 형식" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "과학 컴퓨팅을 위한 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "더 빠른 수학연산을 위한 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "STL 파일 처리를 위한 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "평면 개체 처리를 위한 지원 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "삼각형 메쉬 처리를 위한 지원 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "복잡한 네트워크 분석을 위한 지원 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "3MF 파일 처리를 위한 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "파일 메타데이터 및 스트리밍을 위한 지원 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "직렬 통신 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConf discovery 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "다각형 클리핑 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Python HTTP 라이브러리" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "폰트" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG 아이콘" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Linux 교차 배포 응용 프로그램 배포" @@ -4738,32 +4627,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "프로젝트 저장" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "빌드 플레이트" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "%1익스트루더" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 재료" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "재료" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "프로젝트 요약을 다시 저장하지 마십시오" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "저장" @@ -4939,12 +4823,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "문제 해결" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "프린터 이름" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "프린터의 이름을 설정하십시오" @@ -5001,20 +4885,30 @@ msgctxt "@button" msgid "Get started" 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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D 보기" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "위에서 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "왼쪽 보기" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "오른쪽 보기" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5076,16 +4970,6 @@ msgctxt "name" msgid "Model Checker" msgstr "모델 검사기" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "모든 설정의 내용을 HTML 파일로 덤프하십시오." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God 모드" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5096,15 +4980,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "펌웨어 업데이터" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "평평한 품질 변경 프로필을 만듭니다." +msgid "Provides support for reading AMF files." +msgstr "AMF 파일 읽기가 지원됩니다." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "프로필 플래트너" +msgid "AMF Reader" +msgstr "AMF 리더" #: USBPrinting/plugin.json msgctxt "description" @@ -5116,16 +5000,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 프린팅" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "결과로 생성된 슬라이스를 X3G 파일로 저장해, 이 형식을 읽는 프린터를 지원합니다(Malyan, Makerbot 및 다른 Sailfish 기반 프린터)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5168,23 +5042,13 @@ msgstr "이동식 드라이브 출력 장치 플러그인" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Ultimaker 네트워크 연결 프린터에 대한 네트워크 연결을 관리합니다." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 네트워크 연결" - -#: 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 "설정 가이드" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker 네트워크 연결" #: MonitorStage/plugin.json msgctxt "description" @@ -5316,6 +5180,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "버전 업그레이드 3.3에서 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Cura 4.3에서 Cura 4.4로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "4.3에서 4.4로 버전 업그레이드" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5376,6 +5250,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "3.0에서 3.1로 버전 업그레이드" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Cura 4.1에서 Cura 4.2로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "4.1에서 4.2로 버전 업그레이드" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5406,6 +5290,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "2.2에서 2.4로 버전 업그레이드" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Cura 4.2에서 Cura 4.3으로 구성을 업그레이드합니다." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "4.2에서 4.3로 버전 업그레이드" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5416,6 +5310,16 @@ msgctxt "name" msgid "Image Reader" msgstr "이미지 리더" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "모델 파일 읽기 기능을 제공합니다." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh 리더" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5446,16 +5350,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF 리더" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "프린터 이동 디버깅을 위해 Toolpath로 SVG 파일을 읽습니다." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG Toolpath 리더기" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5496,16 +5390,6 @@ 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." @@ -5546,6 +5430,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 프로파일 리더" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "활성 설정 병합" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "프로파일이 병합되고 활성화되었습니다." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "파일에 X3g 쓰기" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g 파일" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 파일" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "프로파일 어시스턴트" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "프로파일 어시스턴트" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "재시도" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "프린트 코어" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "다른 모델과 오버랩되도록 지원하지 않음" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "다른 모델과의 오버랩에 대한 설정 수정" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "다른 모델의 내부채움에 대한 설정 수정" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "기존 업데이트" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "지원되지 않음" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "이전" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "팁" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "인쇄 실험" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "체크리스트" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "이 Ultimaker 2 업그레이드를 선택하십시오." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "카메라 렌더링: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "다수의 빌드 플레이트 사용하기" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "다수의 빌드 플레이트 사용하기(다시 시작해야 합니다)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "기본 프로파일" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "검색 설정" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "레이어 높이" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "현재 재료 및 노즐 구성에 대해 이 품질 프로파일을 사용할 수 없습니다. 이 품질 프로파일을 활성화하려면 이를 변경하십시오." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "사용자 지정 프로파일이 현재 활성 상태입니다. 품질 슬라이더를 실행하려면 사용자 지정 탭에서 기본 품질 프로파일을 선택하십시오" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "빌드 플레이트(&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "프로파일(&P)" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "빌드 플레이트" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "모든 설정의 내용을 HTML 파일로 덤프하십시오." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "God 모드" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "평평한 품질 변경 프로필을 만듭니다." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "프로필 플래트너" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "재료 제조사가 드롭 인 UI를 사용하여 새로운 재료와 품질 프로파일을 만들 수 있게 합니다." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "프린트 프로파일 어시스턴트" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "네트워크를 통해 연결됨." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "네트워크를 통해 연결되었습니다. 프린터의 접근 요청을 승인하십시오." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "네트워크를 통해 연결되었습니다. 프린터를 제어할 수 있는 권한이 없습니다." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "요청된 프린터에 대한 액세스. 프린터에서 요청을 승인하십시오" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "인증 상태" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "인증 상태" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "접근 요청 다시 보내기" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "허용 된 프린터에 대한 접근 허용" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "이 프린터로 프린팅 할 수 없습니다. 프린팅 작업을 보낼 수 없습니다." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "접근 요청" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "프린터에 접근 요청 보내기" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "새 프린팅 작업을 시작할 수 없습니다." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker의 설정에 문제가 있어 프린팅을 시작할 수 없습니다. 계속하기 전에 이 문제를 해결하십시오." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "일치하지 않는 구성" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "선택한 구성으로 프린팅 하시겠습니까?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "프린터와 Cura의 설정이 일치하지 않습니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료로 슬라이싱을 하십시오." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "새로운 작업 전송 (일시적)이 차단되어 이전 프린팅 작업을 계속 보냅니다." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "프린터로 데이터 보내기" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "데이터 전송 중" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "{slot_number} 슬롯에 로드 된 프린터코어가 없음" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "{slot_number}에 로드 된 재료가 없음" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "익스트루더 {extruder_id}에 대해 다른 프린터코어 (Cura : {cura_printcore_name}, 프린터 : {remote_printcore_name})가 선택되었습니다." + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "익스트루더 {2}에 다른 재료 (Cura : {0}, Printer : {1})가 선택됨" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "프린터와 동기화" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Cura에서 현재 프린터 구성을 사용 하시겠습니까?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "프린터의 PrintCores와 재료는 현재 프로젝트 내의 재료와 다릅니다. 최상의 결과를 얻으려면 프린터에 삽입 된 PrintCores 및 재료로 슬라이싱 하십시오." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "모니터에서 보기" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "'{printer_name} 프린터가 '{job_name}' 프린팅을 완료했습니다." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "인쇄 작업 ‘{job_name}’이 완료되었습니다." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "프린팅이 완료됨" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "비어 있음" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "알 수 없음" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Cloud 오류" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "인쇄 작업을 내보낼 수 없음." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Cloud 연결 시 오류가 있었습니다." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud를 통해 업로드하는 중" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud에 연결" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "이 프린터에 대해 다시 물어보지 마십시오." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "이제 Ultimaker 계정을 사용하여 어디에서든 인쇄 작업을 전송하고 모니터링할 수 있습니다." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "연결됨!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "연결 검토" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "프로필 {0}({1})에 정의된 제품이 현재 제품({2})과 일치하지 않으므로, 불러올 수 없습니다." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "{0}에서 프로파일을 가져오지 못했습니다:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "기존 연결" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "이 프린터/그룹은 이미 Cura에 추가되었습니다. 다른 프린터/그룹을 선택하십시오." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "네트워크에 프린터의 IP 주소 또는 호스트 이름을 입력하십시오." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "프린터에 연결" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 설정 가이드" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "직교 시점에서는 마우스 방향으로 확대가 지원되지 않습니다." + +#~ msgid "Orthogonal" +#~ msgstr "직교" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Ultimaker 3 프린터에 대한 네트워크 연결을 관리합니다." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 네트워크 연결" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "이미지 및 애니메이션과 함께 Cura 설정에 대한 추가 정보와 설명을 제공합니다." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "설정 가이드" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 설정 가이드" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "현재 사용가능한 익스트루더: [% s]에 맞도록 설정이 변경되었습니다" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "사용자 설명" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Cloud 프린터를 모니터링하고 있기 때문에 이 옵션을 사용할 수 없습니다." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Cura Connect로 이동" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "모든 작업이 인쇄됩니다." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "인쇄 내역 보기" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "네트워크를 통해 프린터로 직접 프린팅하려면 네트워크 케이블을 사용하거나 프린터를 WIFI 네트워크에 연결하여 프린터가 네트워크에 연결되어 있는지 확인하십시오. Cura를 프린터에 연결하지 않은 경우에도 USB 드라이브를 사용하여 g 코드 파일을 프린터로 전송할 수 있습니다\n" +#~ "\n" +#~ "아래 목록에서 프린터를 선택하십시오:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "프린터에 연결이 있는지 확인하십시오.\n" +#~ "- 프린터가 켜져 있는지 확인하십시오.\n" +#~ "- 프린터가 네트워크에 연결되어 있는지 확인하십시오." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "현재의 빌드 플레이트만 보기" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "모든 빌드 플레이트 정렬" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "현재의 빌드 플레이트 정렬" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "결과로 생성된 슬라이스를 X3G 파일로 저장해, 이 형식을 읽는 프린터를 지원합니다(Malyan, Makerbot 및 다른 Sailfish 기반 프린터)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "프린터 이동 디버깅을 위해 Toolpath로 SVG 파일을 읽습니다." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG Toolpath 리더기" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "변경 내역" diff --git a/resources/i18n/ko_KR/fdmextruder.def.json.po b/resources/i18n/ko_KR/fdmextruder.def.json.po index d9ef6694d5..944cbf0e15 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Korean \n" "Language-Team: Jinbum Kim , Korean \n" diff --git a/resources/i18n/ko_KR/fdmprinter.def.json.po b/resources/i18n/ko_KR/fdmprinter.def.json.po index e1b0790855..4aa764bcce 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+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-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Korean , Jinbum Kim , Korean \n" "Language: ko_KR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,7 +58,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "시작과 동시에형실행될 G 코드 명령어 \n." +msgstr "" +"시작과 동시에형실행될 G 코드 명령어 \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,7 +72,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "맨 마지막에 실행될 G 코드 명령 \n." +msgstr "" +"맨 마지막에 실행될 G 코드 명령 \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -212,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "기기에 히팅 빌드 플레이트가 있는지 여부." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "빌드 볼륨 온도 안정화" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "기기의 빌드 볼륨 온도 안정화 지원 여부입니다." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -334,8 +348,8 @@ msgstr "노즐이 냉각되기 전에 익스트루더가 비활성이어야하 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" -msgstr "G-code Flavour" +msgid "G-code Flavor" +msgstr "Gcode 유형" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -1017,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "아래층의 수. 바닥 두께로 계산을 할때 이 값은 벽 두께로 계산할 때 이 값은 반올림됩니다." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "초기 하단 레이어" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "빌드 플레이트에서 위를 향하는 초기 하단 레이어 수. 하단 두께로 계산할 경우, 이 값이 전체 값으로 반올림됩니다." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1267,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "날카로운 모서리" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z 경계 위치" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "레이어에서 각 부품의 프린팅이 시작할 위치 근처입니다." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "후면 왼쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "뒤로" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "후면 오른쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "오른쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "전면 오른쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "전면" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "전면 왼쪽" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "왼쪽" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1294,8 +1368,8 @@ msgstr "솔기 코너 환경 설정" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "모델 외곽선의 모서리가 솔기의 위치에 영향을 줄지 여부를 제어합니다. 이것은 코너가 솔기 위치에 영향을 미치지 않는다는 것을 의미하지 않습니다. 솔기 숨기기는 이음새가 안쪽 모서리에서 발생할 가능성을 높입니다. 솔기 노출은 솔기이 외부 모서리에서 발생할 가능성을 높입니다. 솔기 숨기기 또는 노출은 솔기이 내부나 외부 모서리에서 발생할 가능성을 높입니다." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "모델 외곽선의 모서리가 이음선의 위치에 영향을 주는지 여부를 제어합니다. 이것은 모서리가 이음선 위치에 영향을 미치지 않는다는 것을 의미하지 않습니다. 이음선 숨김은 이음선이 안쪽 모서리에서 발생할 가능성을 높입니다. 이음선 노출은 이음선이 외부 모서리에서 발생할 가능성을 높입니다. 이음선 숨김 또는 노출은 이음선이 내부나 외부 모서리에서 발생할 가능성을 높입니다. 스마트 숨김은 내외부 모서리 모두 가능하지만, 적절하다면 내부 모서리를 더욱 빈번하게 선택합니다." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1317,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "솔기 숨기기 또는 노출" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "스마트 숨김" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1329,13 +1408,13 @@ msgstr "활성화 된 경우 z 솔기 좌표는 각 부품의 중심을 기준 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "작은 Z 간격 무시" +msgid "No Skin in Z Gaps" +msgstr "Z 간격에 스킨 없음" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "모델에 수직 간격이 작으면 이 좁은 공간에서 상단 및 하단 스킨을 생성하는 데 약 5%의 추가적인 계산시간을 소비 할 수 있습니다. 이 경우 설정을 해제하십시오." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "모델의 몇 가지 레이어에만 수직 간격이 작을 경우 보통 좁은 공간의 본 레이어 주위에도 스킨이 있어야 합니다. 수직 간격이 매우 작을 경우 스킨을 생성하지 않도록 이 설정을 활성화합니다. 이렇게 하면 프린팅 시간과 슬라이싱 시간은 개선되지만 기술적으로 내부채움이 공기 중에 노출된 상태로 남게 됩니다." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1354,8 +1433,8 @@ msgstr "다림질 사용" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "상단 표면을 한 번 더 이동하지만 재료를 익스트루딩 시키지 않습니다. 이것은 맨 위의 플라스틱을 녹여 부드러운 표면을 만듭니다." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "상단 표면을 한 번 더 이동하지만 재료를 아주 약간만 압출 성형합니다. 따라서 맨 위의 플라스틱이 녹아 부드러운 표면을 만듭니다. 노즐 챔버 내의 압력이 고압으로 유지되므로 표면상의 주름이 재료로 채워집니다." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1447,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "다림질을하는 동안 최대 순간 속도 변화." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "스킨 겹침 비율" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "벽과 스킨-센터라인(종점) 사이의 겹침 양을 스킨 라인과 가장 안쪽 벽의 라인 폭 비율로 조정하십시오. 약간의 겹침으로 벽이 스킨에 확실하게 연결될 수 있습니다. 동일한 스킨 및 벽 라인-폭을 고려할 때 비율이 50%가 넘는다면, 그 지점에서 스킨-익스트루더의 노즐 위치가 이미 벽 중앙을 지나 도달할 수 있기 때문에 이미 스킨이 벽을 지나치고 있을 수 있습니다." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "스킨 겹침" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "벽과 스킨-센터라인(종점) 사이의 겹침 양을 조정하십시오. 약간의 겹침으로 벽이 스킨에 확실하게 연결될 수 있습니다. 동일한 스킨 및 벽 라인-폭을 고려할 때 값이 벽 폭의 절반을 넘는다면, 그 지점에서 스킨-익스트루더의 노즐 위치가 이미 벽 중앙을 지나 도달할 수 있기 때문에 이미 스킨이 벽을 지나치고 있을 수 있습니다." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1612,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "내부채움 패턴이 Y축을 따라 이 거리만큼 이동합니다." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "무작위 충전 시작" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "가장 먼저 프린트되는 충전 선을 무작위로 결정합니다. 이렇게 하면 특정 세그먼트가 가장 강한 세그먼트가 되는 일이 없지만, 추가 이동이 발생하지 않게 됩니다." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1632,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "내부채움 영역 주변에 여분의 벽을 추가합니다. 이러한 벽은 상단/하단 스킨 라인이 늘어지는 것을 줄여줄 수 있습니다. 일부 여분 재료를 사용해도 같은 품질을 유지하는 데 필요한 필요한 상단/하단 스킨 층이 감소한다는 의미입니다.\n이 기능을 올바르게 구성하는 경우 내부채움 다각형 연결과 함께 사용해 이동 또는 리트랙션없이 모든 내부채움을 단일 돌출 경로에 연결할 수 있습니다." +msgstr "" +"내부채움 영역 주변에 여분의 벽을 추가합니다. 이러한 벽은 상단/하단 스킨 라인이 늘어지는 것을 줄여줄 수 있습니다. 일부 여분 재료를 사용해도 같은 품질을 유지하는 데 필요한 필요한 상단/하단 스킨 층이 감소한다는 의미입니다.\n" +"이 기능을 올바르게 구성하는 경우 내부채움 다각형 연결과 함께 사용해 이동 또는 리트랙션없이 모든 내부채움을 단일 돌출 경로에 연결할 수 있습니다." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1664,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "내부채움과 벽 사이의 겹침 정도. 약간 겹치면 벽이 내부채움에 단단히 연결됩니다." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "스킨 겹침 비율" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "벽과 스킨-센터라인(종점) 사이의 겹침 양을 스킨 라인과 가장 안쪽 벽의 라인 폭 비율로 조정하십시오. 약간의 겹침으로 벽이 스킨에 확실하게 연결될 수 있습니다. 동일한 스킨 및 벽 라인-폭을 고려할 때 비율이 50%가 넘는다면, 그 지점에서 스킨-익스트루더의 노즐 위치가 이미 벽 중앙을 지나 도달할 수 있기 때문에 이미 스킨이 벽을 지나치고 있을 수 있습니다." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "스킨 겹침" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "벽과 스킨-센터라인(종점) 사이의 겹침 양을 조정하십시오. 약간의 겹침으로 벽이 스킨에 확실하게 연결될 수 있습니다. 동일한 스킨 및 벽 라인-폭을 고려할 때 값이 벽 폭의 절반을 넘는다면, 그 지점에서 스킨-익스트루더의 노즐 위치가 이미 벽 중앙을 지나 도달할 수 있기 때문에 이미 스킨이 벽을 지나치고 있을 수 있습니다." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1871,8 +1962,8 @@ msgstr "빌드 볼륨 온도" #: fdmprinter.def.json 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인 경우 빌드 볼륨 온도는 조정되지 않습니다." +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" @@ -1984,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "수축 비율 퍼센트." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "결정형 소재" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "이 소재는 가열 시 깔끔하게 분리되는 유형(결정형)입니까? 아니면 길게 얽힌 폴리머 체인을 생성하는 유형(비결정형)입니까?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "흐름 방지 리트랙션 위치" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "흐름이 멈추기 전에 소재가 후퇴해야 하는 거리입니다." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "흐름 방지 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "흐름을 방지하기 위해 필라멘트 스위치 중 소재가 후퇴해야 하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "파단 준비 리트랙션 위치" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "가열 시 파단되기 전까지 필라멘트가 늘어날 수 있는 거리입니다." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "파단 준비 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "리트랙션 시 파단되기 직전까지 필라멘트가 후퇴해야 하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "파단 리트랙션 위치" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "필라멘트가 깔끔하게 파단되기 위해 후퇴해야 하는 거리입니다." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "파단 리트랙션 속도" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "필라멘트가 깔끔하게 파단되기 위해 후퇴해야 하는 속도입니다." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "파단 온도" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "필라멘트가 깔끔하게 파단되는 온도입니다." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1994,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "압출량 보상: 압출 된 재료의 양에 이 값을 곱합니다." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "벽 압출량" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "벽 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "외벽 압출량" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "가장 외측 벽 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "내벽 압출량" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "가장 외측 벽을 제외한 모든 벽 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "상단/하단 압출량" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "상단/하단 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "상단 표면 스킨 압출량" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "프린트 상단 부분 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "내부채움 압출량" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "내부채움 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "스커트/브림 압출량" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "스커트 또는 브림 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "지지대 압출량" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "지지대 구조 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "지지대 인터페이스 압출량" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "지지대 지붕 또는 바닥 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "지지대 지붕 압출량" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "지지대 지붕 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "지지대 바닥 압출량" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "지지대 바닥 라인의 압출 보상입니다." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "프라임 타워 압출량" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "프라임 타워 라인의 압출 보상입니다." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2111,8 +2402,8 @@ msgstr "지지대 후퇴 제한" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "직선으로 지지대 사이를 이동하는 경우 후퇴는 불가능합니다. 이 설정을 사용하면 인쇄 시간은 절약할 수 있지만, 지지 구조물 내에 스트링이 과도하게 증가할 수 있습니다." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "직선으로 지지대 사이를 이동하는 경우 리트랙션은 생략합니다. 이 설정을 사용하면 프린팅 시간은 절약할 수 있지만, 지지대 구조물 내에 스트링이 과도하게 증가할 수 있습니다." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2164,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "노즐 스위치 리트렉션 후 필라멘트가 뒤로 밀리는 속도." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "노즐 스위치 엑스트라 프라임 양" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "노즐 스위치 후 프라이밍하는 추가 소재의 양입니다." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2355,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "스커트와 브림이 프린팅되는 속도입니다. 일반적으로 이것은 초기 레이어 속도에서 수행되지만 때로는 스커트나 브림을 다른 속도로 프린팅하려고 할 수 있습니다." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "최대 Z 속도" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 홉 속도" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "빌드 플레이트가 움직이는 최대 속도. 이 값을 0으로 설정하면 프린팅시 최대 z 속도의 펌웨어 기본값이 사용됩니다." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 홉을 위해 수직 Z 이동이 이루어지는 속도입니다. 빌드 플레이트 또는 기기의 갠트리를 움직이기가 더 어렵기 때문에 프린트 속도보다 낮은 것이 일반적입니다." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2864,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "이동 중 출력물을 피할 때 노즐과 이미 프린팅 된 부분 사이의 거리." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "같은 부분으로 레이어 시작" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "각 레이어에서 같은 지점 근처에서 개체를 프린팅, 새 레이어는 이전 레이어가 끝난 부분에서 프린팅을 하지 않는다.. 이것은 오버행 및 작은 부분을 개선하지만 프린팅 시간을 증가시킵니다." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3280,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "인쇄된 초기 레이어 서포트 구조 선 사이의 거리. 이 설정은 서포트 밀도로 계산됩니다." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "서포트 내부채움 선 방향" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "서포트에 대한 내부채움 패턴 방향. 서포트 내부채움 패턴은 수평면에서 회전합니다." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3416,8 +3707,8 @@ msgstr "서포트 Join 거리" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "X/Y 방향으로서포트 구조물 사이의 최대 거리. 별도의 구조가 이 값보다 가깝게 있으면 구조가 하나로 합쳐집니다." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "X/Y 방향으로 지지대 구조물 사이의 최대 거리입니다. 별도의 구조가 이 값보다 가깝게 있으면 구조가 하나로 합쳐집니다." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3701,8 +3992,8 @@ msgstr "최소 서포트 인터페이스 지역" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "지원 인터페이스 영역에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "지원 인터페이스 다각형의 최소 영역 크기입니다. 이 값보다 작은 영역을 갖는 다각형은 정상적인 지원으로 인쇄됩니다." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3711,8 +4002,8 @@ msgstr "최소 서포트 지붕 지역" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "서포트 지붕에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "서포트 지붕에 대한 최소 면적 크기입니다. 이 값보다 작은 영역을 갖는 다각형은 정상적인 지원으로 인쇄됩니다." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3721,8 +4012,8 @@ msgstr "최소 서포트 바닥 지역" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "서포트 바닥에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "지원 바닥의 최소 면적 크기입니다. 이 값보다 작은 영역을 갖는 다각형은 정상적인 지원으로 인쇄됩니다." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3754,6 +4045,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "서포트 바닥에 적용되는 오프셋 양." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "서포트 인터페이스 선 방향" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다(인터페이스가 상당히 두껍거나 90도라면 45도와 135도를 번갈아 사용)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "서포트 지붕 선 방향" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다(인터페이스가 상당히 두껍거나 90도라면 45도와 135도를 번갈아 사용)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "바닥 지붕 선 방향" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "사용할 정수 선 방향 리스트입니다. 리스트의 요소는 레이어가 진행됨에 따라 순차적으로 사용되며 리스트의 끝에 도달하면 처음부터 다시 시작됩니다. 리스트 항목은 쉼표로 구분되며 전체 리스트는 대괄호 안에 들어 있습니다. 기본값은 빈 목록입니다. 즉 기본 각도인 0도를 사용합니다(인터페이스가 상당히 두껍거나 90도라면 45도와 135도를 번갈아 사용)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3795,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "특수 타워의 지름." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "최소 지름" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "최대 타워 지지 직경" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "특수 서포트 타워에 의해서 서포트 될 작은 영역의 X/Y 방향의 최소 직경." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "특수 지지대 타워에 의해서 지지될 작은 영역의 X/Y 방향의 최대 직경입니다." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3924,7 +4245,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "프린트의 스커트와 첫 번째 레이어 사이의 수평 거리입니다.\n이것은 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." +msgstr "" +"프린트의 스커트와 첫 번째 레이어 사이의 수평 거리입니다.\n" +"이것은 최소 거리입니다. 여러 개의 스커트 선이 이 거리에서 바깥쪽으로 연장됩니다." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4296,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "각 노즐을 교체 한 후에 재료를 프라이밍(Priming)하는 프린팅 옆에 타워를 프린팅하십시오." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "원형 프라임 타워" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "프라임 타워를 원형으로 만들기." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4346,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "프라임 타워 위치의 y 좌표입니다." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "프라임 타워 압출량" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "압출량 보정 : 압출된 재료의 양에 이 값을 곱합니다." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4496,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "첫 번째로 프린팅된 레이어 바로 아래의 비어 있는 레이어를 제거합니다. 이 설정을 해제하면 슬라이싱 허용 오차 설정을 배타 또는 중간으로 설정할 경우 첫 번째 레이어가 비어 있게 될 수 있습니다." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "최대 해상도" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "슬라이딩 후의 선분의 최소 크기입니다. 이 값을 높이면 메쉬의 해상도가 낮아집니다. 그러면 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있으며 처리할 수 없는 메쉬의 디테일이 제거되므로 슬라이드 속도가 높아집니다." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "최대 이동 해상도" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "슬라이딩 후의 이동 선분의 최소 크기입니다. 이 값을 높이면 코너에서 매끄럽게 이동하는 정도가 감소합니다. 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있지만, 모델을 피하기 때문에 정확도가 감소합니다." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "최대 편차" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "최대 해상도 설정에 대한 해상도를 낮추면 최대 편차를 사용할 수 있습니다. 최대 편차를 높이면 프린트의 정확도는 감소하지만, G 코드도 감소합니다. 최대 편차는 최대 해상도의 한계이며, 따라서 두 항목이 충돌하면 항상 최대 편차가 우선합니다." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4658,8 +4991,8 @@ msgstr "부드러운 나선형 윤곽" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "나선형 윤곽선을 부드럽게하여 Z 솔기의 가시성을 줄입니다. (Z- 솔기는 출력물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게하는 경향이 있습니다." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "나선형 윤곽선을 부드럽게 하여 Z 이음선이 잘 보이지 않도록 합니다(Z- 이음선은 출력물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게 만드는 경향이 있습니다." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4871,36 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "레이어가 슬라이스 된, 이 값보다 둘레가 작은 다각형은 필터링됩니다. 값을 낮을수록 슬라이스가 느려지지만, 해상도 메쉬가 높아집니다. 주로 고해상도 SLA 프린터 및 세부 사항이 많은 매우 작은 3D 모델에 적합합니다." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "최대 해상도" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "슬라이딩 후의 선분의 최소 크기입니다. 이 값을 높이면 메쉬의 해상도가 낮아집니다. 그러면 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있으며 처리할 수 없는 메쉬의 디테일이 제거되므로 슬라이드 속도가 높아집니다." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "최대 이동 해상도" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "슬라이딩 후의 이동 선분의 최소 크기입니다. 이 값을 높이면 코너에서 매끄럽게 이동하는 정도가 감소합니다. 프린터가 G 코드를 처리하는 데 필요한 속도를 유지할 수 있지만, 모델을 피하기 때문에 정확도가 감소합니다." - -#: fdmprinter.def.json -msgctxt "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" @@ -5041,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "코스팅(Coasting)시 이동 속도. 압출 경로의 속도에 상대적입니다. 코스팅(Coasting) 이동 중에 보우 덴 튜브의 압력이 떨어지기 때문에 100% 보다 약간 작은 값을 권합니다." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "대체 스킨 회전" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "위쪽/아래쪽 레이어가 프린팅되는 방향을 바꿉니다. 보통 대각선으로 만 프린팅됩니다. 이 설정은 X 전용 및 Y 전용 방향을 추가합니다." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5158,8 +5451,8 @@ msgstr "원추형 서포트 사용" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "실험적 기능 : 오버행보다 하단에서 서포트 영역을 작게 만듭니다." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "오버행보다 하단에서 지지대 영역을 작게 만듭니다." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5223,23 +5516,23 @@ msgstr "각 선분에 있는 임의의 점 사이의 평균 거리입니다. 다 #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "압출 속도 보상 최대 압출 오프셋" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "최대 보상 거리입니다(단위: mm)." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "압출 속도를 보상하기 위해 필라멘트를 이동하는 최대 거리(mm)." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "압출 속도 보상 배율" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "압출 속도를 거리로 변환하는 증배율입니다." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "압출 속도 변화를 보상하기 위해 필라멘트를 이동하는 거리(1초 압출 시 필라멘트가 이동할 수 있는 거리의 백분율)." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5530,13 +5823,13 @@ msgstr "이전 높이와 비교되는 다음 레이어 높이의 차이." #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "어댑티브 레이어 임계 값" +msgid "Adaptive Layers Topography Size" +msgstr "어댑티브 레이어 지형 크기" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "더 작은 레이어를 사용할지 여부에 대한 임계 값. 이 숫자는 레이어의 가장 급한 경사의 탄젠트와 비교됩니다." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "두 개의 인접 레이어 사이의 대상 수평 거리. 이러한 설정을 줄이면 레이어들의 가장자리를 더 가깝게 하도록 보다 얇은 레이어들을 사용하게 됩니다." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5545,8 +5838,8 @@ msgstr "오버행된 벽 각도" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "이 각도를 초과해 오버행된 벽은 오버행된 벽 설정을 사용해 인쇄됩니다. 값이 90인 경우 벽이 오버행된 것으로 간주하지 않습니다." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "이 각도보다 놓은 오버행(경사면)의 벽은 오버행 벽 설정을 사용해 인쇄됩니다. 값이 90이면 오버행(경사면)으로 처리되는 벽이 없습니다. 서포트로 지지되는 오버행(경사면)도 오버행(경사면)으로 처리되지 않습니다." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5898,6 +6191,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "브러시 전체에 헤드를 앞뒤로 이동하는 거리입니다." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "소형 구멍 최대 크기" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "이 수치보다 직경이 작은 구멍 및 부품 윤곽은 소형 피처 속도 기능을 이용해 프린트합니다." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "소형 피처 최대 길이" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "이 수치보다 길이가 짧은 피처 윤곽은 소형 피처 속도 기능을 이용해 프린트합니다." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "소형 피처 속도" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 부착과 정확도가 개선됩니다." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "소형 피처 초기 레이어 속도" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "첫 번째 레이어의 소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 부착과 정확도가 개선됩니다." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5958,6 +6291,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬입니다." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "지원 인터페이스 영역에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "서포트 지붕에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "서포트 바닥에 대한 최소 지역 크기. 이 값보다 작은 지역을 갖는 영역은 생성되지 않습니다." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "대체 스킨 회전" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "위쪽/아래쪽 레이어가 프린팅되는 방향을 바꿉니다. 보통 대각선으로 만 프린팅됩니다. 이 설정은 X 전용 및 Y 전용 방향을 추가합니다." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "압출 속도 보상 최대 압출 오프셋" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "최대 보상 거리입니다(단위: mm)." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "압출 속도 보상 배율" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "압출 속도를 거리로 변환하는 증배율입니다." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "어댑티브 레이어 임계 값" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "더 작은 레이어를 사용할지 여부에 대한 임계 값. 이 숫자는 레이어의 가장 급한 경사의 탄젠트와 비교됩니다." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "이 각도를 초과해 오버행된 벽은 오버행된 벽 설정을 사용해 인쇄됩니다. 값이 90인 경우 벽이 오버행된 것으로 간주하지 않습니다." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 착력과 정확도가 개선됩니다." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "첫 번째 레이어 속도" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "첫 번째 레이어의 소형 피처는 정상적인 프린트 속도의 이 비율로 프린팅됩니다. 프린트 속도가 느리면 접착력과 정확도가 개선됩니다." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "상단 표면을 한 번 더 이동하지만 재료를 익스트루딩 시키지 않습니다. 이것은 맨 위의 플라스틱을 녹여 부드러운 표면을 만듭니다." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "같은 부분으로 레이어 시작" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "각 레이어에서 같은 지점 근처에서 개체를 프린팅, 새 레이어는 이전 레이어가 끝난 부분에서 프린팅을 하지 않는다.. 이것은 오버행 및 작은 부분을 개선하지만 프린팅 시간을 증가시킵니다." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "서포트에 대한 내부채움 패턴 방향. 서포트 내부채움 패턴은 수평면에서 회전합니다." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "최대 해상도 설정에 대한 해상도를 낮추면 최대 편차를 사용할 수 있습니다. 최대 편차를 높이면 프린트의 정확도는 감소하지만, G 코드도 감소합니다." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code Flavour" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "모델 외곽선의 모서리가 솔기의 위치에 영향을 줄지 여부를 제어합니다. 이것은 코너가 솔기 위치에 영향을 미치지 않는다는 것을 의미하지 않습니다. 솔기 숨기기는 이음새가 안쪽 모서리에서 발생할 가능성을 높입니다. 솔기 노출은 솔기이 외부 모서리에서 발생할 가능성을 높입니다. 솔기 숨기기 또는 노출은 솔기이 내부나 외부 모서리에서 발생할 가능성을 높입니다." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "작은 Z 간격 무시" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "모델에 수직 간격이 작으면 이 좁은 공간에서 상단 및 하단 스킨을 생성하는 데 약 5%의 추가적인 계산시간을 소비 할 수 있습니다. 이 경우 설정을 해제하십시오." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "빌드 볼륨에 사용되는 온도입니다. 0인 경우 빌드 볼륨 온도는 조정되지 않습니다." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "직선으로 지지대 사이를 이동하는 경우 후퇴는 불가능합니다. 이 설정을 사용하면 인쇄 시간은 절약할 수 있지만, 지지 구조물 내에 스트링이 과도하게 증가할 수 있습니다." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "최대 Z 속도" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "빌드 플레이트가 움직이는 최대 속도. 이 값을 0으로 설정하면 프린팅시 최대 z 속도의 펌웨어 기본값이 사용됩니다." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "X/Y 방향으로서포트 구조물 사이의 최대 거리. 별도의 구조가 이 값보다 가깝게 있으면 구조가 하나로 합쳐집니다." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "최소 지름" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "특수 서포트 타워에 의해서 서포트 될 작은 영역의 X/Y 방향의 최소 직경." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "원형 프라임 타워" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "프라임 타워를 원형으로 만들기." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "압출량 보정 : 압출된 재료의 양에 이 값을 곱합니다." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "나선형 윤곽선을 부드럽게하여 Z 솔기의 가시성을 줄입니다. (Z- 솔기는 출력물에서는 거의 보이지 않지만 레이어 뷰에서는 여전히 보임). 매끄러움은 표면의 세부 묘사를 흐릿하게하는 경향이 있습니다." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "실험적 기능 : 오버행보다 하단에서 서포트 영역을 작게 만듭니다." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "활성화된 익스트루더의 수" @@ -6163,7 +6640,6 @@ msgstr "파일로부터 로드 하는 경유, 모델에 적용될 변환 행렬 #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "시작과 동시에 실행될 G 코드 명령어 \n" #~ "." @@ -6176,7 +6652,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 8b1cb9f21d..2f9ffe5802 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Dutch\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Dutch , Dutch \n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Machine-instellingen" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code-bestand" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter ondersteunt geen non-tekstmodus." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Bereid voorafgaand aan het exporteren G-code voor." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D-modelassistent" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,63 +64,56 @@ 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

" +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" msgid "Update Firmware" msgstr "Firmware bijwerken" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Actieve instellingen platmaken" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF-bestand" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profiel is platgemaakt en geactiveerd." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB-printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Printen via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Via USB Printen" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Aangesloten via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Er wordt momenteel via USB geprint. Wanneer u Cura afsluit, wordt het printen gestopt. Weet u zeker dat u wilt afsluiten?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G-bestand" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Er wordt nog een print afgedrukt. Cura kan pas een nieuwe print via USB starten zodra de vorige print is voltooid." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Schrijft X3g naar bestanden" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g-bestand" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Bezig met printen" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -156,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Opslaan op Verwisselbaar Station {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Er zijn geen bestandsindelingen beschikbaar om te schrijven!" @@ -193,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Kan niet opslaan op verwisselbaar station {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Fout" @@ -225,9 +217,9 @@ msgstr "Verwisselbaar station {0} uitwerpen" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Waarschuwing" @@ -254,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Verwisselbaar Station" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Via het netwerk verbonden." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Verificatiestatus" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "De toegangsaanvraag opnieuw verzenden" - -#: /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: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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -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:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Gegevens Verzenden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Annuleren" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchroniseren met de printer" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Via het netwerk verbonden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Gegevens verzonden" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "In monitor weergeven" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Leeg" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Onbekend" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Printen via Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Printen via Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Verbonden via Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Cloud-fout" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Kan de gegevens niet uploaden naar de printer." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "morgen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "vandaag" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Uploaden via Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Aan de slag" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Verbonden!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Uw verbinding controleren" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Verbinding Maken via Netwerk" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Cura-instellingengids" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Printen via netwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Printen via netwerk" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Via het netwerk verbonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Wacht tot de huidige taak is verzonden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Printfout" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Nieuwe cloudprinters gevonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Er zijn nieuwe printers gedetecteerd die zijn verbonden met uw account. U kunt ze vinden in uw lijst met gedetecteerde printers." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Dit bericht niet meer weergeven" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "U probeert verbinding te maken met {0}, maar deze is niet de host van een groep. U kunt de webpagina bezoeken om deze als groephost te configureren." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Geen groephost" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Groep configureren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Verzend en controleer overal printtaken met uw Ultimaker-account." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Verbinden met Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Aan de slag" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Printtaak verzenden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Printtaak naar printer aan het uploaden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "De printtaak is naar de printer verzonden." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Gegevens verzonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "U probeert verbinding te maken met een printer waarop Ultimaker Connect niet wordt uitgevoerd. Werk de printer bij naar de nieuwste firmware." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Uw printer bijwerken" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura heeft materiaalprofielen gedetecteerd die nog niet op de hostprinter van groep {0} zijn geïnstalleerd." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "De materialen worden naar de printer verzonden" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Kan de gegevens niet uploaden naar de printer." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Netwerkfout" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "morgen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "vandaag" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Printen via Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Printen via Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Verbonden via Cloud" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Controleren" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Geen toegang tot update-informatie." @@ -621,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Laagweergave" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Als draadprinten is ingeschakeld, geeft Cura lagen niet nauwkeurig weer" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Simulatieweergave" @@ -681,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF-afbeelding" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Gecomprimeerde driehoeksnet openen" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF-binair" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF-ingesloten JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford-driehoeksformaat" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Gecomprimeerde COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -745,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Instellingen per Model configureren" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Aanbevolen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Aangepast" @@ -761,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF-bestand" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Projectbestand {0} bevat een onbekend type machine {1}. Kan de machine niet importeren. In plaats daarvan worden er modellen geïmporteerd." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Projectbestand Openen" @@ -788,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G-bestand" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code parseren" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Details van de G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Zorg ervoor dat de G-code geschikt is voor uw printer en de printerconfiguratie voordat u het bestand verzendt. Mogelijk is de weergave van de G-code niet nauwkeurig." @@ -853,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura-profiel" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Profielassistent" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Profielassistent" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -883,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Voorbeeld" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -899,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Inloggen mislukt" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Niet ondersteund" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Het Bestand Bestaat Al" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Het bestand {0} bestaat al. Weet u zeker dat u dit bestand wilt overschrijven?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Ongeldige bestands-URL:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "De instellingen zijn gewijzigd zodat deze overeenkomen met de huidige beschikbaarheid van extruders:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "De instellingen zijn bijgewerkt" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extruder(s) uitgeschakeld" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Onbekend" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Kan het profiel niet exporteren als {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Kan het profiel niet exporteren als {0}: Invoegtoepassing voor de schrijver heeft een fout gerapporteerd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Het profiel is geëxporteerd als {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "De export is voltooid" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Kan het profiel niet importeren uit {0} voordat een printer toegevoegd is." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Er is geen aangepast profiel om in het bestand {0} te importeren" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Kan het profiel niet importeren uit {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Dit profiel {0} bevat incorrecte gegevens. Kan het profiel niet importeren." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "De machine die is vastgelegd in het profiel {0} ({1}), komt niet overeen met uw huidige machine ({2}). Kan het profiel niet importeren." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Kan het profiel niet importeren uit {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Het profiel {0} is geïmporteerd" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Het bestand {0} bevat geen geldig profiel." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Het profiel {0} heeft een onbekend bestandstype of is beschadigd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Aangepast profiel" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Er ontbreekt een kwaliteitstype in het profiel." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1099,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Overig(e)" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Vooraf geslicet bestand {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1119,73 +953,120 @@ msgstr "Groepsnummer {group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Sluiten" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Toevoegen" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Annuleren" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visueel" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Het visuele profiel is ontworpen om visuele prototypen en modellen te printen met als doel een hoge visuele en oppervlaktekwaliteit te creëren." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Het engineeringprofiel is ontworpen om functionele prototypen en onderdelen voor eindgebruik te printen met als doel een grotere precisie en nauwere toleranties." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Ontwerp" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Het ontwerpprofiel is ontworpen om initiële prototypen en conceptvalidatie te printen met als doel de printtijd aanzienlijk te verkorten." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Niet overschreven" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Aangepaste profielen" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Alle Ondersteunde Typen ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Alle Bestanden (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Onbekend" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Beschikbare netwerkprinters" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Aangepast materiaal" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Aangepast" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Kan de onderstaande printer(s) niet verbinden omdat deze deel uitmaakt/uitmaken van een groep" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Beschikbare netwerkprinters" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "De hoogte van het bouwvolume is verminderd wegens de waarde van de instelling “Printvolgorde”, om te voorkomen dat de rijbrug tegen geprinte modellen botst." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Werkvolume" @@ -1210,39 +1091,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Kan het antwoord niet lezen." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Kan de Ultimaker-accountserver niet bereiken." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Verleen de vereiste toestemmingen toe bij het autoriseren van deze toepassing." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Er heeft een onverwachte gebeurtenis plaatsgevonden bij het aanmelden. Probeer het opnieuw." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Objecten verveelvoudigen en plaatsen" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Objecten plaatsen" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Kan binnen het werkvolume niet voor alle objecten een locatie vinden" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Object plaatsen" @@ -1278,7 +1159,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" @@ -1311,7 +1197,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" @@ -1383,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Machines laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Voorkeuren instellen..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Scene instellen..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Interface laden..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Er kan slechts één G-code-bestand tegelijkertijd worden geladen. Het importeren van {0} is overgeslagen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Kan geen ander bestand openen als G-code wordt geladen. Het importeren van {0} is overgeslagen" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Het geselecteerde model is te klein om te laden." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Printerinstellingen" @@ -1442,15 +1336,15 @@ msgstr "X (Breedte)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1482,50 +1376,55 @@ msgstr "Verwarmd bed" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Verwarmde werkvolume" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Versie G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Printkopinstellingen" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Rijbrughoogte" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Aantal extruders" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "Start G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "Eind G-code" @@ -1555,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozzle-offset X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "Start-G-code van extruder" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Eind-G-code van extruder" @@ -1581,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Geïnstalleerd" @@ -1596,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "beoordelingen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Invoegtoepassingen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materialen" @@ -1615,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1718,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Cura sluiten" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Community-bijdragen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Community-invoegtoepassingen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Standaard materialen" @@ -1769,7 +1668,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" @@ -1786,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "Functies" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibiliteit" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Machine" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Platform" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Supportstructuur" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Kwaliteit" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Technisch informatieblad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Veiligheidsinformatieblad" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Richtlijnen voor printen" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Website" @@ -1906,70 +1828,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Firmware-update mislukt door ontbrekende firmware." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Printer beheren" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Glas" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "De webcam is niet beschikbaar omdat u een cloudprinter controleert." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Laden..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Niet beschikbaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Onbereikbaar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Inactief" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Zonder titel" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anoniem" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Hiervoor zijn configuratiewijzigingen vereist" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Details" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Niet‑beschikbare printer" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Eerst beschikbaar" @@ -1979,209 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "In wachtrij" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Er staan geen afdruktaken in de wachtrij. Slice een taak en verzend deze om er een toe te voegen." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Printtaken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Totale printtijd" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Wachten op" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Alle taken zijn geprint." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Printgeschiedenis weergeven" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Verbinding Maken met Printer in het Netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om G-code-bestanden naar de printer over te zetten.\n\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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selecteer uw printer in de onderstaande lijst:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Bewerken" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Verwijderen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Vernieuwen" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Raadpleeg de handleiding voor probleemoplossing bij printen via het netwerk als uw printer niet in de lijst wordt vermeld" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Type" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Firmwareversie" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Deze printer is niet ingesteld voor het hosten van een groep printers." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Deze printer is de host voor een groep van %1 printers." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "De printer op dit adres heeft nog niet gereageerd." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Verbinden" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Ongeldig IP-adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Voer een geldig IP-adres in." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Printeradres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." +msgid "Enter the IP address of your printer on the network." +msgstr "Voer het IP-adres van uw printer in het netwerk in." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Voltooit %1 om %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Printen" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Printen via netwerk" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Printen" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Printerselectie" @@ -2270,65 +2184,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Overschrijven" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminium" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Verbinding maken met een printer" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2537,70 +2446,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Effenen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Rastertype" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normaal model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Printen als supportstructuur" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Supportstructuur niet laten overlappen met andere modellen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Instellingen aanpassen voor overlapping met andere modellen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Instellingen aanpassen voor vulling van andere modellen" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Instellingen selecteren" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Instellingen Selecteren om Dit Model Aan te Passen" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filteren..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Alles weergeven" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Rastertype" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normaal model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Printen als supportstructuur" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Instellingen aanpassen voor overlapping" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Supportstructuur niet laten overlappen" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Alleen vulling" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Instellingen selecteren" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Project openen" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Bestaand(e) bijwerken" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Nieuw maken" @@ -2627,6 +2535,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Bijwerken" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Nieuw maken" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2640,7 +2553,7 @@ msgid "Printer Group" msgstr "Printergroep" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profielinstellingen" @@ -2651,75 +2564,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Hoe dient het conflict in het profiel te worden opgelost?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Naam" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Niet in profiel" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 overschrijving" msgstr[1] "%1 overschrijvingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Afgeleide van" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 overschrijving" msgstr[1] "%1, %2 overschrijvingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Materiaalinstellingen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Hoe dient het materiaalconflict te worden opgelost?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Zichtbaarheid instellen" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modus" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Zichtbare instellingen:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 van %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Als u een project laadt, worden alle modellen van het platform gewist." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Openen" @@ -2826,48 +2745,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Maak elke dag dat Cura wordt gestart, automatisch een back-up." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Niet ondersteund" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Exporteren" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Tip" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Print experiment" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Checklist" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson-blok" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2901,7 +2778,7 @@ msgstr "Selecteer eventuele upgrades die op deze Ultimaker Original zijn uitgevo #: /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)" +msgstr "Verwarmd Platform (officiële kit of zelf gebouwd)" #: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119 msgctxt "@label:MonitorStatus" @@ -2953,170 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Weet u zeker dat u het printen wilt afbreken?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informatie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Diameterwijziging bevestigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Het nieuwe filament is ingesteld op %1 mm. Dit is niet compatibel met de huidige extruder. Wilt u verder gaan?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Naam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Merk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Type Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Kleur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Eigenschappen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Dichtheid" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diameter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Kostprijs Filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Gewicht filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Lengte filament" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Kostprijs per meter" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Dit materiaal is gekoppeld aan %1 en deelt hiermee enkele eigenschappen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Materiaal ontkoppelen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Beschrijving" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Gegevens Hechting" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Instellingen voor printen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Activeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Exporteren" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Printer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Verwijderen Bevestigen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Weet u zeker dat u %1 wilt verwijderen? Deze bewerking kan niet ongedaan worden gemaakt!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Materiaal Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Kon materiaal %1 niet importeren: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Materiaal %1 is geïmporteerd" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Materiaal Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Exporteren van materiaal naar %1 is mislukt: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Materiaal is geëxporteerd naar %1" @@ -3131,414 +3014,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Alles aanvinken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Berekend" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Instelling" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profiel" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Huidig" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Eenheid" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "U moet de toepassing opnieuw starten voordat deze wijzigingen van kracht worden." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Automatisch slicen bij wijzigen van instellingen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatisch slicen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Gedrag kijkvenster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Geef niet-ondersteunde gedeelten van het model een rode markering. Zonder ondersteuning zullen deze gedeelten niet goed worden geprint." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Overhang weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Verplaatst de camera zodanig dat wanneer een model wordt geselecteerd, het model in het midden van het beeld wordt weergegeven" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Camera centreren wanneer een item wordt geselecteerd" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Moet het standaard zoomgedrag van Cura worden omgekeerd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Keer de richting van de camerazoom om." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Moet het zoomen in de richting van de muis gebeuren?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Zoomen in de richting van de muis wordt niet ondersteund in het orthografische perspectief." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Zoomen in de richting van de muis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Moeten modellen op het platform zodanig worden verplaatst dat ze elkaar niet meer doorsnijden?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellen gescheiden houden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Moeten modellen in het printgebied omlaag worden gebracht zodat ze het platform raken?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Modellen automatisch op het platform laten vallen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Toon het waarschuwingsbericht in de G-code-lezer." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Waarschuwingsbericht in de G-code-lezer" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Moet de laag in de compatibiliteitsmodus worden geforceerd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Compatibiliteitsmodus voor laagweergave forceren (opnieuw opstarten vereist)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Moet Cura openen op de locatie waar het gesloten werd?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Herstel de vensterpositie bij het opstarten" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Welk type cameraweergave moet worden gebruikt?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Cameraweergave:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspectief" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Orthografisch" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Bestanden openen en opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Moeten modellen worden geschaald naar het werkvolume als ze te groot zijn?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Grote modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Een model wordt mogelijk extreem klein weergegeven als de eenheden bijvoorbeeld in meters zijn in plaats van in millimeters. Moeten dergelijke modellen worden opgeschaald?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Extreem kleine modellen schalen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Moeten modellen worden geselecteerd nadat ze zijn geladen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Modellen selecteren wanneer ze geladen zijn" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Moet er automatisch een op de printernaam gebaseerde voorvoegsel aan de naam van de printtaak worden toegevoegd?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Machinevoorvoegsel toevoegen aan taaknaam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Dient er een samenvatting te worden weergegeven wanneer een projectbestand wordt opgeslagen?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Dialoogvenster voor samenvatting weergeven tijdens het opslaan van een project" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Standaardgedrag tijdens het openen van een projectbestand" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Standaardgedrag tijdens het openen van een projectbestand: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Altijd vragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Altijd als project openen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Altijd modellen importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Wanneer u wijzigingen hebt aangebracht aan een profiel en naar een ander profiel wisselt, wordt een dialoogvenster weergegeven waarin u wordt gevraagd of u de aanpassingen wilt behouden. U kunt ook een standaardgedrag kiezen en het dialoogvenster nooit meer laten weergeven." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Standaardgedrag voor gewijzigde instellingen wanneer er naar een ander profiel wordt overgeschakeld: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Altijd vragen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Gewijzigde instellingen altijd verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Gewijzigde instellingen altijd naar nieuw profiel overbrengen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Moet Cura op updates controleren wanneer het programma wordt gestart?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Bij starten op updates controleren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Mogen anonieme gegevens over uw print naar Ultimaker worden verzonden? Opmerking: er worden geen modellen, IP-adressen of andere persoonlijk identificeerbare gegevens verzonden of opgeslagen." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonieme) printgegevens verzenden" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Meer informatie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Hernoemen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profielen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Profiel Maken" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Geef een naam op voor dit profiel." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profiel Dupliceren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profiel Hernoemen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profiel Importeren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profiel Exporteren" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Printer: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Standaardprofielen" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Profiel bijwerken met huidige instellingen/overschrijvingen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Huidige wijzigingen verwijderen" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Dit profiel gebruikt de standaardinstellingen die door de printer zijn opgegeven, dus er zijn hiervoor geen instellingen/overschrijvingen in de onderstaande lijst." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Uw huidige instellingen komen overeen met het geselecteerde profiel." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Algemene Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Marktplaats" @@ -3598,36 +3489,36 @@ msgstr "Zonder titel" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Waarde naar alle extruders kopiëren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Alle gewijzigde waarden naar alle extruders kopiëren" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Deze instelling verbergen" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Deze instelling zichtbaar houden" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Zichtbaarheid Instelling Configureren..." @@ -3638,55 +3529,71 @@ 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:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Deze instelling wordt altijd door alle extruders gedeeld. Als u hier de instelling wijzigt, wordt de waarde voor alle extruders gewijzigd." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "De waarde wordt afgeleid van de waarden per extruder " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "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:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "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/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Aanbevolen" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Aangepast" @@ -3711,36 +3618,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Genereer structuren om delen van het model met overhang te ondersteunen. Zonder deze structuren zakken dergelijke delen in tijdens het printen." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Laaghoogte" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "U hebt enkele profielinstellingen aangepast. Ga naar de aangepaste modus als u deze wilt wijzigen." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Er is momenteel een aangepast profiel actief. Als u de kwaliteitsschuifregelaar wilt gebruiken, kiest u een standaard kwaliteitsprofiel op het tabblad Aangepast" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3751,18 +3643,31 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Uit" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimenteel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Profiel" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Sommige waarden of aanpassingen van instellingen zijn anders dan de waarden die in het profiel zijn opgeslagen.\n\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/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Aangepaste profielen" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" @@ -3799,59 +3704,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extruder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "De doeltemperatuur van de hot-end. De hot-end wordt verwarmd of afgekoeld totdat deze temperatuur bereikt is. Als deze waarde ingesteld is op 0, wordt de verwarming van de hot-end uitgeschakeld." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "De huidige temperatuur van dit hotend." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "De temperatuur waarnaar het hotend moet worden voorverwarmd." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Annuleren" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Voorverwarmen" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Verwarm het hotend voordat u gaat printen. U kunt doorgaan met het aanpassen van uw print terwijl het hotend wordt verwarmd. Zo hoeft u niet te wachten totdat het hotend is opgewarmd wanneer u gereed bent om te printen." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "De kleur van het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Het materiaal in deze extruder." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "De nozzle die in deze extruder geplaatst is." @@ -3891,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favorieten" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Standaard" @@ -3916,42 +3821,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Printer" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Instellen als Actieve Extruder" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Extruder inschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Extruder uitschakelen" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Platform" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profiel" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Camerapositie" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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" @@ -3971,17 +3881,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Instelling voor zichtbaarheid beheren..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Opslaan..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Exporteren..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Selectie Exporteren..." @@ -4010,12 +3920,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Configuraties" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Configuratie selecteren" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Configuraties" @@ -4045,12 +3955,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Ingeschakeld" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Gebruik lijm bij deze combinatie van materialen voor een betere hechting." @@ -4070,22 +3980,22 @@ 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" @@ -4095,6 +4005,11 @@ msgctxt "@label" msgid "View type" msgstr "Type weergeven" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lijst met objecten" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4126,7 +4041,10 @@ msgid "" "- Send print jobs to Ultimaker printers outside your local network\n" "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" "- Get exclusive access to print profiles from leading brands" -msgstr "- Printtaken verzenden naar Ultimaker-printers buiten uw lokale netwerk\n- Ultimaker Cura-instellingen opslaan in de cloud zodat u ze overal kunt gebruiken\n- Exclusieve toegang verkrijgen tot printprofielen van toonaangevende merken" +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" @@ -4143,32 +4061,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Geen kostenraming beschikbaar" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Annuleren" @@ -4203,233 +4126,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Vooraf ingestelde printers" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Marktplaats" @@ -4444,49 +4372,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Instellingen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura afsluiten" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Weet u zeker dat u Cura wilt verlaten?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Package installeren" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Bestand(en) openen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Binnen de door u geselecteerde bestanden zijn een of meer G-code-bestanden aangetroffen. U kunt maximaal één G-code-bestand tegelijk openen. Selecteer maximaal één bestand als u dit wilt openen als G-code-bestand." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Printer Toevoegen" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Nieuwe functies" @@ -4508,7 +4436,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" @@ -4555,139 +4485,141 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Over Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "versie: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "End-to-end-oplossing voor fused filament 3D-printen." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura is ontwikkeld door Ultimaker B.V. in samenwerking met de community.\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 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Grafische gebruikersinterface (GUI)" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Toepassingskader" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "G-code-generator" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "InterProcess Communication-bibliotheek" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Programmeertaal" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI-kader" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Bindingen met GUI-kader" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Bindingenbibliotheek C/C++" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Indeling voor gegevensuitwisseling" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Ondersteuningsbibliotheek voor wetenschappelijke berekeningen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Ondersteuningsbibliotheek voor snellere berekeningen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Ondersteuningsbibliotheek voor het verwerken van STL-bestanden" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Ondersteuningsbibliotheek voor het verwerken van tweedimensionale objecten" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Ondersteuningsbibliotheek voor het verwerken van driehoekig rasters" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Ondersteuningsbibliotheek voor de analyse van complexe netwerken" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Ondersteuningsbibliotheek voor het verwerken van 3MF-bestanden" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Ondersteuningsbibliotheek voor bestandsmetadata en streaming" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Seriële-communicatiebibliotheek" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConf-detectiebibliotheek" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Bibliotheek met veelhoeken" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Python HTTP-bibliotheek" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Lettertype" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG-pictogrammen" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Implementatie van Linux-toepassing voor kruisdistributie" @@ -4707,32 +4639,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Project opslaan" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Platform" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 &materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Materiaal" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Bij opnieuw opslaan projectsamenvatting niet weergeven" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Opslaan" @@ -4908,12 +4835,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Probleemoplossing" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Printernaam" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Voer een naam in voor uw printer" @@ -4963,27 +4890,39 @@ 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\nUltimaker Cura. Dit duurt slechts even." +msgstr "" +"Volg deze stappen voor het instellen van\n" +"Ultimaker Cura. Dit duurt slechts even." #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 msgctxt "@button" msgid "Get started" msgstr "Aan de slag" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "Alleen huidig platform weergeven" +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D-weergave" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Weergave voorzijde" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Weergave bovenzijde" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Linkeraanzicht" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Rechteraanzicht" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5045,16 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Modelcontrole" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Dump de inhoud van alle instellingen naar een HTML-bestand." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Godmodus" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5065,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Firmware-updater" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." +msgid "Provides support for reading AMF files." +msgstr "Biedt ondersteuning voor het lezen van AMF-bestanden." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Profielvlakker" +msgid "AMF Reader" +msgstr "AMF-lezer" #: USBPrinting/plugin.json msgctxt "description" @@ -5085,16 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB-printen" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Hiermee slaat u de resulterende slice op als X3G-bestand, om printers te ondersteunen die deze indeling lezen (Malyan, Makerbot en andere Sailfish-gebaseerde printers)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G-schrijver" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5137,23 +5056,13 @@ msgstr "Invoegtoepassing voor Verwijderbaar uitvoerapparaat" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker 3-printers." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker-netwerkprinters." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3-netwerkverbinding" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker-netwerkverbinding" #: MonitorStage/plugin.json msgctxt "description" @@ -5285,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Versie-upgrade van 3.3 naar 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.3 naar Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Versie-upgrade van 4.3 naar 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5345,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Versie-upgrade van 3.0 naar 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.1 naar Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Versie-upgrade van 4.1 naar 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5375,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Versie-upgrade van 2.2 naar 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Hiermee worden configuraties bijgewerkt van Cura 4.2 naar Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Versie-upgrade van 4.2 naar 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5385,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Afbeeldinglezer" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Biedt ondersteuning voor het lezen van modelbestanden." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh-lezer" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5415,16 +5364,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF-lezer" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "Hiermee leest u SVG-bestanden als gereedschapsbanen, voor probleemoplossing in printerverplaatsingen." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG-gereedschapsbaanlezer" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5465,16 +5404,6 @@ 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." @@ -5515,6 +5444,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura-profiellezer" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Actieve instellingen platmaken" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profiel is platgemaakt en geactiveerd." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Schrijft X3g naar bestanden" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g-bestand" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G-bestand" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Gecomprimeerde driehoeksnet openen" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Profielassistent" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Profielassistent" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Opnieuw proberen" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Supportstructuur niet laten overlappen met andere modellen" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Instellingen aanpassen voor overlapping met andere modellen" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Instellingen aanpassen voor vulling van andere modellen" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Bestaand(e) bijwerken" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Niet ondersteund" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Vorige" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Tip" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Print experiment" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Checklist" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Selecteer eventuele upgrades die op deze Ultimaker 2 zijn uitgevoerd." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson-blok" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Cameraweergave: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Functionaliteit voor meerdere platformen gebruiken" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Functionaliteit voor meerdere platformen gebruiken (opnieuw opstarten vereist)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Standaardprofielen" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "instellingen zoeken" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Laaghoogte" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Dit kwaliteitsprofiel is niet beschikbaar voor uw huidige materiaal- en nozzleconfiguratie. Breng hierin wijzigingen aan om gebruik van dit kwaliteitsprofiel mogelijk te maken." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Er is momenteel een aangepast profiel actief. Als u de kwaliteitsschuifregelaar wilt gebruiken, kiest u een standaard kwaliteitsprofiel op het tabblad Aangepast" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Platform" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profiel" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Platform" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Dump de inhoud van alle instellingen naar een HTML-bestand." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Godmodus" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Hiermee maakt u een afgevlakte versie van het gewijzigde profiel." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Profielvlakker" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Maakt het fabrikanten mogelijk nieuwe materiaal- en kwaliteitsprofielen aan te maken met behulp van een drop-in-gebruikersinterface." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Profielassistent afdrukken" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Via het netwerk verbonden." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Via het netwerk verbonden. Keur de aanvraag goed op de printer." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Via het netwerk verbonden. Kan de printer niet beheren." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Er is een toegangsaanvraag voor de printer verstuurd. Keur de aanvraag goed op de printer" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Verificatiestatus" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Verificatiestatus" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "De toegangsaanvraag opnieuw verzenden" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Toegang tot de printer is geaccepteerd" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Kan geen toegang verkrijgen om met deze printer te printen. Kan de printtaak niet verzenden." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Toegang aanvragen" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Toegangsaanvraag naar de printer verzenden" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Er kan geen nieuwe taak worden gestart." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Er is een probleem met de configuratie van de Ultimaker waardoor het niet mogelijk is het printen te starten. Los het probleem op voordat u verder gaat." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "De configuratie komt niet overeen" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Weet u zeker dat u met de geselecteerde configuratie wilt printen?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "De configuratie of kalibratie van de printer komt niet overeen met de configuratie van Cura. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Het verzenden van nieuwe taken is (tijdelijk) geblokkeerd. Nog bezig met het verzenden van de vorige printtaak." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "De gegevens worden naar de printer verzonden" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Gegevens Verzenden" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Er is geen PrintCore geladen in de sleuf {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Er is geen materiaal geladen in de sleuf {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Er is een afwijkende PrintCore (Cura: {cura_printcore_name}, printer: {remote_printcore_name}) geselecteerd voor de extruder {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Afwijkend materiaal (Cura: {0}, Printer: {1}) geselecteerd voor de extruder {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchroniseren met de printer" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Wilt u uw huidige printerconfiguratie gebruiken in Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "De PrintCores en/of materialen in de printer wijken af van de PrintCores en/of materialen in uw huidige project. Slice voor het beste resultaat altijd voor de PrintCores en materialen die in de printer zijn ingevoerd." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "In monitor weergeven" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "Printer '{printer_name}' is klaar met het printen van '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "De printtaak '{job_name}' is voltooid." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Print klaar" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Leeg" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Onbekend" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Cloud-fout" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Kan de printtaak niet exporteren." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Er is een fout opgetreden tijdens het verbinden met de cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Uploaden via Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Verbinden met Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Niet opnieuw vragen voor deze printer." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "U kunt nu overal vandaan printtaken verzenden en controleren met uw Ultimaker-account." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Verbonden!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Uw verbinding controleren" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "De machine die is vastgelegd in het profiel {0} ({1}), komt niet overeen met uw huidige machine ({2}). Kan het profiel niet importeren." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Kan het profiel niet importeren uit {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Bestaande verbinding" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Deze printer/groep is al aan Cura toegevoegd. Selecteer een andere printer/groep." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Voer het IP-adres of de hostnaam van de printer in het netwerk in." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Verbinding maken met een printer" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura-instellingengids" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Zoomen in de richting van de muis wordt niet ondersteund in het orthogonale perspectief." + +#~ msgid "Orthogonal" +#~ msgstr "Orthografisch" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Hiermee beheert u netwerkverbindingen naar Ultimaker 3-printers." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3-netwerkverbinding" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Biedt extra informatie en uitleg over instellingen in Cura, voorzien van afbeeldingen en animaties." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Instellingengids" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura-instellingengids" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "De instellingen zijn gewijzigd zodat deze overeenkomen met de huidige beschikbaarheid van de extruders: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Gebruikersbeschrijving" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Deze opties zijn niet beschikbaar omdat u een cloudprinter controleert." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ga naar Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Alle taken zijn geprint." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Printgeschiedenis weergeven" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Als u rechtstreeks via het netwerk wilt printen naar de printer, moet u ervoor zorgen dat de printer met een netwerkkabel is verbonden met het netwerk of moet u verbinding maken met de printer via het wifi-netwerk. Als u geen verbinding maakt tussen Cura en de printer, kunt u een USB-station gebruiken om G-code-bestanden naar de printer over te zetten.\n" +#~ "\n" +#~ "Selecteer uw printer in de onderstaande lijst:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Controleer of de printer verbonden is:\n" +#~ "- Controleer of de printer ingeschakeld is.\n" +#~ "- Controleer of de printer verbonden is met het netwerk." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Alleen huidig platform weergeven" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Schikken naar alle platformen" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Huidig platform schikken" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Hiermee slaat u de resulterende slice op als X3G-bestand, om printers te ondersteunen die deze indeling lezen (Malyan, Makerbot en andere Sailfish-gebaseerde printers)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G-schrijver" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Hiermee leest u SVG-bestanden als gereedschapsbanen, voor probleemoplossing in printerverplaatsingen." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG-gereedschapsbaanlezer" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Wijzigingenlogboek" @@ -5721,7 +6093,6 @@ msgstr "Cura-profiellezer" #~ "- 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" @@ -5748,7 +6119,6 @@ msgstr "Cura-profiellezer" #~ "\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." @@ -5961,7 +6331,6 @@ msgstr "Cura-profiellezer" #~ "Print Setup disabled\n" #~ "G-code files cannot be modified" #~ msgstr "" - #~ "Instelling voor printen uitgeschakeld\n" #~ "G-code-bestanden kunnen niet worden aangepast" @@ -6214,7 +6583,6 @@ msgstr "Cura-profiellezer" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Kan niet exporteren met de kwaliteit \"{}\"!\n" #~ "Instelling teruggezet naar \"{}\"." @@ -6391,7 +6759,6 @@ msgstr "Cura-profiellezer" #~ "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" @@ -6408,7 +6775,6 @@ msgstr "Cura-profiellezer" #~ "\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." @@ -6419,7 +6785,6 @@ msgstr "Cura-profiellezer" #~ "\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." @@ -6444,7 +6809,6 @@ msgstr "Cura-profiellezer" #~ "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" @@ -6459,7 +6823,6 @@ msgstr "Cura-profiellezer" #~ "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" @@ -6564,7 +6927,6 @@ msgstr "Cura-profiellezer" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Open de map\n" #~ "met macro en pictogram" @@ -6863,7 +7225,6 @@ msgstr "Cura-profiellezer" #~ "\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." @@ -6874,7 +7235,6 @@ msgstr "Cura-profiellezer" #~ "\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." @@ -6909,7 +7269,6 @@ msgstr "Cura-profiellezer" #~ "

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" #~ " " @@ -7076,7 +7435,6 @@ msgstr "Cura-profiellezer" #~ "

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" #~ " " @@ -7223,7 +7581,6 @@ msgstr "Cura-profiellezer" #~ "

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" #~ " " @@ -7266,7 +7623,6 @@ msgstr "Cura-profiellezer" #~ "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?" @@ -7794,7 +8150,6 @@ msgstr "Cura-profiellezer" #~ 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" @@ -7824,7 +8179,6 @@ msgstr "Cura-profiellezer" #~ "

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 dc2164aa24..9d264238b7 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Dutch\n" diff --git a/resources/i18n/nl_NL/fdmprinter.def.json.po b/resources/i18n/nl_NL/fdmprinter.def.json.po index f8ed41154b..d145a50f7c 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Dutch\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Dutch , Dutch \n" "Language: nl_NL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -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" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Hiermee geeft u aan of een verwarmd platform aanwezig is." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Heeft temperatuurstabilisatie van werkvolume" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Of de machine in staat is de temperatuur van het werkvolume te stabiliseren." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -333,7 +347,7 @@ msgstr "De minimale tijd die een extruder inactief moet zijn, voordat de nozzle #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "Versie G-code" #: fdmprinter.def.json @@ -1016,6 +1030,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Het aantal bodemlagen. Wanneer deze waarde wordt berekend aan de hand van de dikte van de bodem, wordt deze afgerond naar een geheel getal." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Eerste onderste lagen" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Het aantal initiële onderste lagen, vanaf de bouwplaat naar boven. Wanneer deze waarde wordt berekend aan de hand van de dikte van de bodem, wordt deze" +" afgerond naar een geheel getal." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Scherpste hoek" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z-naadpositie" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "De positie nabij waar met het printen van elk deel van een laag moet worden begonnen." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Linksachter" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Achter" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Rechtsachter" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Rechts" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Rechtsvoor" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Voor" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Linksvoor" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Links" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1368,8 @@ msgstr "Voorkeur van naad en hoek" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad zichtbaar maken is de kans groter dat de naad op een buitenhoek komt. Met Naad verbergen of Naad zichtbaar maken is de kans groter dat de naad op een binnen- of buitenhoek komt." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad Verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad Zichtbaar Maken is de kans groter dat de naad op een buitenhoek komt. Met Naad Verbergen of Naad Zichtbaar Maken is de kans groter dat de naad op een binnen- of buitenhoek komt. Met Slim Verbergen zijn zowel binnen- als buitenhoeken mogelijk, maar wordt er vaker (indien van toepassing) gebruikgemaakt van binnenhoeken." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Naad verbergen of zichtbaar maken" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Slim verbergen" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1408,13 @@ msgstr "Als deze optie ingeschakeld is, zijn de Z-naadcoördinaten relatief ten #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Kleine Z-gaten Negeren" +msgid "No Skin in Z Gaps" +msgstr "Geen skin in Z-gaten" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Wanneer het model kleine verticale gaten heeft, kan er circa 5% berekeningstijd extra worden besteed aan het genereren van de boven- en onderskin in deze kleine ruimten. Indien u dit wenst, schakelt u de instelling uit." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Als het model kleine verticale gaten van slechts een paar lagen heeft, bevindt er zich doorgaans een skin rond die lagen in de kleine ruimte. Schakel deze instelling in om geen skin te genereren als de verticale tussenruimte erg klein is. Zo verloopt printen en slicen sneller, maar technisch nadeel is dat de vulling aan de lucht wordt blootgesteld." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1433,8 @@ msgstr "Strijken inschakelen" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Ga nog een extra keer over de bovenlaag, echter zonder materiaal door te voeren. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Nog een extra keer over de bovenlaag gaan, dit keer zonder veel materiaal te extruderen. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen. De kamerdruk in de nozzle wordt hoog gehouden zodat de spleten in het oppervlak met materiaal worden gevuld." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "De maximale onmiddellijke snelheidsverandering tijdens het strijken." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Overlappercentage Skin" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Pas de mate van overlap tussen de wanden en (de eindpunten van) de skin-middellijnen aan, als percentage van de lijnbreedtes van de skin-lijnen en de binnenste wand. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Houd er rekening mee dat met een gelijke lijnbreedte voor skin en wand, skin buiten de wand kan treden bij een percentage hoger dan 50%, omdat de nozzle van de skin-extruder op deze positie al voorbij het midden van de wand kan zijn." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Overlap Skin" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Pas de mate van overlap tussen de wanden en (de eindpunten van) de skin-middellijnen aan. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Houd er rekening mee dat met een gelijke lijnbreedte voor skin en wand, skin buiten de wand kan treden bij een waarde groter dan de halve wandbreedte, omdat de nozzle van de skin-extruder op deze positie het midden van de wand al kan hebben bereikt." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Het vulpatroon wordt over deze afstand verplaatst langs de Y-as." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Start willekeurig invullen" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Bepaal willekeurig welke invullijn het eerst wordt geprint. Dit voorkomt dat één segment het sterkst wordt, maar gaat ten koste van een extra beweging." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "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" @@ -1663,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "De mate van overlap tussen de vulling en de wanden. Met een lichte overlap kunnen de wanden goed hechten aan de vulling." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Overlappercentage Skin" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Pas de mate van overlap tussen de wanden en (de eindpunten van) de skin-middellijnen aan, als percentage van de lijnbreedtes van de skin-lijnen en de binnenste wand. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Houd er rekening mee dat met een gelijke lijnbreedte voor skin en wand, skin buiten de wand kan treden bij een percentage hoger dan 50%, omdat de nozzle van de skin-extruder op deze positie al voorbij het midden van de wand kan zijn." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Overlap Skin" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Pas de mate van overlap tussen de wanden en (de eindpunten van) de skin-middellijnen aan. Met een lichte overlap kunnen de wanden goed hechten aan de skin. Houd er rekening mee dat met een gelijke lijnbreedte voor skin en wand, skin buiten de wand kan treden bij een waarde groter dan de halve wandbreedte, omdat de nozzle van de skin-extruder op deze positie het midden van de wand al kan hebben bereikt." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,8 +1962,8 @@ msgstr "Temperatuur werkvolume" #: fdmprinter.def.json 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." +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" @@ -1983,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Krimpverhouding in procenten." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Kristallijnmateriaal" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Breekt dit materiaal recht af wanneer het wordt verwarmd (kristallijn) of produceert het lange, met elkaar verweven polymeerketens (niet-kristallijn)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Intrekpositie voor niet-uitlopen" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Hoe ver het materiaal moet worden ingetrokken voordat het niet meer uitloopt." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Intreksnelheid voor niet-uitlopen" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Hoe snel het materiaal moet worden ingetrokken tijdens het wisselen van een filament om uitlopen te voorkomen." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Intrekpositie voor voorbereiding van afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Hoe ver het filament kan worden uitgerekt voordat het afbreekt, wanneer het wordt verwarmd." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Intreksnelheid voor voorbereiding van afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Hoe snel het filament moet worden ingetrokken voordat het bij het intrekken afbreekt." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Intrekpositie voor afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Hoe ver het filament moet worden ingetrokken om het recht af te breken." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Intreksnelheid voor afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "De snelheid waarmee het filament wordt ingetrokken om het recht af te breken." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatuur voor afbreken" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "De temperatuur waarbij het filament wordt afgebroken om het recht af te breken." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1993,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Doorvoercompensatie: de hoeveelheid materiaal die wordt doorgevoerd, wordt vermenigvuldigd met deze waarde." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Wanddoorvoer" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Doorvoercompensatie op wandlijnen." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Buitenste wanddoorvoer" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Doorvoercompensatie op de buitenste wandlijn." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Doorvoer binnenwand(en)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Doorvoercompensatie op wandlijnen voor alle wandlijnen behalve de buitenste." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Doorvoer boven/onder" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Doorvoercompensatie op bovenste/onderste lijn." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Bovenste oppervlak skindoorvoer" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Doorvoercompensatie op lijnen van de gebieden bovenaan de print." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Doorvoer vulling" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Doorvoercompensatie op vullijnen." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Doorvoer skirt/brim" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Doorvoercompensatie op skirt- of brimlijnen." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Doorvoer support" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Doorvoercompensatie op de supportstructuurlijnen." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Doorvoer supportinterface" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Doorvoercompensatie op de lijnen van supportdak of de supportvloer." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Doorvoer supportdak" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Doorvoercompensatie op supportdaklijnen." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Doorvoer supportvloer" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Doorvoercompensatie op de supportvloerlijnen." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Doorvoer Primepijler" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Doorvoercompensatie op primepijlerlijnen." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2110,7 +2402,7 @@ msgstr "Supportintrekkingen beperken" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "Sla intrekking over tijdens bewegingen in een rechte lijn van support naar support. Deze instelling verkort de printtijd, maar kan leiden tot overmatige draadvorming in de supportstructuur." #: fdmprinter.def.json @@ -2163,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "De snelheid waarmee het filament tijdens een intrekbeweging na het wisselen van de nozzles wordt geprimed." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Extra primehoeveelheid na wisselen van nozzle" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Extra primemateriaal na het wisselen van de nozzle." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2354,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "De snelheid waarmee de skirt en de brim worden geprint. Normaal gebeurt dit met dezelfde snelheid als de snelheid van de eerste laag, maar in sommige situaties wilt u de skirt of de brim mogelijk met een andere snelheid printen." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maximale Z-snelheid" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Snelheid Z-sprong" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "De maximale snelheid waarmee het platform wordt bewogen. Wanneer u deze optie instelt op 0, worden voor het printen de standaardwaarden voor de maximale Z-snelheid gebruikt." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "De snelheid waarmee de verticale Z-beweging wordt gemaakt voor Z-sprongen. Dit is meestal lager dan de printsnelheid, omdat het platform of de rijbrug van de machine moeilijker te verplaatsen is." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2863,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "De afstand tussen de nozzle en geprinte delen wanneer deze tijdens bewegingen worden gemeden." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Lagen beginnen met hetzelfde deel" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Begin het printen van elke laag van het object bij hetzelfde punt, zodat we geen nieuwe laag beginnen met het printen van het deel waarmee de voorgaande laag is geëindigd. Hiermee wordt de kwaliteit van overhangende gedeelten en kleine delen verbeterd, maar duurt het printen langer." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3279,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Afstand tussen de lijnen van de supportstructuur voor de eerste laag. Deze wordt berekend op basis van de dichtheid van de supportstructuur." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Lijnrichting Vulling Supportstructuur" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Richting van het vulpatroon voor supportstructuren. Het vulpatroon voor de supportstructuur wordt in het horizontale vlak gedraaid." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoek van 0 graden wordt gebruikt." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3415,7 +3707,7 @@ msgstr "Samenvoegafstand Supportstructuur" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." msgstr "De maximale afstand tussen de supportstructuren in de X- en Y-richting. Wanneer afzonderlijke structuren dichter bij elkaar staan dan deze waarde, worden deze samengevoegd tot één structuur." #: fdmprinter.def.json @@ -3700,8 +3992,8 @@ msgstr "Minimumgebied verbindingsstructuur" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Minimumgebied voor verbindingspolygonen. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimumgebied voor verbindingspolygonen. Polygonen met een gebied dat kleiner is dan deze waarde worden geprint als normale ondersteuning." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3710,8 +4002,8 @@ msgstr "Minimumgebied supportdak" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Minimumgebied voor de supportdaken. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimumgebied voor de supportdaken. Polygonen met een gebied dat kleiner is dan deze waarde worden geprint als normale ondersteuning." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3720,8 +4012,8 @@ msgstr "Minimumgebied supportvloer" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Minimumgebied voor de supportvloeren. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimumgebied voor de supportvloeren. Polygonen met een gebied dat kleiner is dan deze waarde worden geprint als normale ondersteuning." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3753,6 +4045,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "De mate van offset die wordt toegepast op de supportvloeren." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Lijnrichting interface supportstructuur" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoeken (variërend tussen 45 en 135 graden als interfaces vrij dik of 90 graden zijn) worden gebruikt." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Lijnrichting supportdak" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoeken (variërend tussen 45 en 135 graden als interfaces vrij dik of 90 graden zijn) worden gebruikt." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Lijnrichting supportvloer" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Een lijst met gehele getallen voor lijnrichtingen die moet worden gebruikt. Elementen uit de lijst worden tijdens het printen van de lagen opeenvolgend gebruikt. Wanneer het einde van de lijst bereikt is, wordt deze weer van voren af aan gestart. De lijstitems zijn gescheiden door komma's en de hele lijst is binnen vierkante haken geplaatst. Standaard wordt een lege lijst gebruikt, wat inhoudt dat de standaardhoeken (variërend tussen 45 en 135 graden als interfaces vrij dik of 90 graden zijn) worden gebruikt." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3794,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "De diameter van een speciale pijler." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimale Diameter" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Maximale pijler-ondersteunde diameter" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "De minimale diameter in de X- en Y-richting van een kleiner gebied dat moet worden ondersteund door een speciale steunpijler." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "De maximale diameter in de X- en Y-richting van een kleiner gebied dat moet worden ondersteund door een speciale steunpijler." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3923,7 +4245,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "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" @@ -4295,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Print een pijler naast de print, waarop het materiaal na iedere nozzlewisseling wordt ingespoeld." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Ronde primepijler" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Geef de primepijler een ronde vorm." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4345,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "De Y-coördinaat van de positie van de primepijler." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Doorvoer Primepijler" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Doorvoercompensatie: de hoeveelheid materiaal die wordt doorgevoerd, wordt vermenigvuldigd met deze waarde." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4495,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Hiermee worden de lege lagen onder de eerste geprinte laag verwijderd, indien aanwezig. Als u deze instelling uitschakelt, kunnen lege eerste lagen ontstaan als de Slicetolerantie is ingesteld op Exclusief of Midden." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maximale resolutie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Het minimale formaat van een lijnsegment na het slicen. Als u deze waarde verhoogt, wordt het model met een lagere resolutie geprint. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden en wordt de slicesnelheid verhoogd doordat details van het raster worden verwijderd die niet kunnen worden verwerkt." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maximale bewegingsresolutie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Het minimale formaat van een bewegingslijnsegment na het slicen. Als u deze waarde verhoogt, hebben de bewegingen minder vloeiende hoeken. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden, maar kan het model door vermijding minder nauwkeurig worden." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maximale afwijking" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "De maximaal toegestane afwijking tijdens het verlagen van de resolutie voor de instelling Maximale resolutie. Als u deze waarde verhoogt, wordt de print minder nauwkeurig, maar wordt de G-code kleiner. Maximale afwijking is een limiet voor Maximale resolutie, dus als de twee tegenstrijdig zijn, wordt de Maximale afwijking altijd aangehouden." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4657,7 +4991,7 @@ msgstr "Gespiraliseerde contouren effenen" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad te verminderen (de Z-naad mag in de print nauwelijks zichtbaar zijn, maar is nog wel zichtbaar in de laagweergave). Houd er rekening mee dat fijne oppervlaktedetails worden vervaagd door het effenen." #: fdmprinter.def.json @@ -4870,36 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Polygonen in geslicete lagen, die een kleinere omtrek hebben dan deze waarde, worden eruit gefilterd. Bij lagere waarden krijgt het raster een hogere resolutie, waardoor het slicen langer duurt. Dit is voornamelijk bedoeld voor SLA-printers met een hoge resolutie en zeer kleine 3D-modellen die veel details bevatten." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maximale resolutie" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Het minimale formaat van een lijnsegment na het slicen. Als u deze waarde verhoogt, wordt het model met een lagere resolutie geprint. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden en wordt de slicesnelheid verhoogd doordat details van het raster worden verwijderd die niet kunnen worden verwerkt." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maximale bewegingsresolutie" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Het minimale formaat van een bewegingslijnsegment na het slicen. Als u deze waarde verhoogt, hebben de bewegingen minder vloeiende hoeken. Hiermee kan de printer de verwerkingssnelheid van de G-code bijhouden, maar kan het model door vermijding minder nauwkeurig worden." - -#: fdmprinter.def.json -msgctxt "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" @@ -5040,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "De snelheid waarmee de printkop tijdens coasting beweegt ten opzichte van de snelheid voor het doorvoerpad. Hiervoor wordt een waarde van iets minder dan 100% aangeraden, omdat de druk in de bowden-buis zakt tijdens een coasting-beweging." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Skinrotatie Wisselen" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Wissel de richting af waarin de boven-/onderlagen worden geprint. Normaal worden deze alleen diagonaal geprint. Met deze instelling worden de alleen-X- en alleen-Y-richtingen toegevoegd." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5157,8 +5451,8 @@ msgstr "Conische supportstructuur inschakelen" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Experimentele functie: maak draagvlakken aan de onderkant kleiner dan bij de overhang." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Maak draagvlakken aan de onderkant kleiner dan bij de overhang." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5222,23 +5516,24 @@ msgstr "De gemiddelde afstand tussen de willekeurig geplaatste punten op elk lij #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Maximale extrusieoffset voor doorvoercompensatie" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "De maximale afstand in mm die moet worden gecompenseerd." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "De maximale afstand in mm om het filament te verplaatsen om veranderingen in de stroomsnelheid te compenseren." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Doorvoercompensatiefactor" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "De vermenigvuldigingsfactor voor de vertaling doorvoer -> afstand." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Hoe ver het filament moet worden verplaatst om veranderingen in de stroomsnelheid te compenseren, als een percentage van hoe ver het filament in één seconde" +" extrusie zou bewegen." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5390,7 +5685,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" @@ -5529,13 +5826,14 @@ msgstr "Het hoogteverschil tussen de hoogte van de volgende laag ten opzichte va #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Drempelwaarde adaptieve lagen" +msgid "Adaptive Layers Topography Size" +msgstr "Topografieformaat aanpasbare lagen" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "De drempel of er al dan niet een kleinere laag moet worden gebruikt. Deze waarde wordt vergeleken met de waarde van de steilste helling in een laag." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Horizontale doelafstand tussen twee aangrenzende lagen. Als u deze instelling verkleint, worden dunnere lagen gebruikt om de randen van de lagen dichter" +" bij elkaar te brengen." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5544,8 +5842,9 @@ msgstr "Hoek Overhangende Wand" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Wanden die overhangen in een hoek groter dan deze waarde, worden geprint met instellingen voor overhangende wanden. Wanneer de waarde 90 is, wordt een wand niet als een overhangende wand gezien." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Wanden die overhangen in een hoek groter dan deze waarde, worden geprint met instellingen voor overhangende wanden. Wanneer de waarde 90 is, wordt een" +" wand niet als een overhangende wand gezien. Een overhang die wordt ondersteund door ondersteuning wordt ook niet als overhang gezien." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5897,6 +6196,48 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "De afstand die de kop heen en weer wordt bewogen over de borstel." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Maximale grootte kleine gaten" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Gaten en contouren van onderdelen met een kleinere diameter dan deze worden afgedrukt met behulp van Klein kenmerksnelheid." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Maximale lengte klein kenmerk" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Kenmerkcontouren die korter zijn dan deze lengte, worden afgedrukt met behulp van Klein kenmerksnelheid." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Klein kenmerksnelheid" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Kleine kernmerken worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan de hechting en" +" nauwkeurigheid verbeteren." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Kleine kenmerken eerste laagsnelheid" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Kleine kenmerken op de eerste laag worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan" +" de hechting en nauwkeurigheid verbeteren." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5957,6 +6298,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Omzettingsmatrix die moet worden toegepast op het model wanneer dit wordt geladen vanuit een bestand." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimumgebied voor verbindingspolygonen. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimumgebied voor de supportdaken. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimumgebied voor de supportvloeren. Polygonen met een gebied dat kleiner is dan deze waarde, worden niet gegenereerd." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Skinrotatie Wisselen" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Wissel de richting af waarin de boven-/onderlagen worden geprint. Normaal worden deze alleen diagonaal geprint. Met deze instelling worden de alleen-X- en alleen-Y-richtingen toegevoegd." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Maximale extrusieoffset voor doorvoercompensatie" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "De maximale afstand in mm die moet worden gecompenseerd." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Doorvoercompensatiefactor" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "De vermenigvuldigingsfactor voor de vertaling doorvoer -> afstand." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Drempelwaarde adaptieve lagen" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "De drempel of er al dan niet een kleinere laag moet worden gebruikt. Deze waarde wordt vergeleken met de waarde van de steilste helling in een laag." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Wanden die overhangen in een hoek groter dan deze waarde, worden geprint met instellingen voor overhangende wanden. Wanneer de waarde 90 is, wordt een wand niet als een overhangende wand gezien." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Kleine kenmerken worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan de hechting en nauwkeurigheid verbeteren." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Eerste laagsnelheid" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Kleine kenmerken op de eerste laag worden geprint met een snelheid die gelijk is aan dit percentage van hun normale printsnelheid. Langzamer printen kan de hechting en nauwkeurigheid verbeteren." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Ga nog een extra keer over de bovenlaag, echter zonder materiaal door te voeren. Hierdoor wordt de kunststof aan de bovenkant verder gesmolten, waardoor een gladder oppervlak wordt verkregen." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Lagen beginnen met hetzelfde deel" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Begin het printen van elke laag van het object bij hetzelfde punt, zodat we geen nieuwe laag beginnen met het printen van het deel waarmee de voorgaande laag is geëindigd. Hiermee wordt de kwaliteit van overhangende gedeelten en kleine delen verbeterd, maar duurt het printen langer." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Richting van het vulpatroon voor supportstructuren. Het vulpatroon voor de supportstructuur wordt in het horizontale vlak gedraaid." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "De maximaal toegestane afwijking tijdens het verlagen van de resolutie voor de instelling Maximale resolutie. Als u deze waarde verhoogt, wordt de print minder nauwkeurig, maar wordt de G-code kleiner." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Versie G-code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Instellen of hoeken in het model invloed hebben op de positie van de naad. Geen wil zeggen dat hoeken geen invloed hebben op de positie van de naad. Met Naad verbergen is de kans groter dat de naad op een binnenhoek komt. Met Naad zichtbaar maken is de kans groter dat de naad op een buitenhoek komt. Met Naad verbergen of Naad zichtbaar maken is de kans groter dat de naad op een binnen- of buitenhoek komt." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Kleine Z-gaten Negeren" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Wanneer het model kleine verticale gaten heeft, kan er circa 5% berekeningstijd extra worden besteed aan het genereren van de boven- en onderskin in deze kleine ruimten. Indien u dit wenst, schakelt u de instelling uit." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "De temperatuur van het werkvolume. Als deze waarde is ingesteld op 0, wordt de temperatuur van het werkvolume niet aangepast." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Sla intrekking over tijdens bewegingen in een rechte lijn van support naar support. Deze instelling verkort de printtijd, maar kan leiden tot overmatige draadvorming in de supportstructuur." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maximale Z-snelheid" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "De maximale snelheid waarmee het platform wordt bewogen. Wanneer u deze optie instelt op 0, worden voor het printen de standaardwaarden voor de maximale Z-snelheid gebruikt." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "De maximale afstand tussen de supportstructuren in de X- en Y-richting. Wanneer afzonderlijke structuren dichter bij elkaar staan dan deze waarde, worden deze samengevoegd tot één structuur." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimale Diameter" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "De minimale diameter in de X- en Y-richting van een kleiner gebied dat moet worden ondersteund door een speciale steunpijler." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Ronde primepijler" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Geef de primepijler een ronde vorm." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Doorvoercompensatie: de hoeveelheid materiaal die wordt doorgevoerd, wordt vermenigvuldigd met deze waarde." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Maak de gespiraliseerde contouren vlak om de zichtbaarheid van de Z-naad te verminderen (de Z-naad mag in de print nauwelijks zichtbaar zijn, maar is nog wel zichtbaar in de laagweergave). Houd er rekening mee dat fijne oppervlaktedetails worden vervaagd door het effenen." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Experimentele functie: maak draagvlakken aan de onderkant kleiner dan bij de overhang." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Het aantal extruders dat ingeschakeld is" @@ -6226,7 +6711,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 2edf2a4f27..27f6acbe12 100644 --- a/resources/i18n/pl_PL/cura.po +++ b/resources/i18n/pl_PL/cura.po @@ -5,10 +5,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" -"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-27 13:29+0200\n" +"Project-Id-Version: Cura 4.3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-11-15 15:23+0100\n" "Last-Translator: Mariusz Matłosz \n" "Language-Team: Mariusz Matłosz , reprapy.pl\n" "Language: pl_PL\n" @@ -16,10 +16,10 @@ 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.4\n" "X-Poedit-SourceCharset: UTF-8\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Ustawienia drukarki" @@ -41,13 +41,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Pliki G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "Zapisywacz G-code nie obsługuje trybu nietekstowego." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Przygotuj G-code przed eksportem." @@ -57,7 +57,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Asystent Modelu 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -76,56 +76,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "Aktualizacja Oprogramowania Sprzętowego" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Spłaszczyć aktywne ustawienia" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Plik AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profil został spłaszczony i aktywowany." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Drukowanie USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Drukuj przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Połączono przez USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Trwa drukowanie przez USB, zamknięcie Cura spowoduje jego zatrzymanie. Jesteś pewien?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Plik X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Nadal trwa drukowanie. Cura nie może rozpocząć kolejnego wydruku przez USB, dopóki poprzedni wydruk nie zostanie zakończony." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Zapisuje do plików X3g" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Plik X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Drukowanie w toku" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -161,7 +150,7 @@ msgid "Save to Removable Drive {0}" msgstr "Zapisz na dysk wymienny {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Nie ma żadnych formatów plików do zapisania!" @@ -198,10 +187,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Nie można zapisać na wymiennym dysku {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Błąd" @@ -230,9 +218,9 @@ msgstr "Wyjmij urządzenie wymienne {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Ostrzeżenie" @@ -259,347 +247,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Dysk wymienny" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Połączono przez sieć." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Status uwierzytelniania" - -#: /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: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: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: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: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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Wysyłanie danych do drukarki" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Wysyłanie danych" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Anuluj" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Synchronizuj się z drukarką" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Połączone przez sieć" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dane Wysłane" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Zobacz w Monitorze" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Pusty" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Nieznany" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Drukuj przez Chmurę" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Drukuj przez Chmurę" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Połączony z Chmurą" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Błąd Chmury" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Nie można wgrać danych do drukarki." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "jutro" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "dziś" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Przesyłanie z Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Rozpocznij" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Połączono!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Odnów połączenie" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Połącz przez sieć" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Przewodnik po ustawieniach Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Drukuj przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Drukuj przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Połączone przez sieć" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Poczekaj, aż bieżące zadanie zostanie wysłane." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Błąd druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Znaleziono nowe drukarki w chmurze" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Nowe drukarki podłączone do Twojego konta zostały znalezione, można je odszukać na liście wykrytych drukarek." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Nie pokazuj tego komunikatu ponownie" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Próbujesz połączyć się z {0}, ale nie jest to gospodarz grupy. Możesz odwiedzić stronę internetową, aby skonfigurować jako gospodarza." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Nie jest gospodarzem grupy" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Konfiguruj grupę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Wyślij i nadzoruj zadania druku z każdego miejsca, używając konta Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Połacz z Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Rozpocznij" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Wysyłanie zadania druku" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Przesyłanie zadania do drukarki." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Zadanie drukowania zostało pomyślnie wysłane do drukarki." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dane Wysłane" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Próbujesz połączyć się z drukarką, na której nie działa Ultimaker Connect. Zaktualizuj drukarkę do najnowszej wersji firmware." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Zaktualizuj swoją drukarkę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura wykryła profile materiałów, które nie zostały jeszcze zainstalowane na gospodarzu grupy {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Wysyłanie materiałów do drukarki" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Nie można wgrać danych do drukarki." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Błąd sieci" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "jutro" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "dziś" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Drukuj przez Chmurę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Drukuj przez Chmurę" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Połączony z Chmurą" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Nie można uzyskać dostępu do informacji o aktualizacji." @@ -626,12 +431,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Widok warstwy" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura nie wyświetla dokładnie warstw kiedy drukowanie przewodowe jest włączone" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Widok symulacji" @@ -686,6 +491,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Obraz GIF" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Otwórz skompresowaną siatkę trójkątów" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "Cyfrowa wymiana zasobów COLLADA" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "Biblioteka glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "Załączony JSON glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Format trójkątów Stanforda" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Skompresowana cyfrowa wymiana zasobów COLLADA" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -750,12 +585,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Konfiguruj ustawienia każdego modelu z osobna" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Zalecane" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Niestandardowe" @@ -766,19 +601,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Plik 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Dysza" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Plik projektu {0} zawiera nieznany typ maszyny {1}. Nie można zaimportować maszyny. Zostaną zaimportowane modele." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Otwórz Plik Projektu" @@ -793,18 +628,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Plik G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Analizowanie G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Szczegóły G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Przed wysłaniem pliku upewnij się, że G-code jest odpowiedni do konfiguracji drukarki. Przedstawienie G-kodu może nie być dokładne." @@ -858,16 +693,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Profile Cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Asystent Profilu" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Asystent Profilu" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,7 +713,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Podgląd" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -904,141 +728,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Logowanie nie powiodło się" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Niewspierany" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Domyślne" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Plik już istnieje" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Plik {0} już istnieje. Czy na pewno chcesz go nadpisać?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Nieprawidłowy adres URL pliku:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Ustawienia zostały zmienione w celu dopasowania do bieżącej dostępności ekstruderów:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ustawienia zostały zaaktualizowane" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Ekstruder(y) wyłączony(/e)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Nieznany" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Nie udało się wyeksportować profilu do {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Nie można eksportować profilu do {0}: Wtyczka pisarza zgłosiła błąd." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Wyeksportowano profil do {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Eksport udany" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Nie można importować profilu z {0} przed dodaniem drukarki." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Brak niestandardowego profilu do importu w pliku {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Nie powiódł się import profilu z {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Profil {0} zawiera błędne dane, nie można go importować." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "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 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" -msgstr "Nie powiódł się import profilu z {0}:" +msgstr "Błąd importu profilu z {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil zaimportowany {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Plik {0} nie zawiera żadnego poprawnego profilu." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} ma nieznany typ pliku lub jest uszkodzony." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Niestandardowy profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilowi brakuje typu jakości." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1104,19 +935,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Inny" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Plik pocięty wcześniej {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1124,73 +954,120 @@ msgstr "Grupa #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Zamknij" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Dodaj" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Anuluj" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Domyślne" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Wizualny" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Profil wizualny jest przeznaczony do drukowania prototypów i modeli z zamiarem podkreślenia wysokiej jakości wizualnej i powierzchni." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Inżynieria" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Profil inżynieryjny jest przeznaczony do drukowania prototypów funkcjonalnych i części końcowych z naciskiem na lepszą dokładność i lepszą tolerancję." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Szkic" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Profil szkicu służy do drukowania początkowych prototypów i weryfikacji koncepcji z naciskiem na krótki czasu drukowania." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Nie zastąpione" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Profile niestandardowe" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Wszystkie Wspierane Typy ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Wszystkie Pliki (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Nieznany" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Dostępne drukarki sieciowe" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Niestandardowy materiał" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Niestandardowy" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Poniższa drukarka nie może być podłączona, ponieważ jest częścią grupy" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Dostępne drukarki sieciowe" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Wysokość obszaru roboczego została zmniejszona ze względu na wartość ustawienia Print Sequence (Sekwencja wydruku), aby zapobiec kolizji z wydrukowanymi modelami." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Obszar Roboczy" @@ -1215,39 +1092,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Nie można odczytać odpowiedzi." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Nie można uzyskać dostępu do serwera kont Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Proszę nadać wymagane uprawnienia podczas autoryzacji tej aplikacji." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Coś nieoczekiwanego się stało, podczas próby logowania, spróbuj ponownie." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Zwielokrotnienie i umieszczanie przedmiotów" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Umieść Obiekty" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Nie można znaleźć lokalizacji w obrębie obszaru roboczego dla wszystkich obiektów" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Rozmieszczenie Obiektów" @@ -1396,53 +1273,58 @@ 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 "Opis użytkownika (Uwaga: programiści mogą nie mówić w Twoim języku, w miarę możliwości używaj angielskiego)" -#: /home/ruben/Projects/Cura/cura/CrashHandler.py: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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Ładowanie drukarek..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Ustawianie preferencji..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Ustawianie sceny ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Ładowanie interfejsu ..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Jednocześnie można załadować tylko jeden plik G-code. Pominięto importowanie {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Nie można otworzyć żadnego innego pliku, jeśli ładuje się G-code. Pominięto importowanie {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Wybrany model był zbyta mały do załadowania." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Ustawienia drukarki" @@ -1455,15 +1337,15 @@ msgstr "X (Szerokość)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1495,50 +1377,55 @@ msgstr "Podgrzewany stół" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Grzany obszar roboczy" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Wersja G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ustawienia głowicy" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y max" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Wysokość wózka" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Liczba ekstruderów" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "Początkowy G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "Końcowy G-code" @@ -1568,22 +1455,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Korekcja dyszy X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Numer Wentylatora" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:162 msgctxt "@title:label" msgid "Extruder Start G-code" msgstr "Początkowy G-code ekstrudera" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Końcowy G-code ekstrudera" @@ -1594,7 +1481,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Zainstalowane" @@ -1609,16 +1496,16 @@ msgctxt "@label" msgid "ratings" msgstr "oceny" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Wtyczki" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiał" @@ -1628,49 +1515,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1731,17 +1618,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Zakończ Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Udział Społeczności" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Wtyczki Społeczności" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiały Podstawowe" @@ -1802,27 +1689,47 @@ msgctxt "@label" msgid "Featured" msgstr "Polecane" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Zgodność" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Drukarka" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Stół roboczy" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Podpory" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Jakość" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Dane Techniczne" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Dane Bezpieczeństwa" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Wskazówki Drukowania" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Strona Internetowa" @@ -1922,70 +1829,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Zarządzaj drukarkami" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Szkło" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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 "Zaktualizuj oprogramowanie drukarki, aby zdalnie zarządzać kolejką." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "Kamera nie jest dostępna, ponieważ nadzorujesz drukarkę w chmurze." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Wczytywanie..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Niedostępne" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Nieosiągalna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Zajęta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Bez tytułu" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anonimowa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Wymaga zmian konfiguracji" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Szczegóły" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Drukarka niedostępna" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Pierwsza dostępna" @@ -1995,212 +1908,195 @@ msgctxt "@label" msgid "Queued" msgstr "W kolejce" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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 "Zarządzaj w przeglądarce" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "W kolejce nie ma zadań drukowania. Potnij i wyślij zadanie, aby dodać." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Zadania druku" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Łączny czas druku" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Oczekiwanie na" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Wszystkie zadania są drukowane." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Poważ historię druku" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Połącz się z drukarką sieciową" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Aby drukować bezpośrednio w drukarce w sieci, upewnij się, że drukarka jest podłączona do sieci przy użyciu kabla sieciowego lub sieci WIFI. Jeśli nie podłączasz Cury do drukarki, możesz nadal używać dysku USB do przesyłania plików g-code do drukarki.\n" -"\n" -"Wybierz drukarkę z poniższej listy:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Aby drukować bezpośrednio na drukarce przez sieć, upewnij się, że drukarka jest podłączona do sieci za pomocą kabla sieciowego lub do sieci WIFI. Jeśli nie podłączysz Cury do drukarki, możesz nadal używać napędu USB do przesyłania plików G-Code do drukarki." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Wybierz swoją drukarkę z poniższej listy:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Edycja" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Usunąć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Odśwież" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Jeżeli twojej drukarki nie ma na liście, przeczytaj poradnik o problemach z drukowaniem przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Rodzaj" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Wersja oprogramowania" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Ta drukarka nie jest skonfigurowana jako host dla grupy drukarek." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Ta drukarka jest hostem grupy %1 drukarek." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Drukarka pod tym adresem jeszcze nie odpowiedziała." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Połącz" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Nieprawidłowy adres IP" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Proszę podać poprawny adres IP." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Adres drukarki" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Podaj adres IP lub nazwę hosta drukarki w sieci." +msgid "Enter the IP address of your printer on the network." +msgstr "Wprowadź adres IP drukarki." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Zakończone %1 z %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Drukuj" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Drukuj przez sieć" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Drukuj" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Wybór drukarki" @@ -2289,68 +2185,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Nadpisz" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Aluminum" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Podłącz do drukarki" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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." +"Upewnij się, że drukarka ma połączenie:\n" +"- Sprawdź, czy drukarka jest włączona.\n" +"- Sprawdź, czy drukarka jest podłączona do sieci.\n" +"- Sprawdź, czy jesteś zalogowany, aby znaleźć drukarki podłączone do chmury." #: /home/ruben/Projects/Cura/plugins/MonitorStage/MonitorMain.qml:117 msgctxt "@info" @@ -2559,70 +2447,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Wygładzanie" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Typ siatki" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normalny model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Drukuj jako podpora" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Nie wspieraj nałożeń z innymi modelami" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modyfikuj ustawienia nakładania z innymi modelami" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modyfikuj ustawienia wypełnienia innych modeli" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Wybierz ustawienia" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Wybierz Ustawienia, aby dostosować ten model" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtr..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Pokaż wszystko" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Typ siatki" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normalny model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Drukuj jako podpora" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modyfikuj ustawienia nakładania" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Nie wspieraj nałożenia" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Tylko wypełnienie" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Wybierz ustawienia" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Otwórz projekt" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Zaktualizuj istniejące" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Utwórz nowy" @@ -2649,6 +2536,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Aktualizacja" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Utwórz nowy" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2662,7 +2554,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Ustawienia profilu" @@ -2673,75 +2565,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Jak powinien zostać rozwiązany problem z profilem?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nazwa" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Cel" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Nie w profilu" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 nadpisanie" msgstr[1] "%1 Zastępuje" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Pochodna z" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 nadpisanie" msgstr[1] "%1, %2 zastępuje" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Ustawienia materiału" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Jak powinien zostać rozwiązany problem z materiałem?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Ustawienie widoczności" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Tryb" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Widoczne ustawienie:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 poza %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Ładowanie projektu usunie wszystkie modele z platformy roboczej." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Otwórz" @@ -2848,48 +2746,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Automatycznie twórz kopie zapasowe każdego dnia, w którym uruchomiono Curę." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Niewspierany" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Eksportuj" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Końcówka" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Próbny wydruk" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Lista kontrolna" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2975,170 +2831,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Czy na pewno chcesz przerwać drukowanie?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informacja" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Potwierdź Zmianę Średnicy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Średnica nowego filamentu została ustawiona na %1mm, i nie jest kompatybilna z bieżącym ekstruderem. Czy chcesz kontynuować?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Wyświetlana nazwa" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Typ Materiału" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Kolor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Właściwości" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Gęstość" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Średnica" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Koszt Filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Waga filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Długość Filamentu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Koszt na metr" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Ten materiał jest powiązany z %1 i dzieli się niekórymi swoimi właściwościami." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Odłącz materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Opis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informacje dotyczące przyczepności" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Ustawienia druku" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Aktywuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Stwórz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplikuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Eksportuj" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Potwierdź Usunięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Czy na pewno chcesz usunąć %1? Nie można tego cofnąć!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importuj Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Nie można zaimportować materiału %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Udało się zaimportować materiał %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Eksportuj Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Nie udało się wyeksportować materiału do %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Udało się wyeksportować materiał do %1" @@ -3153,414 +3015,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Zaznacz wszystko" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Przeliczone" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ustawienie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Aktualny" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Jednostka" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Musisz zrestartować aplikację, aby te zmiany zaczęły obowiązywać." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Tnij automatycznie podczas zmiany ustawień." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Automatyczne Cięcie" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Zachowanie okna edycji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Zaznacz nieobsługiwane obszary modelu na czerwono. Bez wsparcia te obszary nie będą drukowane prawidłowo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Wyświetl zwis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Przenosi kamerę, aby model był w centrum widoku, gdy wybrano model" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Wyśrodkuj kamerę kiedy przedmiot jest zaznaczony" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Czy domyślne zachowanie zoomu powinno zostać odwrócone?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Odwróć kierunek zoomu kamery." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Czy przybliżanie powinno poruszać się w kierunku myszy?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Powiększanie w kierunku myszy nie jest obsługiwane w danej perspektywie." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Przybliżaj w kierunku myszy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Czy modele na platformie powinny być przenoszone w taki sposób, aby nie przecinały się?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Upewnij się, że modele są oddzielone" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Czy modele na platformie powinny być przesunięte w dół, aby dotknęły stołu roboczego?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automatycznie upuść modele na stół roboczy" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Pokaż wiadomości ostrzegawcze w czytniku g-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Wiadomość ostrzegawcza w czytniku g-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Czy warstwa powinna być wymuszona w trybie zgodności?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Wymuszenie widoku warstw w trybie zgodności (wymaga ponownego uruchomienia)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Czy Cura powinna się otwierać w miejscu, w którym została zamknięta?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Przywróć pozycję okna przy starcie" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Jakiego rodzaju kamery należy użyć do renderowania?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Renderowanie z kamery: " + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspektywiczny" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Rzut ortograficzny" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Otwieranie i zapisywanie plików" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Czy modele powinny być skalowane do wielkości obszaru roboczego, jeśli są zbyt duże?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Skaluj duże modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Model może wydawać się bardzo mały, jeśli jego jednostka jest na przykład w metrach, a nie w milimetrach. Czy takie modele powinny być skalowane?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Skaluj bardzo małe modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Czy modele powinny zostać zaznaczone po załadowaniu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Zaznaczaj modele po załadowaniu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Czy przedrostek oparty na nazwie drukarki powinien być automatycznie dodawany do nazwy zadania?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Dodaj przedrostek maszyny do nazwy zadania" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Czy podsumowanie powinno być wyświetlane podczas zapisu projektu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Pokaż okno podsumowania podczas zapisywaniu projektu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Domyślne zachowanie podczas otwierania pliku projektu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Domyślne zachowanie podczas otwierania pliku projektu: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Zawsze pytaj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Zawsze otwieraj jako projekt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Zawsze importuj modele" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Kiedy dokonasz zmian w profilu i przełączysz się na inny, zostanie wyświetlone okno z pytaniem, czy chcesz zachować twoje zmiany, czy nie. Możesz też wybrać domyślne zachowanie, żeby to okno już nigdy nie było pokazywane." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Domyślne zachowanie dla zmienionych ustawień podczas zmiany profilu na inny: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Zawsze pytaj o to" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Zawsze odrzucaj wprowadzone zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Zawsze przenoś wprowadzone zmiany do nowego profilu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Prywatność" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Czy Cura ma sprawdzać dostępność aktualizacji podczas uruchamiania programu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Sprawdź, dostępność aktualizacji podczas uruchamiania" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Czy anonimowe dane na temat wydruku mają być wysyłane do Ultimaker? Uwaga. Żadne modele, adresy IP, ani żadne inne dane osobiste nie będą wysyłane i/lub przechowywane." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Wyślij (anonimowe) informacje o drukowaniu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Więcej informacji" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Zmień nazwę" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profile" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Stwórz" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplikuj" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Stwórz profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Podaj nazwę tego profilu." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplikuj profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Zmień nazwę profilu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importuj Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Eksportuj Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Drukarka: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Domyślne profile" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Aktualizuj profil z bieżącymi ustawieniami" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Odrzuć bieżące zmiany" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Ten profil używa ustawień domyślnych określonych przez drukarkę, dlatego nie ma żadnych ustawień z poniższej liście." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Aktualne ustawienia odpowiadają wybranemu profilowi." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ustawienia ogólne" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Marketplace" @@ -3620,36 +3490,36 @@ msgstr "Bez tytułu" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "ustawienia wyszukiwania" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Skopiuj wartość do wszystkich ekstruderów" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Skopiuj wszystkie zmienione wartości do wszystkich ekstruderów" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ukryj tę opcję" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Nie pokazuj tej opcji" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Pozostaw tę opcję widoczną" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Skonfiguruj widoczność ustawień ..." @@ -3665,32 +3535,32 @@ msgstr "" "\n" "Kliknij, aby te ustawienia były widoczne." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "To ustawienie jest dzielone pomiędzy wszystkimi ekstruderami. Zmiana tutaj spowoduje zmianę dla wszystkich ekstruderów." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Wartość jest pobierana z osobna dla każdego ekstrudera " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3701,7 +3571,7 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość z profilu." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3712,12 +3582,19 @@ msgstr "" "\n" "Kliknij, aby przywrócić wartość obliczoną." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "Nie ma profilu %1 dla konfiguracji w ekstruderze %2. Zamiast tego zostaną użyte domyślne cale" +msgstr[1] "Nie ma profilu %1 dla konfiguracji w ekstruderach %2. Zamiast tego zostaną użyte domyślne cale" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Polecane" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Niestandardowe" @@ -3742,36 +3619,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Generuje podpory wspierające części modelu, które mają zwis. Bez tych podpór takie części mogłyby spaść podczas drukowania." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Wysokość warstwy" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Zmodyfikowałeś ustawienia profilu. Jeżeli chcesz je zmienić, przejdź do trybu niestandardowego." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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ń ją, aby włączyć ten profil jakości." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Niestandardowy profil jest obecnie aktywny. Aby włączyć pasek jakości, wybierz domyślny profil w zakładce Niestandardowe" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3782,12 +3644,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Wył" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Eksperymentalne" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3798,6 +3665,11 @@ msgstr "" "\n" "Kliknij, aby otworzyć menedżer profili." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Profile niestandardowe" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3833,59 +3705,59 @@ 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ę." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Ekstruder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Docelowa temperatura głowicy. Głowica będzie się rozgrzewać lub chłodzić do tej temperatury. Jeżeli jest równe 0, grzanie głowicy będzie wyłączone." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Aktualna temperatura tej głowicy." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Temperatura do wstępnego podgrzewania głowicy." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Anuluj" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Podgrzewanie wstępne" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Podgrzej głowicę przed drukowaniem. Możesz w dalszym ciągu dostosowywać drukowanie podczas podgrzewania i nie będziesz musiał czekać na podgrzanie głowicy kiedy będziesz gotowy." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Kolor materiału w tym ekstruderze." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Materiał w głowicy drukującej." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Dysza włożona do tego ekstrudera." @@ -3925,12 +3797,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Ulubione" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Podstawowe" @@ -3950,42 +3822,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Drukarka" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Ustaw jako aktywną głowicę" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Włącz Ekstruder" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Wyłącz Ekstruder" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Pole robocze" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Pozycja kamery" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:35 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:44 +msgctxt "@action:inmenu menubar:view" +msgid "Camera view" +msgstr "Widok z kamery" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:47 +msgctxt "@action:inmenu menubar:view" +msgid "Perspective" +msgstr "Perspektywiczny" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:59 +msgctxt "@action:inmenu menubar:view" +msgid "Orthographic" +msgstr "Rzut ortograficzny" + +#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:80 msgctxt "@action:inmenu menubar:view" msgid "&Build plate" msgstr "P&ole robocze" @@ -4005,17 +3882,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Ustaw Widoczność Ustawień..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Zapisz..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Eksportuj..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Eksportuj Zaznaczenie..." @@ -4044,12 +3921,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Konfiguracje" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Wybierz konfigurację" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Konfiguracje" @@ -4079,12 +3956,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Włączona" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Użyj kleju dla lepszej przyczepności dla tej kombinacji materiałów." @@ -4104,22 +3981,22 @@ 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" @@ -4129,6 +4006,11 @@ msgctxt "@label" msgid "View type" msgstr "Typ widoku" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista obiektów" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4180,32 +4062,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Szacunkowy koszt niedostępny" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" msgstr "Nie można pociąć" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 +msgctxt "@button" +msgid "Processing" +msgstr "Przetwarzanie" + +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:103 msgctxt "@button" msgid "Slice" msgstr "Potnij" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Anuluj" @@ -4240,233 +4127,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Zdefiniowane drukarki" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:96 +msgctxt "@action:inmenu" +msgid "Exit Full Screen" +msgstr "Wyłącz tryb pełnoekranowy" + +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:103 msgctxt "@action:inmenu menubar:edit" msgid "&Undo" msgstr "&Cofnij" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Marketplace" @@ -4481,49 +4373,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ustawienia" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Zamykanie Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Czy jesteś pewien, że chcesz zakończyć Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instaluj pakiety" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Otwórz plik(i)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Znaleziono jeden lub więcej plików G-code w wybranych plikach. Możesz otwierać tylko jeden plik G-code jednocześnie. Jeśli chcesz otworzyć plik G-code, proszę wybierz tylko jeden." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Dodaj drukarkę" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Co nowego" @@ -4594,17 +4486,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "O Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "version: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Kompletne rozwiązanie do druku przestrzennego." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4613,122 +4505,122 @@ msgstr "" "Cura jest rozwijana przez firmę Ultimaker B.V. we współpracy ze społecznością.\n" "Cura z dumą korzysta z następujących projektów open source:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Graficzny interfejs użytkownika" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Struktura aplikacji" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Generator g-code" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Biblioteka komunikacji międzyprocesowej" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Język programowania" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "Framework GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Powiązania Frameworka GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Biblioteka Powiązań C/C++" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Format wymiany danych" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Wsparcie biblioteki do obliczeń naukowych" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Wsparcie biblioteki dla szybszej matematyki" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Wsparcie biblioteki do obsługi plików STL" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Biblioteka pomocnicza do obsługi obiektów płaskich" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Biblioteka pomocnicza do obsługi siatek trójkątów" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Biblioteka pomocnicza do analizy złożonych sieci" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Wsparcie biblioteki do obsługi plików 3MF" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Biblioteka pomocy dla metadanych plików i przesyłania strumieniowego" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Biblioteka komunikacji szeregowej" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Bilbiotek poszukująca Zeroconf" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteka edytująca pola" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Biblioteka Python HTTP" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Czcionka" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Ikony SVG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Wdrożenie aplikacji pomiędzy dystrybucjami Linux" @@ -4748,32 +4640,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Zapisz projekt" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Pole robocze" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Ekstruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & materiał" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Materiał" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Nie pokazuj podsumowania projektu podczas ponownego zapisywania" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Zapisz" @@ -4949,12 +4836,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Rozwiązywanie problemów" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Nazwa drukarki" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Podaj nazwę drukarki" @@ -5013,20 +4900,30 @@ msgctxt "@button" msgid "Get started" msgstr "Rozpocznij" -#: /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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Widok 3D" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Widok z przodu" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Widok z góry" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Widok z lewej strony" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Widok z prawej strony" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5088,16 +4985,6 @@ 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." @@ -5108,15 +4995,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Aktualizacja oprogramowania sprzętowego" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Stwórz spłaszczony profil zmian jakości." +msgid "Provides support for reading AMF files." +msgstr "Zapewnia wsparcie dla czytania plików AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Spłaszcz profil" +msgid "AMF Reader" +msgstr "Czytnik AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -5128,16 +5015,6 @@ msgctxt "name" msgid "USB printing" msgstr "Drukowanie USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Umożliwia zapisanie wyników cięcia jako plik X3G, aby wspierać drukarki obsługujące ten format (Malyan, Makerbot oraz inne oparte o oprogramowanie Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "Zapisywacz X3G" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5180,23 +5057,13 @@ msgstr "Wtyczka Urządzenia Wyjścia Dysku Zewnętrznego" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Zarządza ustawieniami połączenia sieciowego z drukarkami Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Zarządza połączeniami z sieciowymi drukarkami Ultimaker." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Połączenie Sieciowe UM3" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Połączenie sieciowe Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5328,6 +5195,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Ulepszenie Wersji z 3.3 do 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Uaktualnia konfiguracje z Cura 4.3 to Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Uaktualnij wersję 4.3 do 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5388,6 +5265,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Ulepszenie Wersji 3.0 do 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Uaktualnia konfiguracje z Cura 4.1 to Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Uaktualnij wersję 4.1 do 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5418,6 +5305,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Ulepszenie Wersji z 2.2 do 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Uaktualnia konfiguracje z Cura 4.2 to Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Uaktualnij wersję 4.2 do 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5428,6 +5325,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Czytnik Obrazu" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Zapewnia wsparcie dla czytania plików modeli." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Czytnik siatki trójkątów" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5458,16 +5365,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Czytnik 3MF" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "Czyta pliki SVG jako ścieżki, do debugowania ruchów drukarki." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Czytnik ścieżek SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5508,16 +5405,6 @@ 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." @@ -5558,6 +5445,442 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Czytnik Profili Cura" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Spłaszczyć aktywne ustawienia" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profil został spłaszczony i aktywowany." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Zapisuje do plików X3g" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Plik X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Plik X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Otwórz skompresowaną siatkę trójkątów" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Asystent Profilu" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Asystent Profilu" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Spróbuj ponownie" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Rdzeń drukujący" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Nie wspieraj nałożeń z innymi modelami" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modyfikuj ustawienia nakładania z innymi modelami" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modyfikuj ustawienia wypełnienia innych modeli" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Zaktualizuj istniejące" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Niewspierany" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Poprzedni" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Końcówka" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Próbny wydruk" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista kontrolna" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Proszę wybrać ulepszenia w tym Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Renderowanie z kamery: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Użyj funkcji wielu pól roboczych" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Użyj funkcji wielu pól roboczych (wymagany restart)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Domyślne profile" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "ustawienia wyszukiwania" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Wysokość warstwy" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Ten profil jakości nie jest dostępny dla bieżącej konfiguracji materiałów i dysz. Zmień ją, aby włączyć ten profil jakości." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Niestandardowy profil jest obecnie aktywny. Aby włączyć pasek jakości, wybierz domyślny profil w zakładce Niestandardowe" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Pole robocze" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Pole robocze" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Wsypuje zawartość wszystkich ustawień do pliku HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Tryb Boga" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Stwórz spłaszczony profil zmian jakości." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Spłaszcz profil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Pozwala twórcą materiałów na tworzenie nowych profili materiałów i jakości używając rozwijanego menu." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Asystent Profilów Druku" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Połączono przez sieć." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Połączono przez sieć. Proszę zatwierdzić żądanie dostępu na drukarce." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Połączono przez sieć. Brak dostępu do sterowania drukarką." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Wymagany dostęp do drukarki. Proszę zatwierdzić prośbę na drukarce" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Status uwierzytelniania" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Status Uwierzytelniania" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Prześlij ponownie żądanie dostępu" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Dostęp do drukarki został zaakceptowany" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Brak dostępu do tej drukarki. Nie można wysłać zadania drukowania." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Poproś o dostęp" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Wyślij żądanie dostępu do drukarki" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Nie można uruchomić nowego zadania drukowania." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Wystąpił problem z konfiguracją twojego Ultimaker'a, przez który nie można rozpocząć wydruku. Proszę rozwiąż te problemy przed kontynuowaniem." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Niedopasowana konfiguracja" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Czy na pewno chcesz drukować z wybraną konfiguracją?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Występuje niezgodność między konfiguracją lub kalibracją drukarki a Curą. Aby uzyskać najlepszy rezultat, zawsze tnij dla Print core'ów i materiałów włożonych do drukarki." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Wysyłanie nowych zadań (tymczasowo) zostało zablokowane, dalej wysyłane jest poprzednie zadanie." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Wysyłanie danych do drukarki" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Wysyłanie danych" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Brak Printcore'a w slocie {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Brak załadowanego materiału w slocie {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Inny PrintCore (Cura: {cura_printcore_name}, Drukarka: {remote_printcore_name}) wybrany dla extrudera {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Różne materiały (Cura: {0}, Drukarka: {1}) wybrane do dzyszy {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Synchronizuj się z drukarką" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Czy chcesz używać bieżącej konfiguracji drukarki w programie Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "PrintCore'y i/lub materiały w drukarce różnią się od tych w obecnym projekcie. Dla najlepszego rezultatu, zawsze tnij dla wybranych PrinCore'ów i materiałów, które są umieszczone w drukarce." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Zobacz w Monitorze" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} skończyła drukowanie '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Zadanie '{job_name}' zostało zakończone." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Drukowanie zakończone" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Pusty" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Nieznany" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Błąd Chmury" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Nie można eksportować zadania druku." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Wystąpił błąd połączenia z chmurą." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Przesyłanie z Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Połącz z Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Nie pytaj więcej dla tej drukarki." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Możesz teraz wysłać i nadzorować zadania druku z każdego miejsca, używając konta Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Połączono!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Odnów połączenie" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "Drukarka zdefiniowana w profilu {0} ({1}) nie jest zgodna z bieżącą drukarką ({2}), nie można jej importować." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Nie powiódł się import profilu z {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Istniejące Połączenie" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Ta drukarka/grupa jest już dodana do Cura. Proszę wybierz inną drukarkę/grupę." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Podaj adres IP lub nazwę hosta drukarki w sieci." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Podłącz do drukarki" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Przewodnik po ustawieniach Cura" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Zarządza ustawieniami połączenia sieciowego z drukarkami Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Połączenie Sieciowe UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Zawiera dodatkowe informacje i objaśnienia dotyczące ustawień w Cura, z obrazami i animacjami." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Przewodnik po ustawieniach" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Przewodnik po ustawieniach Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Ustawienia został zmienione, aby pasowały do obecnej dostępności extruderów: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Opis użytkownika" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Te opcje nie są dostępne, ponieważ nadzorujesz drukarkę w chmurze." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Idź do Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Wszystkie zadania są drukowane." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Poważ historię druku" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Aby drukować bezpośrednio w drukarce w sieci, upewnij się, że drukarka jest podłączona do sieci przy użyciu kabla sieciowego lub sieci WIFI. Jeśli nie podłączasz Cury do drukarki, możesz nadal używać dysku USB do przesyłania plików g-code do drukarki.\n" +#~ "\n" +#~ "Wybierz drukarkę z poniższej listy:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Upewnij się czy drukarka jest połączona:\n" +#~ "- Sprawdź czy drukarka jest włączona.\n" +#~ "- Sprawdź czy drukarka jest podłączona do sieci." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Pokaż tylko aktualną platformę roboczą" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Rozłóż na wszystkich platformach roboczych" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Rozłóż na obecnej platformie roboczej" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Umożliwia zapisanie wyników cięcia jako plik X3G, aby wspierać drukarki obsługujące ten format (Malyan, Makerbot oraz inne oparte o oprogramowanie Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "Zapisywacz X3G" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Czyta pliki SVG jako ścieżki, do debugowania ruchów drukarki." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Czytnik ścieżek SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Lista zmian" diff --git a/resources/i18n/pl_PL/fdmextruder.def.json.po b/resources/i18n/pl_PL/fdmextruder.def.json.po index e121281cad..3983ca9326 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.1\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Mariusz 'Virgin71' Matłosz \n" "Language-Team: reprapy.pl\n" diff --git a/resources/i18n/pl_PL/fdmprinter.def.json.po b/resources/i18n/pl_PL/fdmprinter.def.json.po index cc869d37a8..b6ebd6474a 100644 --- a/resources/i18n/pl_PL/fdmprinter.def.json.po +++ b/resources/i18n/pl_PL/fdmprinter.def.json.po @@ -5,17 +5,17 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-05-27 22:32+0200\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-15 15:34+0100\n" "Last-Translator: Mariusz Matłosz \n" "Language-Team: Mariusz Matłosz , reprapy.pl\n" "Language: pl_PL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.1.1\n" +"X-Generator: Poedit 2.2.4\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -215,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Określa czy maszyna posiada podgrzewany stół." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Posiada komorę stabilizacji temperatury" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Określa czy drukarka posiada zamkniętą komorę stabilizującą temperaturę." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -337,8 +347,8 @@ msgstr "Minimalny czas, w jakim ekstruder musi być nieużywany, aby schłodzić #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" -msgstr "Wersja G-code" +msgid "G-code Flavor" +msgstr "Smak G-code" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -1020,6 +1030,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Liczba dolnych warstw. Przy obliczaniu grubości dołu ta wartość jest zaokrąglana do liczby całkowitej." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Początkowej warstwy dolne" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Liczba początkowych dolnych warstw, od stołu w górę. Obliczona na podstawie grubości spodu, wartość ta jest zaokrąglana do liczby całkowitej." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1270,6 +1290,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Najostrzejszy róg" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Pozycja szwu osi Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Najbliższa pozycja startu druku każdej warstwy." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Lewy tył" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Tył" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Prawy tył" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Prawa" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Prawy przód" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Przód" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Lewy przód" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Lewa" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1367,8 @@ msgstr "Wybór Rogu Szwu" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Kontroluje, czy rogi na zewn. linii modelu wpływają na pozycję szwu. Brak oznacza, że rogi nie mają wpływu na pozycję szwu. Ukryj Szew powoduje, że szew będzie się bardziej pojawiał na wewn. rogach. Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na zewn. rogach. Ukryj lub Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na wewn. lub zewn. rogach." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Kontroluj, czy narożniki obrysu wpływają na położenie szwu. Brak oznacza, że rogi nie mają wpływu na tę pozycję. Ukryj szew zwiększa prawdopodobieństwo pojawienia się szwu w wewnętrznym rogu. Ujawnij szew zwiększa prawdopodobieństwo pojawienia się szwu w narożniku zewnętrznym. Ukryj lub odsłoń szew zwiększa prawdopodobieństwo, że szew pojawi się w rogu wewnętrznym lub zewnętrznym. Inteligentne ukrywanie odsłania zarówno narożniki wewnętrzne, jak i zewnętrzne, ale w miarę potrzeby wybiera wewnętrzne narożniki." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1390,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Ukryj lub Pokaż Szew" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Inteligentne ukrywanie" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1407,13 @@ msgstr "Kiedy włączone, współrzędne szwu są względne do każdego środka #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Zignoruj Małe Luki Z" +msgid "No Skin in Z Gaps" +msgstr "Brak wypełnienia w lukach osi Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Jeśli model ma małe, pionowe szczeliny, to można wykorzystać dodatkowe 5% mocy obliczeniowej do wygenerowania górnej i dolnej skóry w wąskich przestrzeniach. W takim wypadku, wyłącz tę opcję." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Gdy model ma małe pionowe szczeliny składające się z kilku warstw, powinna pojawić się powierzchnia zewnętrzna wokół tych warstw w wąskiej przestrzeni. Włącz, aby nie generować powierzchni zewnętrznej, jeśli odstęp pionowy jest bardzo mały. Poprawia to czas drukowania i czas cięcia, ale technicznie pozostawia wypełnienie bez wykończenia." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1432,8 @@ msgstr "Włącz Prasowanie" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Przejedź nad górną powierzchnią dodatkowy raz, ale bez ekstrudowania materiału. Topi to plastyk na górze, co powoduje gładszą powierzchnię." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Ponowne przejście po górnej powierzchni, tym razem wytłaczając bardzo mało materiału. Ma to na celu lepsze stopienie tworzywa na wierzchu, tworząc gładsze wykończenie. Ciśnienie w dyszy jest utrzymywane na wysokim poziomie, aby szczeliny na powierzchni były wypełnione materiałem." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1525,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Maksymalna nagła zmiana prędkości podczas przeprowadzania prasowania." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Procent Nakładania się Skóry" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Dostosuj zachodzenie pomiędzy ścianami, a (punktami końcowymi) linią obrysu, jako procent szerokości linii obrysu i najbardziej wewnętrznej ściany. Niewielkie zachodzenie na siebie pozwala ścianom połączyć się mocno z obrysem. Zauważ, że przy równej szerokości obrysu i szerokości ściany, każdy procent powyżej 50% może spowodować przekroczenie ściany przez obrys, ponieważ pozycja dyszy ekstrudera obrysu może sięgać poza środek ściany." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Nakładanie się Skóry" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Dostosuj zachodzenie pomiędzy ścianami, a (punktami końcowymi) linią obrysu. Niewielkie zachodzenie na siebie pozwala ścianom połączyć się mocno z obrysem. Zauważ, że przy równej szerokości obrysu i szerokości ściany, każdy procent powyżej 50% może spowodować przekroczenie ściany przez obrys, ponieważ pozycja dyszy ekstrudera obrysu może sięgać poza środek ściany." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1615,6 +1710,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Wzór wypełnienia jest przesunięty o tę odległość wzdłuż osi Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Losowy punkt startu wypełnienia" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Losuje, która linia wypełnienia jest drukowana jako pierwsza. Dzięki temu nie ma zjawiska, kiedy jeden segment jest mocniejszy. Kosztem jest dodatkowy ruchu jałowy." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1669,26 +1774,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Ilość nałożenia pomiędzy wypełnieniem a ścianami. Nieznaczne nałożenie pozwala ściśle łączyć się z wypełnieniem." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Procent Nakładania się Skóry" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Dostosuj zachodzenie pomiędzy ścianami, a (punktami końcowymi) linią obrysu, jako procent szerokości linii obrysu i najbardziej wewnętrznej ściany. Niewielkie zachodzenie na siebie pozwala ścianom połączyć się mocno z obrysem. Zauważ, że przy równej szerokości obrysu i szerokości ściany, każdy procent powyżej 50% może spowodować przekroczenie ściany przez obrys, ponieważ pozycja dyszy ekstrudera obrysu może sięgać poza środek ściany." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Nakładanie się Skóry" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Dostosuj zachodzenie pomiędzy ścianami, a (punktami końcowymi) linią obrysu. Niewielkie zachodzenie na siebie pozwala ścianom połączyć się mocno z obrysem. Zauważ, że przy równej szerokości obrysu i szerokości ściany, każdy procent powyżej 50% może spowodować przekroczenie ściany przez obrys, ponieważ pozycja dyszy ekstrudera obrysu może sięgać poza środek ściany." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1876,8 +1961,8 @@ msgstr "Temperatura obszaru roboczego" #: fdmprinter.def.json 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." +msgid "The temperature of the environment to print in. If this is 0, the build volume temperature will not be adjusted." +msgstr "Temperatura otoczenia druku. Jeśli ustawione jest 0, temperatura komory nie będzie ustawiana." #: fdmprinter.def.json msgctxt "material_print_temperature label" @@ -1989,6 +2074,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Współczynnik skurczu w procentach." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Materiał krystaliczny" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Czy ten rodzaj materiału odłamuje się łatwo po podgrzaniu (krystaliczny), czy też jest to tworzywo, które wytwarza długie splecione łańcuchy polimerowe (niekrystaliczne)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Odległość retrakcji anty-wyciekom" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Jak daleko materiał musi zostać wycofany, aby przestał wyciekać." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Szybkość retrakcji anty-wyciekom" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Jak szybko materiał musi zostać wycofany podczas zmiany filamentu, aby przestał wyciekać." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Odległość pęknięcia przy retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Jak bardzo filament może być rozciągnięty, zanim pęknie, podczas ogrzewania." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Szybkość pękania przy retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Jak szybko filament musi zostać wycofany, aby pękł podczas cofania." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Odległość łamania retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Jak daleko wycofać filament, aby go złamać na czysto." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Szybkość łamania retrakcji" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Jak szybko wycofać filament, aby go złamać na czysto." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura pękania" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Temperatura, w której filament można złamać na czysto." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1999,6 +2164,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Kompensacja przepływu: ilość ekstrudowanego materiału jest mnożona przez tę wartość." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Przepływ ścianek" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Ustawienie przepływu na liniach ścianek." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Przepływu ścianek zewnętrznych" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Ustawienie przepływu na liniach ścianek zewnętrznych." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Przepływu ścianek wewnętrznych" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Ustawienie przepływu na liniach ścianek wewnętrznych." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Przepływ warstwy górnej i dolnej" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Ustawienie przepływu na warstwie górnej i dolnej." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Przepływ ostatniej warstwy górnej" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Ustawienie przepływu na ostatniej warstwie górnej." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Przepływ wypełnienia" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Ustawienie przepływu wypełnienia." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Przepływ warstwy adhezyjnej" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Ustawienie przepływu warstwy adhezyjnej." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Przepływ podpór" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Ustawienie przepływu podpór." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Przepływ podłoża podpór" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Ustawienie przepływu podłoża podpór." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Przepływ dachów podpór" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Ustawienie przepływu podłoża ostatniej warstwy podpór." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Przepływ podstawy podpór" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Ustawienie przepływu pierwszej warstwy podpór." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Przepływ Wieży Czyszczącej" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Przepływ linii wieży podporowej." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2116,8 +2401,8 @@ msgstr "Ogranicz Retrakcje Pomiędzy Podporami" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Unikaj retrakcji podczas poruszania się od podpory do podpory w linii prostej. Załączenie tej funkcji spowoduje skrócenie czasu druku, lecz może prowadzić do nadmiernego nitkowania wewnątrz struktur podporowych." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Pomiń retrakcję, przechodząc od podpory do podpory w linii prostej. Włączenie tego ustawienia oszczędza czas drukowania, ale może prowadzić do nadmiernego ciągnięcia filamentu w strukturze nośnej." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2169,6 +2454,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Prędkość, z jaką filament jest cofany podczas retrakcji po zmianie dyszy." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Dodatkowa ekstruzja po zmianie dyszy" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Ilość dodatkowego materiału do podania po zmianie dyszy." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2360,14 +2655,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Prędkość, z jaką jest drukowana obwódka i obrys. Zwykle jest to wykonywane przy szybkości początkowej warstwy, ale czasami możesz chcieć drukować obwódkę lub obrys z inną prędkością." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maksymalna Prędk. Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Prędkość skoku Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Maksymalna prędkość przesuwu stołu. Ustawienie na zero powoduje, że druk używa domyślnych ustawień oprogramowania dla maksymalnej prędkości z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Szybkość, z jaką wykonuje się pionowy ruch skoku Z. Jest to zwykle mniej niż prędkość drukowania, ponieważ trudniej się porusza stołem drukarki." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2869,16 +3164,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Odległość między dyszą a już wydrukowanym elementem, gdy są one omijane podczas ruchu jałowego." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Rozp. Warstwy w tym Samym Punkcie" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Na każdej warstwie rozpocznij drukowanie obiektu blisko tego samego punktu, abyśmy nie rozpoczynali nowej warstwy w miejscu gdzie skończyła się poprzednia warstwa. Powoduje to lepsze nawisy i małe elementy, ale wydłuża czas druku." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3285,14 +3570,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Odległość między drukowanymi liniami struktury podpory w początkowej warstwie. To ustawienie jest obliczane na podstawie gęstości podpory." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Kierunek Linii Wypełnienia Podpory" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientacja wzoru wypełnienia dla podpór. Wzór podpory jest obracany w płaszczyźnie poziomej." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnego kąta 0 stopni." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3421,8 +3706,8 @@ msgstr "Odległość Łączenia Podpór" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Maksymalna odległość między podporami w kierunkach X/Y. Gdy oddzielne struktury są bliżej siebie niż ta wartość, struktury łączą się w jedną." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Maksymalna odległość między konstrukcjami wspornymi w kierunkach X/Y. Kiedy oddzielne struktury są bliżej siebie niż ta wartość, struktury łączą się w jedną." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3706,8 +3991,8 @@ msgstr "Minimalna Powierzchnia Interfejsu Podpór" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Minimalny rozmiar obszaru dla interfejsu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimalny rozmiar obszaru dla wielokątów interfejsu podpór. Wielokąty, których powierzchnia jest mniejsza niż ta wartość, zostaną wydrukowane jako normalne podpory." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3716,8 +4001,8 @@ msgstr "Minimalna Powierzchnia Dachu Podpór" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Minimalny rozmiar obszaru dla dachu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimalny rozmiar obszaru dla dachu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, zostaną wydrukowane jako normalne podpory." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3726,8 +4011,8 @@ msgstr "Minimalna Powierzchnia Podłoża Podpór" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Minimalny rozmiar obszaru dla podłoża podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Minimalny rozmiar obszaru dla podłoża podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, zostaną wydrukowane jako normalne podpory." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3759,6 +4044,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Wartość przesunięcia zastosowana do obszaru podłoża podpór." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Kierunek linii podłoża podpór" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnych kątów (na przemian między 45 a 135 stopni, jeśli interfejsy są dość grube lub 90 stopni)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Kierunek linii dachu podpór" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku od nowa. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnych kątów (na przemian między 45 a 135 stopni, jeśli interfejsy są dość grube lub 90 stopni)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Kierunek linii podstawy podpór" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista kierunków linii całkowitych do użycia. Elementy z listy są używane sekwencyjnie w miarę postępu warstw, a po osiągnięciu końca listy zaczyna się od początku od nowa. Elementy listy są oddzielone przecinkami, a cała lista jest zawarta w nawiasach kwadratowych. Domyślnie lista jest pusta, co oznacza użycie domyślnych kątów (na przemian między 45 a 135 stopni, jeśli interfejsy są dość grube lub 90 stopni)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3800,14 +4115,14 @@ msgid "The diameter of a special tower." msgstr "Średnica wieży specjalnej." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimalna Średnica" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Maksymalna średnica obsługiwana przez wieżę podporową" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Minimalna średnica w kierunkach X/Y o małej powierzchni, który jest wspierana przez specjalną wieżę wspierającą." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Maksymalna średnica w kierunkach X/Y obszaru, który ma być podtrzymywana przez specjalistyczną wieżę podporową." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4303,16 +4618,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "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" @@ -4353,16 +4658,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" @@ -4503,6 +4798,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Usuń puste warstwy poniżej pierwszej drukowanej warstwy jeżeli takie występują. Wyłączenie tego ustawienia może powodować puste pierwsze warstwy jeżeli Tolerancja Cięcia jest ustawiona na Włącznie lub Środek." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maksymalna Rozdzielczość" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Minimalny rozmiar linii segmentu po pocięciu. Jeżeli to zwiększysz, siatka będzie miała mniejszą rozdzielczość. Może to spowodować przyspieszenie prędkości przetwarzania g-code i przyspieszenie prędkości cięcia poprzez usunięcie detali siatki, których tak czy tak nie można przetworzyć." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maksymalna Rozdzielczość Ruchów Jałowych" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Minimalny rozmiar segmentu linii ruchu jałowego po pocięciu. Jeżeli ta wartość zostanie zwiększona, ruch jałowy będzie miał mniej gładkie zakręty. Może to spowodować przyspieszenie prędkości przetwarzania g-code, ale unikanie modelu może być mniej dokładne." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maksymalne odchylenie" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Maksymalne odchylenie dozwolone przy zmniejszaniu rozdzielczości dla ustawienia maksymalnej rozdzielczości. Jeśli to zwiększysz, wydruk będzie mniej dokładny, ale g-code będzie mniejszy. Maksymalne odchylenie jest limitem dla maksymalnej rozdzielczości, więc wystąpi konflikt, maksymalne odchylenie zawsze będzie używane." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4665,8 +4990,8 @@ msgstr "Wygładź Spiralne Kontury" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Wygładź spiralny kontur, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Należy pamiętać, że wygładzanie będzie miało tendencję do rozmycia drobnych szczegółów powierzchni." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Wygładź spiralne kontury, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Pamiętaj, że wygładzanie będzie powodować rozmycie drobnych szczegółów powierzchni." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4878,36 +5203,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Wieloboki w pociętych warstwach mające obwód mniejszy, niż podany, będą odfiltrowane. Mniejsze wartości dają wyższą rozdzielczość siatki kosztem czasu cięcia. Funkcja ta jest przeznaczona głównie dla drukarek wysokiej rozdzielczości SLA oraz bardzo małych modeli z dużą ilością detali." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maksymalna Rozdzielczość" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Minimalny rozmiar linii segmentu po pocięciu. Jeżeli to zwiększysz, siatka będzie miała mniejszą rozdzielczość. Może to spowodować przyspieszenie prędkości przetwarzania g-code i przyspieszenie prędkości cięcia poprzez usunięcie detali siatki, których tak czy tak nie można przetworzyć." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maksymalna Rozdzielczość Ruchów Jałowych" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Minimalny rozmiar segmentu linii ruchu jałowego po pocięciu. Jeżeli ta wartość zostanie zwiększona, ruch jałowy będzie miał mniej gładkie zakręty. Może to spowodować przyspieszenie prędkości przetwarzania g-code, ale unikanie modelu może być mniej dokładne." - -#: fdmprinter.def.json -msgctxt "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" @@ -5048,16 +5343,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Prędkość poruszania się podczas Wypływania, w stosunku do prędkości ścieżki ekstruzji. Zaleca się wartość nieco poniżej 100%, ponieważ podczas Wypływania ciśnienie w rurce bowden spada." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Zmień Kierunek Skóry" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Zmień kierunek, w jakim drukowane są górne/dolne warstwy. Zazwyczaj są one drukowane na ukos. Ustawienie to dodaje kierunek \"tylko X\" i \"tylko Y\"." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5165,8 +5450,8 @@ msgstr "Włącz Podpory Stożkowe" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Opcja eksperymentalna: W dolnym obszarze podpory powinny być mniejsze niż na zwisie." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Zmniejsz obszary podparcia na podłożu pod zwisem." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5230,23 +5515,23 @@ msgstr "Średnia odległość między losowymi punktami wprowadzonymi w każdym #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" -msgstr "Maks. offset ekstruzji do kompensowania przepływu" +msgid "Flow Rate Compensation Max Extrusion Offset" +msgstr "Maksymalna kompensowania przepływu" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Maksymalna odległość w mm do skompensowania." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Maksymalna odległość w mm do przesuwania filamentu w celu kompensacji zmian wielkości przepływu." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Współczynnik kompensacji przepływu" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Współczynnik mnożący przepływu -> tłumaczenie odległości." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Jak bardzo przesunąć filament, aby skompensować zmiany wielkości przepływu, jako procent odległości, o jaką filament poruszyłby się w ciągu jednej sekundy wytłaczania." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5539,13 +5824,13 @@ msgstr "Różnica w wysokości pomiędzy następną wysokością warstwy i poprz #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Próg zmiany warstw" +msgid "Adaptive Layers Topography Size" +msgstr "Rozmiar topografii warstw adaptacyjnych" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Opóźnienie w wyborze, czy użyć mniejszej warstwy, czy nie. Ta liczba jest porównywana do najbardziej stromego nachylenia na warstwie." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Docelowa odległość pozioma między dwiema sąsiadującymi warstwami. Zmniejszenie tego ustawienia powoduje użycie cieńszych warstw w celu przybliżenia krawędzi warstw." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5554,8 +5839,8 @@ msgstr "Kąt Nawisającej Ścianki" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Ścianka o większym kącie nawisu niż podany będzie drukowana z użyciem ustawień nawisającej ścianki. Przy wartości 90°, żadna ścianka nie będzie traktowana jako ścianka nawisająca." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Ściany, które wystają więcej niż zadany kont, zostaną wydrukowane przy użyciu ustawień wystających ścian. Gdy wartość wynosi 90, żadne ściany nie będą traktowane jako wystające. Zwis, który jest obsługiwany przez podpory, nie będzie również traktowany jako zwis." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5907,6 +6192,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "Odległość, którą głowica musi pokonać w tę i z powrotem po szczotce." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Maksymalny rozmiar małych otworów" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Otwory i kontury części o średnicy mniejszej niż podana zostaną wydrukowane przy małej szybkości operacji." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Maksymalna długość małych elementów" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Kontury obiektów, które są krótsze niż podana długość, zostaną wydrukowane przy użyciu funkcji małej prędkości." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Prędkość małych elementów" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Małe obiekty zostaną wydrukowane z zadanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może poprawić przyczepność i dokładność." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Prędkość początkowej warstwy małych obiektów" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Pierwsza warstwa małych obiektów zostanie wydrukowana z zadanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może poprawić przyczepność i dokładność." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5967,6 +6292,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Forma przesunięcia, która ma być zastosowana do modelu podczas ładowania z pliku." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimalny rozmiar obszaru dla interfejsu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimalny rozmiar obszaru dla dachu podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Minimalny rozmiar obszaru dla podłoża podpór. Obszary, które mają powierzchnię mniejszą od tej wartości, nie będą generowane." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Zmień Kierunek Skóry" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Zmień kierunek, w jakim drukowane są górne/dolne warstwy. Zazwyczaj są one drukowane na ukos. Ustawienie to dodaje kierunek \"tylko X\" i \"tylko Y\"." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Maks. offset ekstruzji do kompensowania przepływu" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Maksymalna odległość w mm do skompensowania." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Współczynnik kompensacji przepływu" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Współczynnik mnożący przepływu -> tłumaczenie odległości." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Próg zmiany warstw" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Opóźnienie w wyborze, czy użyć mniejszej warstwy, czy nie. Ta liczba jest porównywana do najbardziej stromego nachylenia na warstwie." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Ścianka o większym kącie nawisu niż podany będzie drukowana z użyciem ustawień nawisającej ścianki. Przy wartości 90°, żadna ścianka nie będzie traktowana jako ścianka nawisająca." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Małe obiekty zostaną wydrukowane z podanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może pomóc w zachowaniu dokładności." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Prędkość pierwszej warstwy" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Małe elementy na pierwszej warstwie zostaną wydrukowane z podanym procentem ich normalnej prędkości drukowania. Wolniejsze drukowanie może pomóc w zachowaniu dokładności i dokładności." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Przejedź nad górną powierzchnią dodatkowy raz, ale bez ekstrudowania materiału. Topi to plastyk na górze, co powoduje gładszą powierzchnię." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Rozp. Warstwy w tym Samym Punkcie" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Na każdej warstwie rozpocznij drukowanie obiektu blisko tego samego punktu, abyśmy nie rozpoczynali nowej warstwy w miejscu gdzie skończyła się poprzednia warstwa. Powoduje to lepsze nawisy i małe elementy, ale wydłuża czas druku." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientacja wzoru wypełnienia dla podpór. Wzór podpory jest obracany w płaszczyźnie poziomej." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Maksymalne odchylenie dozwolone przy zmniejszaniu rozdzielczości dla ustawienia „Maksymalna rozdzielczość”. Jeśli to zwiększysz, wydruk będzie mniej dokładny, ale G-Code będzie mniejszy." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Wersja G-code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Kontroluje, czy rogi na zewn. linii modelu wpływają na pozycję szwu. Brak oznacza, że rogi nie mają wpływu na pozycję szwu. Ukryj Szew powoduje, że szew będzie się bardziej pojawiał na wewn. rogach. Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na zewn. rogach. Ukryj lub Pokaż Szew powoduje, że szew będzie się bardziej pojawiał na wewn. lub zewn. rogach." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Zignoruj Małe Luki Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Jeśli model ma małe, pionowe szczeliny, to można wykorzystać dodatkowe 5% mocy obliczeniowej do wygenerowania górnej i dolnej skóry w wąskich przestrzeniach. W takim wypadku, wyłącz tę opcję." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Temperatura stosowana dla obszaru roboczego. Jeżeli jest ustawione 0, temperatura nie będzie ustawiona." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Unikaj retrakcji podczas poruszania się od podpory do podpory w linii prostej. Załączenie tej funkcji spowoduje skrócenie czasu druku, lecz może prowadzić do nadmiernego nitkowania wewnątrz struktur podporowych." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maksymalna Prędk. Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Maksymalna prędkość przesuwu stołu. Ustawienie na zero powoduje, że druk używa domyślnych ustawień oprogramowania dla maksymalnej prędkości z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Maksymalna odległość między podporami w kierunkach X/Y. Gdy oddzielne struktury są bliżej siebie niż ta wartość, struktury łączą się w jedną." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimalna Średnica" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Minimalna średnica w kierunkach X/Y o małej powierzchni, który jest wspierana przez specjalną wieżę wspierającą." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Okrągła Wieża Czyszcząca" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Twórz wieżę czyszczącą o okrągłym kształcie." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Kompensacja przepływu: ilość ekstrudowanego materiału jest mnożona przez tę wartość." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Wygładź spiralny kontur, aby zmniejszyć widoczność szwu Z (szew Z powinien być ledwo widoczny na wydruku, ale nadal będzie widoczny w widoku warstwy). Należy pamiętać, że wygładzanie będzie miało tendencję do rozmycia drobnych szczegółów powierzchni." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Opcja eksperymentalna: W dolnym obszarze podpory powinny być mniejsze niż na zwisie." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Liczba Ekstruderów, które są dostępne" diff --git a/resources/i18n/pt_BR/cura.po b/resources/i18n/pt_BR/cura.po index ba07e9ac3b..b5f81cfbf2 100644 --- a/resources/i18n/pt_BR/cura.po +++ b/resources/i18n/pt_BR/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:51+0200\n" -"Last-Translator: Cláudio Sampaio \n" -"Language-Team: Cláudio Sampaio \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-11-15 16:30-0300\n" +"Last-Translator: Cláudio Sampaio \n" +"Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Ajustes da Máquina" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Arquivo G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "O GCodeWriter não suporta modo binário." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Por favor prepare o G-Code antes de exportar." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Assistente de Modelo 3D" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "Atualizar Firmware" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Achatar os ajustes ativos" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Arquivo AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "O perfil foi achatado & ativado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir pela USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Conectado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Uma impressão USB está em progresso, fechar o Cura interromperá esta impressão. Tem certeza?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Arquivo X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Uma impressão ainda está em progresso. O Cura não pode iniciar outra impressão via USB até que a impressão anterior tenha completado." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Grava em formato X3g" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Arquivo X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impressão em Progresso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Salvar em Unidade Removível {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Não há formatos de arquivo disponíveis com os quais escrever!" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Não foi possível salvar em unidade removível {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -229,9 +217,9 @@ msgstr "Ejetar dispositivo removível {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Unidade Removível" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Conectado pela rede." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Status da autenticação" - -#: /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: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: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:115 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Acesso à impressora confirmado" - -#: /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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Enviando dados à impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Enviando Dados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizar com a impressora" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Conectado pela rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dados Enviados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Ver no Monitor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Vazio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Desconhecido" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Imprimir por Nuvem" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Imprimir por Nuvem" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Conectado por Nuvem" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Erro de nuvem" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Não foi possível transferir os dados para a impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "amanhã" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "hoje" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Transferindo via Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Começar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Conectado!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Rever sua conexão" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Conectar pela rede" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Guia de Ajustes do Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprime pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Conectado pela rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Por favor espere até que o trabalho atual tenha sido enviado." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Erro de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Novas impressoras de nuvem encontradas" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Novas impressoras foram encontradas conectadas à sua conta; você as pode ver na sua lista de impressoras descobertas." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Não mostrar essa mensagem novamente" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Você está tentando conectar a {0} mas ele não é host de um grupo. Você pode visitar a página web para configurá-lo como host de grupo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Não é host de grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurar grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Envia e monitora trabalhos de impressão de qualquer lugar usando sua conta Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Conectar à Nuvem Ultimaker" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Começar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Enviando Trabalho de Impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Transferindo trabalho de impressão para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Trabalho de impressão enviado à impressora com sucesso." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dados Enviados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Você está tentando conectar a uma impressora que não está rodando Ultimaker Connect. Por favor atualiza a impressora para o firmware mais recente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Atualize sua impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "O Cura detectou perfis de material que não estão instalados ainda na impressora host do grupo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Enviando material para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Não foi possível transferir os dados para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Erro de rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "amanhã" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "hoje" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimir por Nuvem" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimir por Nuvem" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Conectado por Nuvem" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitor" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível acessar informação de atualização." @@ -625,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Visão de Camadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "O Cura não mostra as camadas corretamente quando Impressão em Arame estiver habilitada" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Visão Simulada" @@ -685,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "Câmbio de Ativos Digitais COLLADA" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "Binário glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "JSON Embutido glTF" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Formato de Triângulos de Stanford" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Câmbio de Ativos Digitais COLLADA Comprimido" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -749,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurar ajustes por Modelo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -765,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Arquivo 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Bico" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "O arquivo de projeto {0} contém um tipo de máquina desconhecido {1}. Não foi possível importar a máquina. Os modelos serão importados ao invés dela." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir Arquivo de Projeto" @@ -792,21 +627,21 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Arquivo G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Interpretando G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-Code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." -msgstr "Assegure-se que o g-code é adequado para sua impressora e configuração antes de enviar o arquivo. A representação de g-code pode não ser acurada." +msgstr "Certifique que o g-code é adequado para sua impressora e configuração antes de enviar o arquivo. A representação de g-code pode não ser acurada." #: /home/ruben/Projects/Cura/plugins/CuraDrive/src/DrivePluginExtension.py:64 msgctxt "@item:inmenu" @@ -857,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Perfil do Cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Assistente de Perfil" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Assistente de Perfil" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -887,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Pré-visualização" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -903,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Login falhou" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Não Suportado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Arquivo Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "O arquivo {0} já existe. Tem certeza que quer sobrescrevê-lo?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL de arquivo inválida:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Os ajustes foram alterados para seguir a disponibilidade de extrusores atuais:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ajustes atualizados" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrusor(es) Desabilitado(s)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Falha ao exportar perfil para {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Falha ao exportar perfil para {0}: complemento escritor relatou erro." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado para {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportação concluída" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Não foi possível importar perfil de {0} antes de uma impressora ser adicionada." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Não há perfil personalizado a importar no arquivo {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Erro ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Este perfil {0} contém dados incorretos, não foi possível importá-lo." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "A máquina definida no perfil {0} ({1}) não equivale à sua máquina atual ({2}), não foi possível importá-lo." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Erro ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado com sucesso" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Arquivo {0} não contém nenhum perfil válido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "O Perfil {0} tem tipo de arquivo desconhecido ou está corrompido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Falta um tipo de qualidade ao Perfil." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1103,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Outros" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Arquivo pré-fatiado {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1123,73 +953,120 @@ msgstr "Grupo #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Fechar" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Adicionar" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Visual" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "O perfil visual é projetado para imprimir protótipos e modelos virtuais com o objetivo de alta qualidade visual e de superfície." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engenharia" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "O perfil de engenharia é projetado para imprimir protótipos funcionais e partes de uso final com o objetivo de melhor precisão e tolerâncias mais estritas." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Rascunho" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "O perfil de rascunho é projetado para imprimir protótipos iniciais e validações de conceito com o objetivo de redução significativa de tempo de impressão." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Não sobreposto" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfis personalizados" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Todos Os Tipos Suportados ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos Os Arquivos (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconhecido" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Impressoras de rede disponíveis" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "As impressoras abaixo não podem ser conectadas por serem parte de um grupo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Impressoras de rede disponíveis" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "A altura do volume de impressão foi reduzida para que o valor da \"Sequência de Impressão\" impeça o eixo de colidir com os modelos impressos." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de Impressão" @@ -1214,39 +1091,39 @@ 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 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Não foi possível contactar o servidor de contas da Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Por favor dê as permissões requeridas ao autorizar esta aplicação." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Algo inesperado aconteceu ao tentar login, por favor tente novamente." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicando e colocando objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Colocando Objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Não foi possível achar um lugar dentro do volume de construção para todos os objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Colocando Objeto" @@ -1395,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Carregando máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Ajustando preferências..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Configurando cena..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Carregando interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Somente um arquivo G-Code pode ser carregado por vez. Pulando importação de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Não é possível abrir nenhum outro arquivo se G-Code estiver sendo carregado. Pulando importação de {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "O modelo selecionado é pequenos demais para carregar." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Ajustes de Impressora" @@ -1454,15 +1336,15 @@ msgstr "X (largura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1494,50 +1376,55 @@ msgstr "Mesa aquecida" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume de construção aquecido" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Sabor de G-Code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Ajustes da Cabeça de Impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y mín." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y máx." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Altura do Eixo" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "G-Code Inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "G-Code Final" @@ -1567,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Deslocamento X do Bico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "G-Code Final do Extrusor" @@ -1593,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1608,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "notas" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Complementos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -1627,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1730,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Sair do Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contribuições da Comunidade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Complementos da Comunidade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiais Genéricos" @@ -1801,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "Em destaque" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Máquina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Plataforma de Impressão" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Suporte" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualidade" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Documento de Dados Técnicos" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Documento de Dados de Segurança" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Diretrizes de Impressão" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Sítio Web" @@ -1921,70 +1828,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gerir Impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Vidro" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "A webcam não está disponível porque você está monitorando uma impressora de nuvem." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Carregando..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Inacessivel" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Ocioso" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Sem Título" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anônimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Requer mudanças na configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Detalhes" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Impressora indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Primeira disponível" @@ -1994,212 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "Enfileirados" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Não há trabalhos de impressão na fila. Fatie e envie um trabalho para adicioná-lo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Trabalhos de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Tempo total de impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Esperando por" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Todos os trabalhos foram impressos." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -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:50 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Conexão Existente" - -#: /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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Conectar a Impressora de Rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Para imprimir diretamente para sua impressora pela rede, por favor se certifique que a impressora esteja conectada na rede usando um cabo de rede ou conectando sua impressora na rede WIFI. Se você não conectar o Cura à sua impressora, você ainda pode usar uma unidade USB para transferir arquivos G-Code para sua impressora.\n" -"\n" -"Selecione sua impressora da lista abaixo:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Para imprimir diretamente na sua impressora pela rede, certifique-se que ela esteja conectada à rede usando um cabo de rede ou conectando sua impressora à sua WIFI. Se você não conectar Cura à sua impressora, você ainda pode usar um drive USB ou SDCard para transferir arquivos G-Code a ela." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selecione sua impressora da lista abaixo:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se sua impressora não está listada, leia o guia de resolução de problemas de impressão em rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versão do firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Endereço" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Esta impressora não está configurada para hospedar um grupo de impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Esta impressora é a hospedeira de um grupo de %1 impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "A impressora neste endereço ainda não respondeu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Conectar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Endereço IP inválido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Por favor entre um endereço IP válido." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Entre o endereço IP ou nome de sua impressora na rede." +msgid "Enter the IP address of your printer on the network." +msgstr "Entre o endereço IP da sua impressora na rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "Ok" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Termina %1 em %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Imprimir pela rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Seleção de impressora" @@ -2288,68 +2184,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Sobrepor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alumínio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Conecta a uma impressora" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2558,72 +2446,71 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo de Malha" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modelo normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimir como suporte" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Não suportar sobreposição com outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Modificar ajustes para sobrepor com outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modificar ajustes para preenchimento de outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Selecionar ajustes" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Selecionar Ajustes a Personalizar para este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Exibir tudo" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de Malha" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como suporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificar ajustes para sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Não suportar sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Preenchimento apenas" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Selecionar ajustes" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir Projeto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" -msgstr "Atualizar existente" +msgstr "Atualizar existentes" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" -msgstr "Criar novo" +msgstr "Criar novos" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 @@ -2648,6 +2535,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Atualizar" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Criar novo" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2661,7 +2553,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Ajustes de perfil" @@ -2672,75 +2564,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Como o conflito no perfil deve ser resolvido?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Objetivo" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Ausente no perfil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 sobreposto" msgstr[1] "%1 sobrepostos" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 sobreposição" msgstr[1] "%1, %2 sobreposições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Ajustes de material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Como o conflito no material deve ser resolvido?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidade dos ajustes" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Ajustes visíveis:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Carregar um projeto limpará todos os modelos da mesa de impressão." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Abrir" @@ -2847,48 +2745,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Criar um backup automaticamente toda vez que o Cura iniciar." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Não suportado" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Exportar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Dica" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Imprimir experimento" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Lista de verificação" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Bloco Olsson" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2974,170 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem certeza que deseja abortar a impressão?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informação" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmar Mudança de Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "O novo diâmetro de filamento está ajustado em %1 mm, que não é compatível com o extrusor atual. Você deseja continuar?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Exibir Nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo de Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Cor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propriedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Custo do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Peso do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Comprimento do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Custo por Metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Este material está vinculado a %1 e compartilha algumas de suas propriedades." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Desvincular Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descrição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informação sobre Aderência" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Ajustes de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Ativar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Exportar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmar Remoção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Tem certeza que deseja remover %1? Isto não poderá ser desfeito!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Não foi possível importar material %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Material %1 importado com sucesso" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Falha em exportar material para %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado para %1 com sucesso" @@ -3152,414 +3014,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Verificar tudo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Atual" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Você precisará reiniciar a aplicação para que essas mudanças tenham efeito." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Fatiar automaticamente quando mudar ajustes." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Fatiar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da área de visualização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Ressaltar áreas sem suporte do modelo em vermelho. Sem suporte, estas áreas não serão impressas corretamente." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Exibir seções pendentes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Move a câmera de modo que o modelo fique no centro da visão quando for selecionado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centralizar câmera quanto o item é selecionado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "O comportamento default de ampliação deve ser invertido?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverter a direção da ampliação de câmera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "A ampliação (zoom) deve se mover na direção do mouse?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Ampliar com o mouse não é suportado na perspectiva ortográfica." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Ampliar na direção do mouse" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Os modelos devem ser movidos na plataforma de modo que não se sobreponham?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Assegurar que os modelos sejam mantidos separados" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Os modelos devem ser movidos pra baixo pra se assentar na plataforma de impressão?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Automaticamente fazer os modelos caírem na mesa de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Exibir mensagem de alerta no leitor de G-Code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Mensagem de alera no leitor de G-Code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "A Visão de Camada deve ser forçada a ficar em modo de compatibilidade?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forçar modo de compatibilidade da visão de camadas (requer reinício)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "O Cura deve abrir no lugar onde foi fechado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurar posição da janela no início" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Que tipo de renderização de câmera deve ser usada?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Renderização de câmera:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspectiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrindo e salvando arquivos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Os modelos devem ser redimensionados dentro do volume de impressão se forem muito grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Um modelo pode ser carregado diminuto se sua unidade for por exemplo em metros ao invés de milímetros. Devem esses modelos ser redimensionados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos minúsculos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Os modelos devem ser selecionados após serem carregados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selecionar modelos ao carregar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Um prefixo baseado no nome da impressora deve ser adicionado ao nome do trabalho de impressão automaticamente?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Adicionar prefixo de máquina ao nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Um resumo deve ser exibido ao salvar um arquivo de projeto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Exibir diálogo de resumo ao salvar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento default ao abrir um arquivo de projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento default ao abrir um arquivo de projeto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Sempre me perguntar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Sempre abrir como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Sempre importar modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Quando você faz alterações em um perfil e troca para um diferent, um diálogo aparecerá perguntando se você quer manter ou aplicar suas modificações, ou você pode forçar um comportamento default e não ter o diálogo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamento default para valores de configuração alterados ao mudar para um perfil diferente: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Sempre perguntar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Sempre descartar alterações da configuração" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Sempre transferir as alterações para o novo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "O Cura deve verificar novas atualizações quando o programa for iniciado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Verificar atualizações na inicialização" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Dados anônimos sobre sua impressão podem ser enviados para a Ultimaker? Nota: nenhuma informação pessoalmente identificável, modelos ou endereços IP são enviados ou armazenados." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar informação (anônima) de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Mais informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Renomear" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Criar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Por favor dê um nome a este perfil." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Renomear Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Perfis default" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Atualizar perfil com ajustes/sobreposições atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar ajustes atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Este perfil usa os defaults especificados pela impressora, portanto não tem ajustes/sobreposições na lista abaixo." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Seus ajustes atuais coincidem com o perfil selecionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Ajustes globais" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Mercado" @@ -3619,36 +3489,36 @@ msgstr "Sem Título" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "procurar nos ajustes" +msgid "Search settings" +msgstr "Ajustes de busca" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copiar todos os valores alterados para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Ocultar este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não exibir este ajuste" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter este ajuste visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar a visibilidade dos ajustes..." @@ -3660,36 +3530,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:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Este ajuste é sempre compartilhado entre todos os extrusores. Modificá-lo aqui mudará o valor para todos." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "O valor é resolvido de valores específicos de cada extrusor " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3700,7 +3570,7 @@ msgstr "" "\n" "Clique para restaurar o valor do perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3711,12 +3581,19 @@ msgstr "" "\n" "Clique para restaurar o valor calculado." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "Não há perfil %1 para a configuração no extrusor %2. O objetivo default será usado no lugar dele" +msgstr[1] "Não há perfis %1 para a configurações nos extrusores %2. O objetivo default será usado no lugar deles" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizado" @@ -3741,36 +3618,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Gera estrutura que suportarão partes do modelo que têm seções pendentes. Sem estas estruturas, tais partes desabariam durante a impressão." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Altura de Camada" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Você modificou alguns ajustes de perfil. Se você quiser alterá-los, use o modo personalizado." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 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" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3781,12 +3643,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Off" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3797,6 +3664,11 @@ msgstr "" "\n" "Clique para abrir o gerenciador de perfis." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Perfis personalizados" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3832,59 +3704,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "A temperatura-alvo do hotend. O hotend vai aquecer ou esfriar na direção desta temperatura. Se for zero, o aquecimento de hotend é desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "A temperatura atual deste hotend." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "A temperatura com a qual pré-aquecer o hotend." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Pré-aquecer" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Aquece o hotend com antecedência antes de imprimir. Você pode continuar ajustando sua impressão enquanto está aquecendo e não terá que esperar que o hotend termine o aquecimento quando estiver pronto para imprimir." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "A cor do material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "O material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "O bico inserido neste extrusor." @@ -3924,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genérico" @@ -3949,42 +3821,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Im&pressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir Como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Habilitar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Desabilitar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "Plataforma de Impressão (&B)" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Perfil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Posição da &câmera" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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)" @@ -4004,17 +3881,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gerenciar Visibilidade dos Ajustes..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Salvar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Exportar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Exportar Seleção..." @@ -4043,12 +3920,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Configurações" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Selecione configuração" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Configurações" @@ -4078,12 +3955,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Habilitado" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Use cola para melhor aderência com essa combinação de materiais." @@ -4103,22 +3980,22 @@ 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" @@ -4128,6 +4005,11 @@ msgctxt "@label" msgid "View type" msgstr "Tipo de Visão" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista de objetos" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4179,32 +4061,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Sem estimativa de custo disponível" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Cancelar" @@ -4239,233 +4126,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Impressoras pré-ajustadas" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Mercado" @@ -4480,49 +4372,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ajustes" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fechando o Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Você tem certeza que deseja sair do Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar Pacote" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir Arquivo(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Encontramos um ou mais arquivos de G-Code entre os arquivos que você selecionou. Você só pode abrir um arquivo de G-Code por vez. Se você quiser abrir um arquivo de G-Code, por favor selecione somente um." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Novidades" @@ -4593,17 +4485,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Sobre o Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "versão: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Solução completa para impressão 3D com filamento fundido." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4612,122 +4504,122 @@ msgstr "" "Cura é desenvolvido pela Ultimaker B.V. em cooperação com a comunidade.\n" "Cura orgulhosamente usa os seguintes projetos open-source:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Interface Gráfica de usuário" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Framework de Aplicações" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Gerador de G-Code" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Biblioteca de comunicação interprocessos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Linguagem de Programação" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "Framework Gráfica" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Ligações da Framework Gráfica" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Biblioteca de Ligações C/C++" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Formato de Intercâmbio de Dados" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Bibliteca de suporte para computação científica" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Biblioteca de suporte para matemática acelerada" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Biblioteca de suporte para manuseamento de arquivos STL" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Biblioteca de suporte para manuseamento de objetos planares" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Biblioteca de suporte para manuseamento de malhas triangulares" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Biblioteca de suporte para análises de redes complexas" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Biblioteca de suporte para manuseamento de arquivos 3MF" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Biblioteca de suporte para streaming e metadados de arquivo" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Biblioteca de comunicação serial" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Biblioteca de descoberta 'ZeroConf'" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteca de recorte de polígonos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Biblioteca de HTTP Python" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Fonte" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Ícones SVG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Implementação de aplicação multidistribuição em Linux" @@ -4747,32 +4639,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Salvar Projeto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Plataforma de Impressão" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Não exibir resumo do projeto ao salvar novamente" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Salvar" @@ -4948,12 +4835,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Resolução de problemas" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Nome da impressora" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Por favor dê um nome à sua impressora" @@ -5012,20 +4899,30 @@ msgctxt "@button" msgid "Get started" msgstr "Começar" -#: /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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Visão 3D" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Viso de Frente" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Visão de Cima" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Visão à Esquerda" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Visão à Direita" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5087,16 +4984,6 @@ 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." @@ -5107,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Atualizador de Firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Cria um perfil de mudanças de qualidade achatado." +msgid "Provides support for reading AMF files." +msgstr "Provê suporta à leitura de arquivos AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Achatador de Perfil" +msgid "AMF Reader" +msgstr "Leitor AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -5127,16 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impressão USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permite salvar a fatia resultante como um arquivo X3G, para suportar impressoras que leem este formato (Malyan, Makerbot e outras impressoras baseadas em Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "Gerador de X3G" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5179,23 +5056,13 @@ msgstr "Complemento de Dispositivo de Escrita Removível" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gerencia conexões de rede a impressoras Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Administra conexões de rede a impressora Ultimaker conectadas." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Conexão de Rede UM3" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Conexão de Rede Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5327,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Atualização de Versão de 3.3 para 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Atualiza configurações do Cura 4.3 para o Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Atualização de Versão de 4.3 para 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5387,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Atualização de Versão 3.0 para 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Atualiza configurações do Cura 4.1 para o Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Atualização de Versão 4.1 para 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5417,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Atualização de Versão de 2.2 para 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Atualiza configurações do Cura 4.2 para o Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Atualização de Versão de 4.2 para 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5427,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Leitor de Imagens" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Provê suporta a ler arquivos de modelo." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Leitor Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5457,16 +5364,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Leitor de 3MF" -#: SVGToolpathReader/build/plugin.json -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." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Leitor de Toolpath SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5507,16 +5404,6 @@ 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." @@ -5557,6 +5444,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis do Cura" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Achatar os ajustes ativos" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "O perfil foi achatado & ativado." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Grava em formato X3g" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Arquivo X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Arquivo X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Malha Comprimida de Triângulos Aberta" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Assistente de Perfil" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Assistente de Perfil" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Tentar novamente" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Núcleo de Impressão" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Não suportar sobreposição com outros modelos" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Modificar ajustes para sobrepor com outros modelos" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modificar ajustes para preenchimento de outros modelos" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Atualizar existente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Não suportado" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Dica" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Imprimir experimento" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista de verificação" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Por favor selecione quaisquer atualizações feitas nesta Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Bloco Olsson" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Renderização de câmera:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Usar funcionalidade de plataforma múltipla de impressão" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Usar funcionalidade de plataforma múltipla de impressão (reinício requerido)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Perfis default" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "procurar nos ajustes" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Altura de Camada" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Este perfil de qualidade não está disponível para seu material e configuração de bico atuais. Por favor, altere-os para habilitar este perfil de qualidade." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Um perfil personalizado está atualmente ativo. Para habilitar o controle deslizante de qualidade, escolha um perfil de qualidade default na aba Personalizado" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "Plataforma de Impressão (&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Perfil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Plataforma de Impressão" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Descarrega o conteúdo de todas as configurações em um arquivo HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Modo Deus" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Cria um perfil de mudanças de qualidade achatado." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Achatador de Perfil" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permite que fabricantes de material criem novos perfis de material e qualidade usando uma interface drop-in." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistente de Perfil de Impressão" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Conectado pela rede." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Conectado pela rede. Por favor aprove a requisição de acesso na impressora." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Conectado pela rede. Sem acesso para controlar a impressora." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Acesso à impressora solicitado. Por favor aprove a requisição na impressora" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Status da autenticação" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Status da Autenticação" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Reenvia o pedido de acesso" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Acesso à impressora confirmado" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Sem acesso para imprimir por esta impressora. Não foi possível enviar o trabalho de impressão." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Solicitar acesso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Envia pedido de acesso à impressora" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Não foi possível iniciar novo trabalho de impressão." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Há um problema com a configuração de sua Ultimaker, o que torna impossível iniciar a impressão. Por favor resolva este problema antes de continuar." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Configuração conflitante" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Tem certeza que quer imprimir com a configuração selecionada?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Há divergências entre a configuração ou calibração da impressora e do Cura. Para melhores resultados, sempre fatie com os PrintCores e materiais que estão carregados em sua impressora." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Envio de novos trabalhos (temporariamente) bloqueado, ainda enviando o trabalho de impressão anterior." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Enviando dados à impressora" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Enviando Dados" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Printcore não carregado no slot {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Nenhum material carregado no slot {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore Diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizar com a impressora" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Deseja usar a configuração atual de sua impressora no Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Os PrintCores e/ou materiais da sua impressora diferem dos que estão dentro de seu projeto atual. Para melhores resultados, sempre fatie para os PrintCores e materiais que estão na sua impressora." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Ver no Monitor" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} acabou de imprimir '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "O trabalho de impressão '{job_name}' terminou." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impressão Concluída" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vazio" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Erro de nuvem" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Não foi possível exportar o trabalho de impressão." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Houve um erro ao conectar à nuvem." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Transferindo via Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Conectar à Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Não me pergunte novamente para esta impressora." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Você agora pode enviar e monitorar trabalhoas de impressão de qualquer lugar usando sua conta Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Conectado!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Rever sua conexão" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "A máquina definida no perfil {0} ({1}) não equivale à sua máquina atual ({2}), não foi possível importá-lo." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Erro ao importar perfil de {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Conexão Existente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Esta impressora ou grupo já foi adicionada ao Cura. Por favor selecione outra impressora ou grupo." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Entre o endereço IP ou nome de sua impressora na rede." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Conecta a uma impressora" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de Ajustes do Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Ampliar na direção do mouse não é suportado na perspectiva ortogonal." + +#~ msgid "Orthogonal" +#~ msgstr "Ortogonal" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gerencia conexões de rede a impressoras Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Conexão de Rede UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Provê informação extra e explicações sobre ajustes do Cura com imagens e animações." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guia de Ajustes" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de Ajustes do Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Os ajustes foram mudados para atender à atual disponibilidade de extrusores: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descrição do usuário" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Estas opçÕes não estão disponíveis porque você está monitorando uma impressora de nuvem." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ir ao Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Todos os trabalhos foram impressos." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Ver histórico de impressão" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Para imprimir diretamente para sua impressora pela rede, por favor se certifique que a impressora esteja conectada na rede usando um cabo de rede ou conectando sua impressora na rede WIFI. Se você não conectar o Cura à sua impressora, você ainda pode usar uma unidade USB para transferir arquivos G-Code para sua impressora.\n" +#~ "\n" +#~ "Selecione sua impressora da lista abaixo:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Por favor certifique-se que sua impressora está conectada:\n" +#~ "- Verifique se a impressora está ligada.\n" +#~ "- Verifique se a impressora está conectada à rede." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Ver somente a plataforma de impressão atual" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Posicionar em todas as plataformas de impressão" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Reposicionar a plataforma de impressão atual" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permite salvar a fatia resultante como um arquivo X3G, para suportar impressoras que leem este formato (Malyan, Makerbot e outras impressoras baseadas em Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "Gerador de X3G" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lê arquivos SVG como caminhos do extrusor, para depurar movimentos da impressora." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Leitor de Toolpath SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Registro de Alterações" diff --git a/resources/i18n/pt_BR/fdmextruder.def.json.po b/resources/i18n/pt_BR/fdmextruder.def.json.po index fed6da63f1..2a89e4eb5d 100644 --- a/resources/i18n/pt_BR/fdmextruder.def.json.po +++ b/resources/i18n/pt_BR/fdmextruder.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-03-18 11:27+0100\n" -"Last-Translator: Cláudio Sampaio \n" -"Language-Team: Cláudio Sampaio \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-16 11:22-0300\n" +"Last-Translator: Cláudio Sampaio \n" +"Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff --git a/resources/i18n/pt_BR/fdmprinter.def.json.po b/resources/i18n/pt_BR/fdmprinter.def.json.po index 4fdc0dc441..14f83b63b0 100644 --- a/resources/i18n/pt_BR/fdmprinter.def.json.po +++ b/resources/i18n/pt_BR/fdmprinter.def.json.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-05-28 09:51+0200\n" -"Last-Translator: Cláudio Sampaio \n" -"Language-Team: Cláudio Sampaio \n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-16 07:10-0300\n" +"Last-Translator: Cláudio Sampaio \n" +"Language-Team: Cláudio Sampaio \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -216,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Indica se a plataforma de impressão pode ser aquecida." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Tem Estabilização de Temperatura do Volume de Impressão" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Indica se a máquina consegue estabilizar a temperatura do volume de construção." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -338,7 +348,7 @@ msgstr "Tempo mínimo em que um extrusor precisará estar inativo antes que o bi #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "Sabor de G-Code" #: fdmprinter.def.json @@ -1021,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "O número de camadas inferiores. Quando calculado da espessura inferior, este valor é arredondado para um inteiro." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Camadas Inferiores Iniciais" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "O número de camadas inferiores iniciais da plataforma de impressão pra cima. Quanto calculado a partir da espessura inferior, esse valor é arrendado para um número inteiro." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1271,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Canto Mais Agudo" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posição da Costura Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "A posição perto da qual se inicia a impressão de cada parte em uma camada." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Atrás à Esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Atrás" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Atrás à Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Frente à Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Frente" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Frente à Esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Esquerda" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1298,8 +1368,8 @@ msgstr "Preferência do Canto da Costura" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controla se cantos no contorno do modelo influenciam a posição da costura. Nenhum significa que cantos não têm influência na posição da costura. Esconder Costura torna mais provável que ela ocorra em um canto interior. Expor Costura torna mais provável que ela ocorra em um canto exterior. Esconder ou Expor Costura torna mais provável que ocorra em um canto, externo ou externo." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controla se os cantos do contorno do modelo influenciam a posição da costura. Nenhum significa que os cantos não terão influência na posição da costura. Ocultar Costura torna mais provável que a costura ocorra em um canto interior. Expôr Costura torna mais provável que a costura ocorra em um canto exterior. Ocultar ou Expôr Costura torna mais provável que a costura ocorra em um canto interior ou exterior. Ocultação Inteligente permite tanto cantos interiores quanto exteriores, mas escolhe os interiores mais frequentemente se apropriado." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1309,17 +1379,22 @@ msgstr "Nenhum" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_inner" msgid "Hide Seam" -msgstr "Esconder Costura" +msgstr "Ocultar Costura" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_outer" msgid "Expose Seam" -msgstr "Expor Costura" +msgstr "Expôr Costura" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" -msgstr "Esconder ou Expor Costura" +msgstr "Ocultar ou Expor Costura" + +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Ocultação Inteligente" #: fdmprinter.def.json msgctxt "z_seam_relative label" @@ -1333,13 +1408,13 @@ msgstr "Quando habilitado, as coordenadas da costura Z são relativas ao centro #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorar Pequenas Lacunas em Z" +msgid "No Skin in Z Gaps" +msgstr "Sem Contorno nas Lacunas Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quando o modelo tem pequenas lacunas verticais, aproximadamente 5% de tempo de computação adicional pode ser gasto ao gerar camada externa superior e inferior nestes espaços estreitos. Em tal caso, desabilite este ajuste." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Quando o modelo tem pequenas lacunas verticais de apenas umas poucas camadas, normalmente há contorno em volta dessas camadas no espaço estreito. Habilite este ajuste para não gerar o contorno se a lacuna vertical for bem pequena. Isso melhora o tempo de impressão e fatiamento, mas tecnicamente deixa preenchimento exposto ao ar." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1358,8 +1433,8 @@ msgstr "Habilitar Passar a Ferro" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Passar sobre a superfície superior depois de impressa, mas sem extrudar material. A idéia é derreter o plástico do topo ainda mais, criando uma superfície mais lisa." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Passa sobre a superfície superior uma vez a mais, mas extrudando muito pouco material. Isto serve para derreter mais o plástico em cima, criando uma superfície lisa. A pressão na câmara do bico é mantida alta tal que as rugas na superfície são preenchidas com material." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1451,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "A máxima mudança de velocidade instantânea em uma direção com que o recurso de passar a ferro é feito." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Porcentagem de Sobreposição do Contorno" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajusta a quantidade de sobreposição entre as paredes e (os extremos de) linhas centrais do contorno, como uma porcentagem das larguras de filete de contorno e a parede mais interna. Uma sobreposição leve permite que as paredes se conectem firmemente ao contorno. Note que, dadas uma largura de contorno e filete de parede iguais, qualquer porcentagem acima de 50% pode fazer com que algum contorno ultrapasse a parede, pois a este ponto a posição do bico do extrusor de contorno pode já ter passado do meio da parede." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sobreposição do Contorno" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajusta a quantidade de sobreposição entre as paredes e (os extermos de) linhas centrais do contorno. Uma sobreposição pequena permite que as paredes se conectem firmemente ao contorno. Note que, dados uma largura de contorno e filete de parede iguais, qualquer valor maior que metade da largura da parede pode fazer com que o contorno ultrapasse a parede, pois a este ponto a posição do bico do extrusor de contorno pode já ter passado do meio da parede." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1616,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "O padrão de preenchimento é movido por esta distância no eixo Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Aleatorizar o Começo do Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Aleatoriza qual linha do preenchimento é impressa primeiro. Isto evita que um segmento seja mais forte que os outros, mas ao custo de um percurso adicional." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1670,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "A quantidade de sobreposição entre o preenchimento e as paredes. Uma leve sobreposição permite que as paredes se conectem firmemente ao preenchimento." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Porcentagem de Sobreposição do Contorno" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajusta a quantidade de sobreposição entre as paredes e (os extremos de) linhas centrais do contorno, como uma porcentagem das larguras de filete de contorno e a parede mais interna. Uma sobreposição leve permite que as paredes se conectem firmemente ao contorno. Note que, dadas uma largura de contorno e filete de parede iguais, qualquer porcentagem acima de 50% pode fazer com que algum contorno ultrapasse a parede, pois a este ponto a posição do bico do extrusor de contorno pode já ter passado do meio da parede." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Sobreposição do Contorno" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajusta a quantidade de sobreposição entre as paredes e (os extermos de) linhas centrais do contorno. Uma sobreposição pequena permite que as paredes se conectem firmemente ao contorno. Note que, dados uma largura de contorno e filete de parede iguais, qualquer valor maior que metade da largura da parede pode fazer com que o contorno ultrapasse a parede, pois a este ponto a posição do bico do extrusor de contorno pode já ter passado do meio da parede." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1877,8 +1962,8 @@ msgstr "Temperatura do Volume de Impressão" #: fdmprinter.def.json 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." +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" @@ -1990,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Raio de contração do material em porcentagem." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Material Cristalino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Este material é do tipo que se destaca completamente quando aquecido (cristalino), ou é o tipo que produz cadeias de polímero entrelaçadas (não-cristalino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Posição Retraída Anti-escorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "De quanto o material precisa ser retraído antes que pare de escorrer." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocidade de Retração Anti-escorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Qual a velocidade do material para que seja retraído durante a troca de filamento sem escorrimento." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posição Retraída de Preparação de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Quanto o filamento pode ser esticado antes que quebre, quando aquecido." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocidade de Retração de Preparação de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Qual a velocidade do material para que seja retraído antes de quebrar em uma retração." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posição Retraída de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "De quanto o filamento deve ser retraído para se destacar completamente." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocidade de Retração de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "A velocidade com a qual retrair o filamento para que se destaque completamente." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura de Quebra" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "A temperatura em que o filamento é destacado completamente." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2000,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensação de fluxo: a quantidade de material extrudado é multiplicado por este valor." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Fluxo de Parede" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensação de fluxo em filetes das paredes." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Fluxo da Parede Externa" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensação de fluxo no filete de parede mais externo." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Fluxo da(s) Parede(s) Interna(s)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Compensação de fluxo em todos os filetes de parede excetuando o mais externo." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Fluxo de Topo/Base" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensação de fluxo em filetes do topo e base." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Fluxo do Contorno da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensação de Fluxo em filetes das áreas no topo da impressão." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Fluxo de Preenchimento" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensação de fluxo em filetes de preenchimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Fluxo de Skirt/Brim" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensação de Fluxo em filetes de Skirt e Brim." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Fluxo de Suporte" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensação de fluxo em filetes de estruturas de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Fluxo de Interface de Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensação de fluxo em filetes do teto ou base do suporte." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Fluxo do Teto de Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensação de fluxo em filetes do teto de suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Fluxo da Base de Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensação de fluxo nos filetes da base do suporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluxo da Torre de Purga" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensação de fluxo em filetes de torre de purga." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2117,8 +2402,8 @@ msgstr "Limitar Retrações de Suporte" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Omitir retrações quando mudar de suporte a suporte em linha reta. Habilitar este ajuste economiza tempo de impressão, mas pode levar a fiapos entremeados à estrutura de suporte." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Omitir a retração ao mover de suporte a suporte em linha reta. Habilitar este ajuste economiza tempo de impressão, mas pode levar a fiapos excessivos na estrutura de suporte." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2170,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "A velocidade em que o filamento é empurrado para a frente depois de uma retração de troca de bico." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Quantidade de Avanço Extra da Troca de Bico" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Material extra a avançar depois da troca de bico." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2361,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Velocidade em que o Brim (Bainha) e Skirt (Saia) são impressos. Normalmente isto é feito na velocidade de camada inicial, mas você pode querer imprimi-los em velocidade diferente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocidade Máxima em Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocidade do Salto Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "A velocidade máxima com que o eixo Z é movido. Colocar isto em zero faz com que a impressão use os defaults de firmware para a velocidade máxima de Z." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "A velocidade em que o movimento Z vertical é feito para os saltos Z. Tipicamente mais baixa que a velocidade de impressão já que mover a mesa de impressão ou eixos da máquina é mais difícil." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2870,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "A distância entre o bico e as partes já impressas quando evitadas durante o percurso." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Iniciar Camadas com a Mesma Parte" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Em cada camada iniciar imprimindo o objeto próximo ao mesmo ponto, de modo que não comecemos uma nova camada quando imprimir a peça com que a camada anterior terminou. Isso permite seções pendentes e partes pequenas melhores, mas aumenta o tempo de impressão." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3286,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distância entre os filetes da camada inicial da camada de suporte. Este ajuste é calculado pela densidade de suporte." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direção de Filete do Preenchimento de Suporte" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientação do padrão de preenchimento para suportes. O padrão de preenchimento do suporte é rotacionado no plano horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar o ângulo default de 0 graus." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3422,8 +3707,8 @@ msgstr "Distância de União do Suporte" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Distância máxima entre as estruturas de suporte nas direções X/Y. Quando estrutura separadas estão mais perto que este valor, as estruturas são combinadas em uma única." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando estruturas separadas estão mais próximas que este valor, elas são fundidas em uma só." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3707,8 +3992,8 @@ msgstr "Área Mínima de Interface de Suporte" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Área mínima para polígonos de interface de suporte. Polígonos que tiverem uma área menor que este valor não serão gerados." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Área mínima para os polígonos da interface de suporte. Polígonos que têm área menor que este valor serão impressos como suporte normal." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3717,8 +4002,8 @@ msgstr "Área Mínima de Teto de Suporte" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Área mínima para os tetos do suporte. Polígonos que tiverem área menor que este valor são serão gerados." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Área mínima para os tetos do suporte. Polígonos que têm área menor que este valor serão impressos como suporte normal." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3727,8 +4012,8 @@ msgstr "Área Mínima de Base de Suporte" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Área mínima para as bases do suporte. Polígonos que tiverem uma área menor que este valor não serão gerados." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Área mínima para as bases do suport. Polígonos que têm área menor que este valor serão impressos como suporte normal." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3760,6 +4045,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Quantidade de deslocamento aplicado às bases do suporte." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direções do Filete de Interface de Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar os ângulos default (alternando entre 45 e 135 graus se as interfaces forem grossas, ou 90 se não)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direções de Filete do Teto do Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar os ângulos default (alternando entre 45 e 135 graus se as interfaces forem grossas, ou 90 se não)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direções de Filete da Base do Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de direções inteiras de filete. Elementos da lista são usados sequencialmente à medida que as camadas progridem e quando o fim da lista é alcançado, ela recomeça do início. Os itens da lista são separados por vírgulas e a lista inteira é contida em colchetes. O default é uma lista vazia, o que significa usar os ângulos default (alternando entre 45 e 135 graus se as interfaces forem grossas, ou 90 se não)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3801,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "O diâmetro da torre especial." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diâmetro mínimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diâmetro Máximo Suportado por Torres" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Diâmeto mínimo nas direções X/Y de uma área pequena que deverá ser suportada por uma torre de suporte especial." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Diâmetro máximo nas direções X e Y da pequena área que será suportada por uma torre especializada de suporte." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3878,7 +4193,7 @@ msgstr "Tipo de Aderência da Mesa de Impressão" #: fdmprinter.def.json msgctxt "adhesion_type description" msgid "Different options that help to improve both priming your extrusion and adhesion to the build plate. Brim adds a single layer flat area around the base of your model to prevent warping. Raft adds a thick grid with a roof below the model. Skirt is a line printed around the model, but not connected to the model." -msgstr "Diferentes opções que ajudam a melhorar a extrusão e a aderência à plataforma de construção. Brim (bainha) adiciona uma camada única e chata em volta da base de seu modelo para impedir warping. Raft (balsa) adiciona uma grade densa com 'teto' abaixo do modelo. Skirt (saia) é uma linha impressa em volta do modelo, mas não conectada ao modelo, para apenas iniciar o processo de extrusão." +msgstr "Diferentes opções que ajudam a melhorar a extrusão e a aderência à plataforma de impressão. Brim (bainha) adiciona uma camada única e chata em volta da base de seu modelo para impedir warping. Raft (balsa) adiciona uma grade densa com 'teto' abaixo do modelo. Skirt (saia) é uma linha impressa em volta do modelo, mas não conectada ao modelo, para apenas iniciar o processo de extrusão." #: fdmprinter.def.json msgctxt "adhesion_type option skirt" @@ -4304,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprimir uma torre próxima à impressão que serve para purgar o material a cada troca de bico." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre de Purga Circular" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Faz a torre de purga na forma circular." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4354,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "A coordenada Y da posição da torre de purga." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Fluxo da Torre de Purga" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensação de Fluxo: a quantidade de material extrudado é multiplicado por este valor." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4504,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Remove camadas vazias entre a primeira camada impressa se estiverem presentes. Desabilitar este ajuste pode criar camadas iniciais vazias se a Tolerância de Fatiamento estiver configurada para Exclusivo ou Meio." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolução Máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "O tamanho mínimo de um segmento de linha após o fatiamento. Se você aumentar este valor, a malha terá uma resolução menor. Isto pode permitir que a impressora mantenha a velocidade que precisa para processar o G-Code e aumentará a velocidade de fatiamento ao remover detalhes da malha que não poderia processar de qualquer jeito." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Máxima Resolução de Percurso" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "O tamanho mínimo de um segmento de linha de percurso após o fatiamento. Se o valor aumenta, os movimentos de percurso terão cantos menos suaves. Isto pode permitir que a impressora mantenha a velocidade necessária para processar o G-Code, mas pode fazer com que evitar topar no modelo fique menos preciso." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Desvio Máximo" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "O desvio máximo permitido ao reduzir a resolução para o ajuste de Máxima Resolução. Se você aumentar isto, a impressão será menos precisa, mas o G-Code será menor. O Desvio Máximo é um limite para Resolução Máxima, portanto se os dois conflitarem o Desvio Máximo sempre será o valor dominante." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4666,8 +4991,8 @@ msgstr "Suavizar Contornos Espiralizados" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Suaviza os contornos espiralizados para reduzir a visibilidade da costura em Z (esta costura será quase invisível na impressão mas ainda pode ser vista na visão de camadas). Note que suavizar tenderá a remover detalhes finos de superfície." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Suavizar os contornos espiralizados para reduzir a visibilidade da costura Z (a costura Z deve ser quase invisível na impressão mas ainda será visível na visão de camadas). Note que a suavização tenderá a embaçar detalhes finos de superfície." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4879,36 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Polígonos em camadas fatiadas que tiverem uma circunferência menor que esta quantia serão excluídos. Menores valores levam a malha de maior resolução ao custo de tempo de fatiamento. Serve melhor para impressoras SLA de alta resolução e pequenos modelos 3D com muitos detalhes." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Resolução Máxima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "O tamanho mínimo de um segmento de linha após o fatiamento. Se você aumentar este valor, a malha terá uma resolução menor. Isto pode permitir que a impressora mantenha a velocidade que precisa para processar o G-Code e aumentará a velocidade de fatiamento ao remover detalhes da malha que não poderia processar de qualquer jeito." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Máxima Resolução de Percurso" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "O tamanho mínimo de um segmento de linha de percurso após o fatiamento. Se o valor aumenta, os movimentos de percurso terão cantos menos suaves. Isto pode permitir que a impressora mantenha a velocidade necessária para processar o G-Code, mas pode fazer com que evitar topar no modelo fique menos preciso." - -#: fdmprinter.def.json -msgctxt "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" @@ -5049,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "A velocidade pela qual se mover durante a desengrenagem, relativa à velocidade do caminho de extrusão. Um valor ligeiramente menor que 100% é sugerido, já que durante a desengrenagem a pressão dentro do hotend cai." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alterna a Rotação do Contorno" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna a direção em que as camadas superiores e inferiores são impressas. Normalmente elas são impressas somente na diagonal. Este ajuste permite direções somente no X e somente no Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5166,8 +5451,8 @@ msgstr "Habilitar Suporte Cônico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Recurso experimental: Faz as áreas de suporte menores na base que na seção pendente." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Faz as áreas de suporte menores na base que na seção pendente." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5231,23 +5516,23 @@ msgstr "A distância média entre os pontos aleatórios introduzidos em cada seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" -msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo" +msgid "Flow Rate Compensation Max Extrusion Offset" +msgstr "Máximo Deslocamento de Extrusão de Compensação de Taxa de Fluxo" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "A distância máxima em mm a compensar." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "A distância máxima em mm para mover o filamento para compensar mudanças na taxa de fluxo." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" -msgstr "Fator de compensaçõ de taxa de fluxo" +msgid "Flow Rate Compensation Factor" +msgstr "Fator de Compensação da Taxa de Fluxo" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "O fator de multiplicação para a tradução entre taxa de fluxo -> distância." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Em quanto mover o filamento para compensar mudanças na taxa de fluxo, como uma porcentagem da distância que o filamento seria movido em um segundo de extrusão." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5540,13 +5825,13 @@ msgstr "A diferença em tamanho da próxima camada comparada à anterior." #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Limite das Camadas Adaptativas" +msgid "Adaptive Layers Topography Size" +msgstr "Tamanho da Topografia de Camadas Adaptativas" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Limite até onde se usa uma camada menor ou não. Este número é comparado à tangente da ladeira mais vertical da camada." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Trata da distância horizontal entre duas camadas adjacentes. Reduzir este ajuste faz com que camadas mais finas sejam usadas para reunir as bordas das camadas mais perto uma da outra." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5555,8 +5840,8 @@ msgstr "Ângulo de Parede Pendente" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Paredes que têm inclinação maior que este ângulo serão impressas usando ajustes de seção pendente de parede. Quando o valor for 90, nenhuma parede será tratada como seção pendente." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Paredes que pendem por mais do que esse ângulo serão impressas usando ajustes de paredes pendentes. Quando este valor for 90, nenhuma parede será tratada como pendente. Seções pendentes que têm suportes também não serão tratadas como pendentes." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5908,6 +6193,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "A distância com que mover a cabeça pra frente e pra trás durante a varredura." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Tamanho Máximo de Furos Pequenos" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Furos e contornos de partes com diâmetro menor que este serão impressos usando a Velocidade de Aspecto Pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Comprimento Máximo do Aspecto Pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Contornos de aspectos menores que este comprimento serão impressos usando a Velocidade de Aspecto Pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocidade de Aspecto Pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Aspectos pequenos serão impressos nessa porcentagem da velocidade normal. Impressão mais lenta pode ajudar com aderência e precisão." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocidade de Camada Inicial de Aspecto Pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Aspectos pequenos na primeira camada serão impressos nesta porcentagem de sua velocidade de impressão normal. Impressão mais lenta pode ajudar com aderência e precisão." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5968,6 +6293,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformação a ser aplicada ao modelo após o carregamento do arquivo." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Área mínima para polígonos de interface de suporte. Polígonos que tiverem uma área menor que este valor não serão gerados." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Área mínima para os tetos do suporte. Polígonos que tiverem área menor que este valor são serão gerados." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Área mínima para as bases do suporte. Polígonos que tiverem uma área menor que este valor não serão gerados." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alterna a Rotação do Contorno" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna a direção em que as camadas superiores e inferiores são impressas. Normalmente elas são impressas somente na diagonal. Este ajuste permite direções somente no X e somente no Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Deslocamento de extrusão máxima da compensação de taxa de fluxo" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "A distância máxima em mm a compensar." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Fator de compensaçõ de taxa de fluxo" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "O fator de multiplicação para a tradução entre taxa de fluxo -> distância." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Limite das Camadas Adaptativas" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Limite até onde se usa uma camada menor ou não. Este número é comparado à tangente da ladeira mais vertical da camada." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Paredes que têm inclinação maior que este ângulo serão impressas usando ajustes de seção pendente de parede. Quando o valor for 90, nenhuma parede será tratada como seção pendente." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Pequenos aspectos serão impressos com esta porcentagem de sua velocidade normal de impressão. Impressão mais lenta pode ajudar com aderência e precisão." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocidade da Primeira Camada" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Aspectos pequenos na primeira camada serão impressos nesta porcentagem de sua velocidade normal de impressão. Impressão mais lenta pode ajudar com aderência e precisão." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Passar sobre a superfície superior depois de impressa, mas sem extrudar material. A idéia é derreter o plástico do topo ainda mais, criando uma superfície mais lisa." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Iniciar Camadas com a Mesma Parte" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Em cada camada iniciar imprimindo o objeto próximo ao mesmo ponto, de modo que não comecemos uma nova camada quando imprimir a peça com que a camada anterior terminou. Isso permite seções pendentes e partes pequenas melhores, mas aumenta o tempo de impressão." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientação do padrão de preenchimento para suportes. O padrão de preenchimento do suporte é rotacionado no plano horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "O valor máximo de desvio permitido ao reduzir a resolução para o ajuste de Resolução Máxima. Se você aumenta este número, a impressão terá menos acuidade, mas o G-Code será menor." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Sabor de G-Code" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controla se cantos no contorno do modelo influenciam a posição da costura. Nenhum significa que cantos não têm influência na posição da costura. Esconder Costura torna mais provável que ela ocorra em um canto interior. Expor Costura torna mais provável que ela ocorra em um canto exterior. Esconder ou Expor Costura torna mais provável que ocorra em um canto, externo ou externo." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorar Pequenas Lacunas em Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quando o modelo tem pequenas lacunas verticais, aproximadamente 5% de tempo de computação adicional pode ser gasto ao gerar camada externa superior e inferior nestes espaços estreitos. Em tal caso, desabilite este ajuste." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "A temperatura usada para o volume de construção. Se o valor for zero, a temperatura de volume de impressão não será ajustada." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Omitir retrações quando mudar de suporte a suporte em linha reta. Habilitar este ajuste economiza tempo de impressão, mas pode levar a fiapos entremeados à estrutura de suporte." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocidade Máxima em Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "A velocidade máxima com que o eixo Z é movido. Colocar isto em zero faz com que a impressão use os defaults de firmware para a velocidade máxima de Z." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Distância máxima entre as estruturas de suporte nas direções X/Y. Quando estrutura separadas estão mais perto que este valor, as estruturas são combinadas em uma única." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diâmetro mínimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Diâmeto mínimo nas direções X/Y de uma área pequena que deverá ser suportada por uma torre de suporte especial." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre de Purga Circular" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Faz a torre de purga na forma circular." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensação de Fluxo: a quantidade de material extrudado é multiplicado por este valor." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Suaviza os contornos espiralizados para reduzir a visibilidade da costura em Z (esta costura será quase invisível na impressão mas ainda pode ser vista na visão de camadas). Note que suavizar tenderá a remover detalhes finos de superfície." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Recurso experimental: Faz as áreas de suporte menores na base que na seção pendente." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Número de Extrusores habilitados" diff --git a/resources/i18n/pt_PT/cura.po b/resources/i18n/pt_PT/cura.po index 0ceb5cbe66..a7765c66a3 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\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-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Portuguese , Paulo Miranda , Portuguese \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.7\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Definições da Máquina" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Ficheiro G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "O GCodeWriter não suporta modo sem texto." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Prepare um G-code antes de exportar." @@ -57,7 +57,7 @@ msgid "3D Model Assistant" msgstr "Assistente de Modelos 3D" # rever! -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -65,66 +65,56 @@ msgid "" "

{model_names}

\n" "

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

\n" "

View print quality guide

" -msgstr "

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

\n

{model_names}

\n

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

\n

Ver o guia de qualidade da impressão

" +msgstr "" +"

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

\n" +"

{model_names}

\n" +"

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

\n" +"

Ver o guia de qualidade da impressão

" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "Atualizar firmware" -# rever! -# flatten -ver contexto! -# nivelar? -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Nivelar Definições Ativas" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Ficheiro AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "O perfil foi nivelado & ativado." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Impressão USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Imprimir por USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Ligado via USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Existe uma impressão por USB em curso; fechar o Cura irá interromper esta impressão. Tem a certeza?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Ficheiro X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Existe uma impressão em curso. O Cura não consegue iniciar outra impressão via USB até a impressão anterior ser concluída." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Grava X3g num ficheiro" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Ficheiro X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Impressão em curso" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -162,7 +152,7 @@ msgstr "Guardar no Disco Externo {0}" # rever! # contexto #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Não existem quaisquer formatos disponíveis para gravar o ficheiro!" @@ -199,10 +189,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Não foi possível guardar no Disco Externo {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Erro" @@ -234,9 +223,9 @@ msgstr "Ejetar Disco Externo {0}" # Atenção? #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Aviso" @@ -263,356 +252,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Disco Externo" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Ligado através da rede." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Estado da autenticação" - -#: /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: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: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:115 -msgctxt "@info:status" -msgid "Access to the printer accepted" -msgstr "Acesso à impressora confirmado" - -#: /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: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: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: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: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." - -# rever! -# ver contexto! pode querer dizer -# Configuração incompatível -#: /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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "A enviar dados para a impressora" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "A Enviar Dados" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Cancelar" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Sincronizar com a impressora" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Ligado através da rede" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Dados Enviados" - -# rever! -# contexto -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Ver no Monitor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, python-brace-format -msgctxt "@info:status" -msgid "The print job '{job_name}' was finished." -msgstr "O trabalho de impressão '{job_name}' terminou." - -# rever! -# Concluída? -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Vazio" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Desconhecido" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Imprimir através da cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Imprimir através da cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Ligada através da cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Erro da cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Não foi possível carregar os dados para a impressora." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "amanhã" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "hoje" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "A carregar através da cloud do Ultimaker" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." -msgid "Connect to Ultimaker Cloud" -msgstr "Ligar à cloud do Ultimaker" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Iniciar" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Ligada!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Reveja a sua ligação" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Ligar Através da Rede" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Guia de definições do Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Imprimir através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Ligado através da rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Aguarde até o trabalho atual ter sido enviado." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Erro de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Encontradas novas impressoras na cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Foram encontradas novas impressoras associadas à sua conta. Pode encontrá-las na sua lista de impressoras detetadas." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Não mostrar esta mensagem novamente" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Está a tentar ligar a {0}, mas esta não é Host de um grupo. Pode visitar a página Web para a configurar como Host do grupo." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Não é Host do grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Configurar grupo" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Envie e monitorize trabalhos de impressão a partir de qualquer lugar através da sua conta Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ligar à cloud da Ultimaker" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Iniciar" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "A enviar trabalho de impressão" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Carregar um trabalho de impressão na impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "O trabalho de impressão foi enviado com sucesso para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Dados Enviados" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Está a tentar ligar a uma impressora que não tem o Ultimaker Connect. Atualize a impressora para o firmware mais recente." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Atualizar a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "O Cura detetou perfis de material que ainda não estavam instalados na impressora que aloja o grupo {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Enviar materiais para a impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Não foi possível carregar os dados para a impressora." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Erro de rede" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "amanhã" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "hoje" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Imprimir através da cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Imprimir através da cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Ligada através da cloud" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Monitorizar" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Não foi possível aceder às informações de atualização." @@ -639,12 +436,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Vista Camadas" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Quando a opção \"Wire Printing\" está ativa, o Cura não permite visualizar as camadas de uma forma precisa" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Visualização por Camadas" @@ -699,6 +496,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "Imagem GIF" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -763,12 +590,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Configurar definições individuais Por-Modelo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Personalizado" @@ -779,19 +606,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Ficheiro 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Nozzle" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "O ficheiro de projeto {0} contém um tipo de máquina desconhecido {1}. Não é possível importar a máquina. Em vez disso, serão importados os modelos." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Abrir ficheiro de projeto" @@ -806,18 +633,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Ficheiro G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "A analisar G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Detalhes do G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Certifique-se de que este g-code é apropriado para a sua impressora e respetiva configuração, antes de enviar o ficheiro para a impressora. A representação do g-code poderá não ser exata." @@ -871,16 +698,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Perfil Cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Assistente de perfis" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Assistente de perfis" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -901,7 +718,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Pré-visualizar" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -917,141 +733,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Falha no início de sessão" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Não suportado" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "O Ficheiro Já Existe" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "O ficheiro {0} já existe. Tem a certeza de que deseja substituí-lo?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "URL de ficheiro inválido:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "As definições foram alteradas de forma a corresponder aos extrusores disponíveis de momento:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Definições atualizadas" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Extrusor(es) desativado(s)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Desconhecido" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Falha ao exportar perfil para {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Falha ao exportar perfil para {0}: O plug-in de gravação comunicou uma falha." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Perfil exportado para {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Exportação bem-sucedida" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Não é possível importar o perfil de {0} antes de ser adicionada uma impressora." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Nenhum perfil personalizado para importar no ficheiro {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Falha ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "O perfil {0} contém dados incorretos, não foi possível importá-lo." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "A máquina definida no perfil {0} ({1}) não corresponde à sua máquina atual ({2}), não foi possível importá-la." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Falha ao importar perfil de {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Perfil {0} importado com êxito" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "O ficheiro {0} não contém qualquer perfil válido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "O perfil {0} é de um formato de ficheiro desconhecido ou está corrompido." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Perfil personalizado" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "O perfil não inclui qualquer tipo de qualidade." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1117,19 +940,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Outro" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Ficheiro pré-seccionado {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1137,75 +959,125 @@ msgstr "Grupo #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Fechar" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Adicionar" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Cancelar" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Acabamento" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "O perfil de acabamento foi criado para imprimir modelos e protótipos finais com o objetivo de se obter uma elevada qualidade de acabamento da superfície" +" em termos visuais." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "O perfil de engenharia foi criado para imprimir protótipos funcionais e peças finais com o objetivo de se obter uma maior precisão dimensional assim como" +" tolerâncias menores." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Rascunho" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "O perfil de rascunho foi concebido para imprimir protótipos de teste e de validação de conceitos com o objetivo de se obter uma redução significativa do" +" tempo de impressão." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Manter" +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Perfis personalizados" + # rever! # contexto -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Todos os Formatos Suportados ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Todos os Ficheiros (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Desconhecido" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Impressoras em rede disponíveis" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Material Personalizado" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Personalizado" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Não é possível ligar a(s) impressora(s) abaixo porque faz(em) parte de um grupo" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Impressoras em rede disponíveis" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "A altura do volume de construção foi reduzida devido ao valor da definição \"Sequência de impressão\" para impedir que o pórtico colida com os modelos impressos." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Volume de construção" @@ -1230,39 +1102,39 @@ 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 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Não é possível aceder ao servidor da conta Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Forneça as permissões necessárias ao autorizar esta aplicação." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Ocorreu algo inesperado ao tentar iniciar sessão, tente novamente." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Multiplicar e posicionar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "A posicionar objetos" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Não é possível posicionar todos os objetos dentro do volume de construção" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "A Posicionar Objeto" @@ -1299,7 +1171,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? @@ -1334,7 +1211,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" @@ -1408,53 +1288,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "A carregar máquinas..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "A configurar as preferências..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "A configurar cenário..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "A carregar interface..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Apenas pode ser carregado um ficheiro G-code de cada vez. Importação {0} ignorada" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Não é possível abrir outro ficheiro enquanto o G-code estiver a carregar. Importação {0} ignorada" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "O modelo selecionado era demasiado pequeno para carregar." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Definições da impressora" @@ -1467,15 +1352,15 @@ msgstr "X (Largura)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1507,50 +1392,55 @@ msgstr "Base aquecida" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Volume de construção aquecido" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Variante do G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Definições da cabeça de impressão" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X mín" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y mín" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X máx" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y máx" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Altura do pórtico" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Número de Extrusores" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "G-code inicial" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "G-code final" @@ -1580,22 +1470,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Desvio X do Nozzle" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "G-code final do extrusor" @@ -1606,7 +1496,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Instalado" @@ -1621,16 +1511,16 @@ msgctxt "@label" msgid "ratings" msgstr "classificações" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Plug-ins" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Materiais" @@ -1640,49 +1530,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1743,17 +1633,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Sair do Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Contribuições comunitárias" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Plug-ins comunitários" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Materiais genéricos" @@ -1794,7 +1684,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" @@ -1811,27 +1704,47 @@ msgctxt "@label" msgid "Featured" msgstr "Em Destaque" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Compatibilidade" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Máquina" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Base de construção" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Suportes" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Qualidade" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Ficha técnica" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Ficha de segurança" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Instruções de impressão" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Site" @@ -1932,70 +1845,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Gerir impressora" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Vidro" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "Esta webcam não está disponível pois está a monitorizar uma impressora na cloud." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "A carregar..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Inacessível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Inativa" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Sem título" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anónimo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Requer alterações na configuração" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Detalhes" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Impressora indisponível" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Primeira disponível" @@ -2005,211 +1924,197 @@ msgctxt "@label" msgid "Queued" msgstr "Em fila" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Não existem trabalhos de impressão na fila. Para adicionar um trabalho, seccione e envie." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Trabalhos em Impressão" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Tempo de impressão total" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "A aguardar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Todos os trabalhos foram impressos." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -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:50 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Ligação Existente" - -#: /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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Ligar a uma Impressora em Rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n\nSelecione a sua impressora na lista em baixo:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a impressora está ligada à rede através de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Selecione a impressora a partir da lista abaixo:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Editar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Remover" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Atualizar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Se a sua impressora não estiver na lista, por favor, consulte o guia de resolução de problemas de impressão em rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tipo" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Versão de Firmware" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Endereço" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Esta impressora não está configurada para alojar um grupo de impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Esta impressora aloja um grupo de %1 impressoras." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "A impressora neste endereço ainda não respondeu." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Ligar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Endereço IP inválido" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Introduza um endereço IP válido." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Endereço da Impressora" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Introduza o endereço IP ou o nome de anfitrião da sua impressora na rede." +msgid "Enter the IP address of your printer on the network." +msgstr "Introduza o endereço IP da sua impressora na rede." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Termina %1 a %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Imprimir" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Imprimir Através da Rede" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Imprimir" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Seleção de Impressora" @@ -2298,65 +2203,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Ignorar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:105 msgctxt "@label" msgid "Change print core %1 from %2 to %3." msgstr "Substituir o print core %1 de %2 para %3." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:88 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:108 msgctxt "@label" msgid "Change build plate to %1 (This cannot be overridden)." msgstr "Alterar base de construção para %1 (isto não pode ser substituído)." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alumínio" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Ligar a uma impressora" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2569,70 +2469,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Suavização" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Tipo de Objecto" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Modelo normal" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Imprimir como suporte" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Retirar suportes na intercepção com outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Alterar as definições dos objetos que intercepta" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Modificar definições do enchimento de outros modelos" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Selecionar definições" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Selecionar definições a personalizar para este modelo" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrar..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Mostrar tudo" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Tipo de Objecto" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Modelo normal" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Imprimir como suporte" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Modificar definições para sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Não suportar sobreposições" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Apenas enchimento" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Selecionar definições" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Abrir Projeto" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Atualizar existente" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Criar nova" @@ -2659,6 +2558,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Atualizar" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Criar nova" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2672,7 +2576,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Definições do perfil" @@ -2683,77 +2587,83 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Como deve ser resolvido o conflito no perfil?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Nome" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Inexistente no perfil" # rever! # contexto?! -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 substituição" msgstr[1] "%1 substituições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Derivado de" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 substituição" msgstr[1] "%1, %2 substituições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Definições de material" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Como deve ser resolvido o conflito no material?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Visibilidade das definições" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Modo" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Definições visíveis:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 de %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Abrir um projeto irá apagar todos os modelos na base de construção." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Abrir" @@ -2860,48 +2770,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Criar automaticamente uma cópia de segurança sempre que o Cura é iniciado." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Não suportado" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Exportar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Sugestão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Experimento de impressão" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Lista de verificação" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2987,170 +2855,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Tem a certeza de que deseja cancelar a impressão?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Confirmar Alteração de Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "O novo diâmetro do filamento está definido como %1 mm, o que não é compatível com o extrusor actual. Pretende prosseguir?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marca" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Tipo de Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Cor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Propriedades" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Densidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Diâmetro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Custo do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Peso do Filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Comprimento do filamento" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Custo por Metro" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Este material está associado a %1 e partilha algumas das suas propriedades." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Desassociar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Descrição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Informações de Aderência" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Definições de impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Ativar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Importar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Exportar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Confirmar Remoção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Tem a certeza de que deseja remover o perfil %1? Não é possível desfazer esta ação!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Importar material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Não foi possível importar o material %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Material %1 importado com êxito" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Exportar Material" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Falha ao exportar material para %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Material exportado com êxito para %1" @@ -3165,418 +3039,426 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Selecionar tudo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Calculado" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Definição" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Atual" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Unidade" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "É necessário reiniciar a aplicação para que estas alterações sejam aplicadas." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Seccionar automaticamente ao alterar as definições." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Seccionar automaticamente" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Comportamento da janela" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Realçar, a vermelho, as áreas do modelo sem apoio. Sem suporte, estas áreas podem não ser impressas correctamente." # rever! # consolas? -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Mostrar Saliências (Overhangs)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Move a câmara de forma que o modelo fique no centro da visualização quando é selecionado um modelo" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Centrar câmara ao selecionar item" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "O comportamento de zoom predefinido do Cura deve ser invertido?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Inverta a direção do zoom da câmera." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "O zoom deve deslocar-se na direção do rato?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Fazer zoom em direção ao rato não é suportado na perspetiva ortográfica." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Fazer Zoom na direção do rato" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Os modelos, na plataforma, devem ser movidos para que não se intersectem?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Garantir que os modelos não se interceptam" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Pousar os modelos na base de construção?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Pousar automaticamente os modelos na base de construção" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Mostrar mensagem de aviso no leitor de g-code." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Mensagem de aviso no leitor de g-code" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "A vista por camada deve ser forçada a utilizar o modo de compatibilidade?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Forçar o modo de compatibilidade na visualização por camada (é necessário reiniciar)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "O Cura deve abrir na localização onde foi fechado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Restaurar posição da janela ao iniciar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Que tipo de composição de câmara deve ser utilizado?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Composição de câmara:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspetiva" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortográfica" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Abrir e guardar ficheiros" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Os modelos devem ser redimensionados até ao volume de construção se forem demasiado grandes?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Redimensionar modelos demasiado grandes" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Um modelo pode parecer extremamente pequeno se, por exemplo, este tiver sido criado em metros e não em milímetros. Estes modelos devem ser redimensionados?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Redimensionar modelos extremamente pequenos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Selecionar os modelos depois de abertos?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Selecionar os modelos depois de abertos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Deve um prefixo com base no nome da impressora ser adicionado ao nome do trabalho de impressão automaticamente?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Adicionar prefixo da máquina ao nome do trabalho" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Deve ser apresentado um resumo ao guardar um ficheiro de projeto?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Mostrar caixa de diálogo de resumo ao guardar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Comportamento predefinido ao abrir um ficheiro de projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Comportamento predefinido ao abrir um ficheiro de projeto: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Perguntar sempre isto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Abrir sempre como projeto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Importar sempre modelos" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Quando tiver realizado alterações a um perfil e mudado para outro, será apresentada uma caixa de diálogo a perguntar se pretende manter as alterações. Caso contrário, pode escolher um comportamento predefinido, sendo que a caixa de diálogo nunca mais é apresentada." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Comportamento predefinido para valores de definição alterados ao mudar para um perfil diferente: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Perguntar sempre isto" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Descartar sempre definições alteradas" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Transferir sempre definições alteradas para o novo perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Privacidade" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "O Cura deve procurar atualizações quando o programa é iniciado?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Procurar atualizações ao iniciar" # rever! # legal wording -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Podem alguns dados anónimos sobre a impressão ser enviados para a Ultimaker? Não são enviadas, nem armazenadas, quaisquer informações pessoais, incluindo modelos, endereços IP ou outro tipo de identificação pessoal." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Enviar dados (anónimos) sobre a impressão" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Mais informações" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Mudar Nome" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Perfis" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Criar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Duplicar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Criar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Forneça um nome para este perfil." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Duplicar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Mudar Nome do Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Importar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Exportar Perfil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Impressora: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Perfis predefinidos" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Atualizar perfil com as definições/substituições atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Descartar alterações atuais" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Este perfil utiliza as predefinições especificadas pela impressora, pelo que não tem quaisquer definições/substituições na lista seguinte." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "As suas definições atuais correspondem ao perfil selecionado." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Definições Globais" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Mercado" @@ -3636,36 +3518,36 @@ msgstr "Sem título" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "procurar definições" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Copiar valor para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Copiar todos os valores alterados para todos os extrusores" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Esconder esta definição" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Não mostrar esta definição" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Manter esta definição visível" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Configurar visibilidade das definições..." @@ -3680,9 +3562,12 @@ 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:67 +#: /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." @@ -3692,17 +3577,17 @@ msgstr "Esta definição não é utilizada porque todas as definições influenc # Influencia? # Altera? # Modifica? -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Esta definição é sempre partilhada entre todos os extrusores. Ao alterá-la aqui, o valor será alterado em todos os extrusores." @@ -3711,33 +3596,46 @@ 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:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "O valor é calculado com base nos valores por-extrusor " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "Esta definição tem um valor que é diferente do perfil.\n\nClique para restaurar o valor do perfil." +msgstr "" +"Esta definição tem um valor que é diferente do perfil.\n" +"\n" +"Clique para restaurar o valor do perfil." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor diferente.\n\nClique para restaurar o valor calculado." +msgstr "" +"Normalmente, o valor desta definição é calculado, mas atualmente tem definido um valor diferente.\n" +"\n" +"Clique para restaurar o valor calculado." + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Recomendado" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Personalizado" @@ -3765,36 +3663,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Criar estruturas para suportar partes do modelo, suspensas ou com saliências. Sem estas estruturas, essas partes do modelo podem desmoronar durante a impressão." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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 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 das Camadas" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Algumas definições do perfil foram modificadas. Se pretender alterá-las, aceda ao modo Personalizado." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 nozzle. Altere-a para ativar este perfil de qualidade." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "De momento está ativo um perfil personalizado. Para poder ativar o controlo de qualidade, por favor selecione um dos perfis de qualidade predefinidos no modo Personalizado" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3805,18 +3688,31 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Desligado" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Experimental" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Perfil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Alguns valores de definição/substituição são diferentes dos valores armazenados no perfil.\n\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/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Perfis personalizados" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" @@ -3859,59 +3755,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "A temperatura-alvo do extrusor. O extrusor irá aquecer ou arrefecer até esta temperatura. Se esta opção for definida como 0, o aquecimento do extrusor será desligado." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "A temperatura atual deste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "A temperatura-alvo de preaquecimento do extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Cancelar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Preaquecer" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Aquecer o extrusor com antecedência antes de imprimir. Pode continuar a ajustar as definições de impressão durante o aquecimento e não precisará de esperar que o extrusor aqueça quando começar a impressão." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "A cor do material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "O material neste extrusor." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "O nozzle inserido neste extrusor." @@ -3951,12 +3847,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoritos" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genérico" @@ -3976,42 +3872,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Definir como Extrusor Ativo" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Ativar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Desativar Extrusor" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Base de construção" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Perfil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Posição da câmara" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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 construção" @@ -4031,17 +3932,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Gerir Visibilidade das Definições..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Guardar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Exportar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Exportar seleção..." @@ -4070,12 +3971,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Configurações" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Selecionar configuração" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Configurações" @@ -4105,12 +4006,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Ativado" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Utilizar cola para melhor aderência com esta combinação de materiais." @@ -4130,22 +4031,22 @@ 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" @@ -4155,6 +4056,11 @@ msgctxt "@label" msgid "View type" msgstr "Ver tipo" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Lista de objetos" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4186,7 +4092,10 @@ msgid "" "- Send print jobs to Ultimaker printers outside your local network\n" "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" "- Get exclusive access to print profiles from leading brands" -msgstr "- Envie trabalhos de impressão para impressoras Ultimaker fora da sua rede local\n- Guarde as definições do seu Ultimaker Cura na cloud para utilizar em qualquer lugar\n- Obtenha acesso exclusivo a perfis de impressão de marcas de referência" +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" @@ -4203,32 +4112,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Nenhuma estimativa de custos disponível" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Cancelar" @@ -4263,235 +4177,240 @@ msgctxt "@label" msgid "Preset printers" msgstr "Impressoras predefinidas" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Mercado" @@ -4506,49 +4425,49 @@ 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:409 +#: /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:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Fechar Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Tem a certeza de que deseja sair do Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Abrir ficheiro(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Instalar Pacote" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Abrir ficheiro(s)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Encontrámos um ou mais ficheiros G-code nos ficheiros selecionados. Só é possível abrir um ficheiro G-code de cada vez. Se pretender abrir um ficheiro G-code, selecione apenas um." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Adicionar Impressora" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Novidades" @@ -4570,7 +4489,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" @@ -4617,142 +4538,144 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Sobre o Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "versão: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "A Solução completa para a impressão 3D por filamento fundido." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "O Cura foi desenvolvido pela Ultimaker B.V. em colaboração com a comunidade.\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 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Interface gráfica do utilizador" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Framework da aplicação" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Gerador de G-code" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Biblioteca de comunicação interprocessual" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Linguagem de programação" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI framework" # rever! # use eng programing terms? -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Ligações de estrutura da GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "Biblioteca de ligações C/C++" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Formato de intercâmbio de dados" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Biblioteca de apoio para computação científica" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Biblioteca de apoio para cálculos mais rápidos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Biblioteca de apoio para processamento de ficheiros STL" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Biblioteca de apoio para processamento de objetos planos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Biblioteca de apoio para processamento de malhas triangulares" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Biblioteca de apoio para análise de redes complexas" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Biblioteca de apoio para processamento de ficheiros 3MF" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Biblioteca de apoio para transmissões de fluxo e metadados de ficheiros" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Biblioteca de comunicação em série" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Biblioteca de deteção ZeroConf" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Biblioteca de recortes de polígonos" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Biblioteca de HTTP Python" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Tipo de letra" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Ícones SVG" # rever! -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Implementação da aplicação de distribuição cruzada Linux" @@ -4772,32 +4695,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Guardar projeto" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Base de construção" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Extrusor %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Material" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Não mostrar novamente o resumo do projeto ao guardar" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Guardar" @@ -4973,12 +4891,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Resolução de problemas" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Nome da impressora" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Atribua um nome à sua impressora" @@ -5028,27 +4946,39 @@ 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\nUltimaker Cura. Este processo deverá demorar apenas alguns momentos." +msgstr "" +"Siga estes passos para configurar o\n" +"Ultimaker Cura. Este processo deverá demorar apenas alguns momentos." #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 msgctxt "@button" msgid "Get started" msgstr "Iniciar" -#: /home/ruben/Projects/Cura/resources/qml/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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "Vista 3D" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Vista Frente" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Vista Cima" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Vista esquerda" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Vista direita" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5110,16 +5040,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Verificador de Modelos" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Descarregar o conteúdo de todas as definições para um ficheiro HTML." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Modo God" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5130,15 +5050,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Atualizador de firmware" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Cria um perfil de alterações de qualidade aplanado." +msgid "Provides support for reading AMF files." +msgstr "Fornece suporte para ler ficheiros AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Aplanador de perfis" +msgid "AMF Reader" +msgstr "Leitor de AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -5150,16 +5070,6 @@ msgctxt "name" msgid "USB printing" msgstr "Impressão USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Permite guardar o resultado do seccionamento como um ficheiro X3G, para poder ser usado com impressoras 3D que usam este formato (Kalyan, Makerbot e outras impressoras baseadas no Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5202,23 +5112,13 @@ msgstr "Plug-in de dispositivo de saída da unidade amovível" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Gere as ligações de rede com as impressoras Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Gere as ligações de rede com as impressoras em rede Ultimaker." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Ligação de rede UM3" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Ligação de rede Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5351,6 +5251,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Atualização da versão 3.3 para 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Configurações de atualizações do Cura 4.3 para o Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Atualização da versão 4.3 para 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5411,6 +5321,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Atualização da versão 3.0 para 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Atualiza as configurações do Cura 4.1 para o Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Atualização da versão 4.1 para 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5441,6 +5361,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Atualização da versão 2.2 para 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Atualiza as configurações do Cura 4.2 para o Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Atualização da versão 4.2 para 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5451,6 +5381,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Leitor de imagens" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Fornece suporte para a leitura de ficheiros modelo." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Leitor de Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5481,16 +5421,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Leitor de 3MF" -#: SVGToolpathReader/build/plugin.json -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." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Leitor de caminhos de ferramenta SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5533,16 +5463,6 @@ 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." @@ -5583,6 +5503,461 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Leitor de Perfis Cura" +# rever! +# flatten -ver contexto! +# nivelar? +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Nivelar Definições Ativas" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "O perfil foi nivelado & ativado." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Grava X3g num ficheiro" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Ficheiro X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Ficheiro X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Assistente de perfis" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Assistente de perfis" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Tentar de Novo" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Retirar suportes na intercepção com outros modelos" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Alterar as definições dos objetos que intercepta" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Modificar definições do enchimento de outros modelos" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Atualizar existente" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Não suportado" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Anterior" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Sugestão" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Experimento de impressão" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Lista de verificação" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Selecione quaisquer atualizações realizadas a esta Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Composição de câmara: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Usar a funcionalidade de múltiplas bases de construção" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Usar a funcionalidade de múltiplas bases de construção (é necessário reiniciar)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Perfis predefinidos" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "procurar definições" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Espessura das Camadas" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Este perfil de qualidade não se encontra disponível para a sua configuração atual de material e de nozzle. Altere-a para ativar este perfil de qualidade." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "De momento está ativo um perfil personalizado. Para poder ativar o controlo de qualidade, por favor selecione um dos perfis de qualidade predefinidos no modo Personalizado" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Base de construção" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Perfil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Base de construção" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Descarregar o conteúdo de todas as definições para um ficheiro HTML." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Modo God" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Cria um perfil de alterações de qualidade aplanado." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Aplanador de perfis" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Permite aos fabricantes de materiais criar novos materiais e perfis de qualidade utilizando uma IU de fácil acesso." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Assistente de perfis de impressão" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Ligado através da rede." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Ligado através da rede. Por favor aprove o pedido de acesso, na impressora." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Ligado através da rede. Sem autorização para controlar a impressora." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Acesso à impressora solicitado. Por favor aprove o pedido de acesso, na impressora" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Estado da autenticação" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Estado da autenticação" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Reenviar a solicitação de acesso" + +# rever! +# aceite? +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Acesso à impressora confirmado" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Sem autorização para imprimir com esta impressora. Não foi possível enviar o trabalho de impressão." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Solicitar Acesso" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Enviar pedido de acesso para a impressora" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Não é possível iniciar um novo trabalho de impressão." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Existe um problema com a configuração da sua Ultimaker, o qual impede o inicio da impressão. Por favor resolva este problema antes de continuar." + +# rever! +# ver contexto! pode querer dizer +# Configuração incompatível +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Divergência de Configuração" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Tem a certeza de que deseja imprimir com a configuração selecionada?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Existe uma divergência entre a configuração ou calibração da impressora e o Cura. Para se obter os melhores resultados, o seccionamento (no Cura) deve ser sempre feito para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "O envio de novos trabalhos está (temporariamente) bloqueado; o trabalho de impressão anterior ainda está a ser enviado." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "A enviar dados para a impressora" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "A Enviar Dados" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Nenhum PrintCore instalado na ranhura {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Nenhum material carregado na ranhura {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "PrintCore diferente (Cura: {cura_printcore_name}, Impressora: {remote_printcore_name}) selecionado para o extrusor {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Material diferente (Cura: {0}, Impressora: {1}) selecionado para o extrusor {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Sincronizar com a impressora" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Deseja utilizar a configuração atual da impressora no Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Os núcleos de impressão e/ou materiais na sua impressora são diferentes dos definidos no seu projeto atual. Para se obter os melhores resultados, o seccionamento (no Cura) deve ser sempre feito para os núcleos de impressão e para os materiais que estão introduzidos na impressora." + +# rever! +# contexto +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Ver no Monitor" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "A impressora {printer_name} terminou a impressão de \"{job_name}\"." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "O trabalho de impressão '{job_name}' terminou." + +# rever! +# Concluída? +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Impressão terminada" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Vazio" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Desconhecido" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Erro da cloud" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Não foi possível exportar o trabalho de impressão." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Ocorreu um erro na ligação à cloud." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "A carregar através da cloud do Ultimaker" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ligar à cloud do Ultimaker" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Não perguntar novamente sobre esta impressora." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Agora pode enviar e monitorizar trabalhos de impressão a partir de qualquer lugar através da sua conta Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Ligada!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Reveja a sua ligação" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "A máquina definida no perfil {0} ({1}) não corresponde à sua máquina atual ({2}), não foi possível importá-la." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Falha ao importar perfil de {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Ligação Existente" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Esta impressora/grupo já foi adicionada ao Cura. Por favor selecione outra impressora/grupo." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Introduza o endereço IP ou o nome de anfitrião da sua impressora na rede." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Ligar a uma impressora" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de definições do Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Fazer zoom em direção ao rato não é suportado na perspetiva ortogonal." + +#~ msgid "Orthogonal" +#~ msgstr "Ortogonal" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Gere as ligações de rede com as impressoras Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Ligação de rede UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Fornece informações e explicações adicionais sobre as definições do Cura, com imagens e animações." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Guia de definições" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Guia de definições do Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "As definições foram alteradas de forma a corresponder aos extrusores disponíveis de momento: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Descrição do utilizador" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Estas opções não estão disponíveis pois está a monitorizar uma impressora na cloud." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Ir para o Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Todos os trabalhos foram impressos." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Ver histórico de impressão" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Para imprimir diretamente para a sua impressora através da rede, certifique-se de que a sua impressora está ligada à rede por meio de um cabo de rede ou através de ligação à rede Wi-Fi. Se não ligar o Cura por rede à impressora, poderá ainda assim utilizar uma unidade USB para transferir ficheiros g-code para a impressora.\n" +#~ "\n" +#~ "Selecione a sua impressora na lista em baixo:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Certifique-se de que é possível estabelecer ligação com a impressora:\n" +#~ "- Verifique se a impressora está ligada.\n" +#~ "- Verifique se a impressora está ligada à rede." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Ver só a base de construção ativa" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Dispor em todas as bases" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Dispor só na base ativa" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Permite guardar o resultado do seccionamento como um ficheiro X3G, para poder ser usado com impressoras 3D que usam este formato (Kalyan, Makerbot e outras impressoras baseadas no Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Lê ficheiros SVG como caminhos de ferramenta para efeitos de depuração dos movimentos da impressora." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Leitor de caminhos de ferramenta SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Lista das Alterações" @@ -5794,7 +6169,6 @@ msgstr "Leitor de Perfis Cura" #~ "- 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" @@ -5821,7 +6195,6 @@ msgstr "Leitor de Perfis Cura" #~ "\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." @@ -6045,7 +6418,6 @@ msgstr "Leitor de Perfis Cura" #~ "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" @@ -6318,7 +6690,6 @@ msgstr "Leitor de Perfis Cura" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "Não foi possível exportar utilizando a qualidade \"{}\"!\n" #~ "Foi revertido para \"{}\"." @@ -6495,7 +6866,6 @@ msgstr "Leitor de Perfis Cura" #~ "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" @@ -6512,7 +6882,6 @@ msgstr "Leitor de Perfis Cura" #~ "\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!" @@ -6523,7 +6892,6 @@ msgstr "Leitor de Perfis Cura" #~ "\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!" @@ -6552,7 +6920,6 @@ msgstr "Leitor de Perfis Cura" #~ "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" @@ -6567,7 +6934,6 @@ msgstr "Leitor de Perfis Cura" #~ "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" @@ -6672,7 +7038,6 @@ msgstr "Leitor de Perfis Cura" #~ "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 f62b25719f..96925ac2d9 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-14 14:15+0100\n" "Last-Translator: Portuguese \n" "Language-Team: Paulo Miranda , Portuguese \n" diff --git a/resources/i18n/pt_PT/fdmprinter.def.json.po b/resources/i18n/pt_PT/fdmprinter.def.json.po index f495125ff9..5e4b070c5f 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+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-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Portuguese , Paulo Miranda , Portuguese \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,7 +58,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "Comandos G-code a serem executados no início – separados por \n." +msgstr "" +"Comandos G-code a serem executados no início – separados por \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,7 +72,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "Comandos G-code a serem executados no fim – separados por \n." +msgstr "" +"Comandos G-code a serem executados no fim – separados por \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -212,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Se a máquina tem ou não uma base de construção aquecida." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Tem estabilização da temperatura do volume de construção" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Se a máquina consegue ou não estabilizar a temperatura do volume de construção." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -338,8 +352,8 @@ 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" @@ -1035,6 +1049,17 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "O número de camadas inferiores. Quando calculado através da Espessura Inferior, este valor é arredondado para um número inteiro." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Camadas inferiores iniciais" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "O número de camadas inferiores iniciais, a partir da base de construção no sentido ascendente. Quando calculado pela espessura inferior, este valor é arredondado" +" para um número inteiro." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1303,6 +1328,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Canto mais Acentuado" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Posição da Junta-Z" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "A posição próxima do local onde a impressão de cada parte de uma camada será iniciada." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Posterior esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Anterior" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Posterior direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Frontal direita" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Frontal" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Frontal esquerda" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Esquerda" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1330,13 +1405,10 @@ msgctxt "z_seam_corner label" msgid "Seam Corner Preference" msgstr "Preferência Canto Junta" -# rever! -# torna mais provável que esta surja num canto -# aconteça? surja? apareça? #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Controla se os cantos do contorno do modelo influenciam a posição da junta. Nenhum significa que os cantos não influenciam a posição da junta. Ocultar Junta faz com que seja mais provável que a junta surja num canto interior. Expor Junta faz com que seja mais provável que a junta aconteça num canto exterior. Ocultar ou Expor Junta faz com que seja mais provável que a junta aconteça num canto interior ou exterior." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Controla se os cantos do contorno do modelo influenciam a posição da junta. Nenhum significa que os cantos não influenciam a posição da junta. Ocultar Junta faz com que seja mais provável que a junta surja num canto interior. Expor Junta faz com que seja mais provável que a junta aconteça num canto exterior. Ocultar ou Expor Junta faz com que seja mais provável que a junta aconteça num canto interior ou exterior. Ocultação Inteligente permite os cantos interiores e exteriores, mas opta pelos cantos interiores com mais frequência, se apropriado." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1364,6 +1436,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Ocultar ou Expor Junta" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Ocultação Inteligente" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1374,17 +1451,15 @@ msgctxt "z_seam_relative description" msgid "When enabled, the z seam coordinates are relative to each part's centre. When disabled, the coordinates define an absolute position on the build plate." msgstr "Quando ativado, as coordenadas da junta-Z são relativas ao centro de cada peça. Quando desativado, as coordenadas definem uma posição absoluta na base de construção." -# rever! -# gaps? Espaços? intervalos? folgas? #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Ignorar Pequenos Espaços Z" +msgid "No Skin in Z Gaps" +msgstr "Sem Revestimento nos Espaços Z" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Quando o modelo tem pequenos espaços verticais, cerca de mais 5% de tempo de cálculo pode ser despendido na criação das superfícies de revestimentos superior e inferior nestes pequenos espaços. Nesse caso desative esta definição." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Quando o modelo tem pequenos espaços verticais de apenas algumas camadas, deverá normalmente existir revestimento à volta dessas camadas no espaço estreito. Ative esta definição para não gerar revestimento se o espaço vertical for muito pequeno. Isto melhora o tempo de impressão e o tempo de seccionamento, mas deixa tecnicamente o enchimento exposto ao ar." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1405,11 +1480,10 @@ msgctxt "ironing_enabled label" msgid "Enable Ironing" msgstr "Ativar Engomar (Ironing)" -# O objetivo é derreter mais o plástico das superfícies superiores, criando uma superfície mais uniforme. #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Passar com o nozzle uma vez mais, sobre as superfícies superiores, mas sem extrudir material. O objetivo é criar superfícies mais suaves/lisas, ao derreter (\"engomar\") o plástico das superfícies superiores." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Passar novamente sobre o revestimento superior, mas desta vez extrudindo muito pouco material. O objetivo é derreter mais o plástico da camada superior, criando uma superfície mais suave. A pressão na câmara do nozzle é mantida elevada de modo que os vincos existentes na superfície sejam preenchidos com material." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1505,6 +1579,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "A mudança de velocidade instantânea máxima ao engomar." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Sobreposição Revestimento (%)" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste a quantidade de sobreposição entre as paredes e (as extremidades) das linhas centrais de revestimento, como percentagem das larguras de linha das linhas de revestimento e da parede mais interna. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Observe que no caso de um revestimento e uma largura de revestimento da parede iguais, qualquer percentagem acima de 50% pode fazer com que o revestimento ultrapasse a parede, visto que a posição do nozzle do extrusor de revestimento pode já ultrapassar o centro da parede neste ponto." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Sobreposição Revestimento (mm)" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Ajuste a quantidade de sobreposição entre as paredes e (as extremidades) das linhas centrais de revestimento. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Observe que no caso de um revestimento e uma largura de revestimento da parede iguais, qualquer valor acima da metade da largura da parede pode fazer com que o revestimento ultrapasse a parede, visto que a posição do nozzle do extrusor de revestimento pode já ultrapassar o centro da parede." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1675,6 +1769,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "O padrão geométrico de enchimento é deslocado por esta distância ao longo do eixo Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Início aleatório do enchimento" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "A linha de enchimento que é impressa primeiro é aleatória. Isso impede que um segmento se torne o mais forte, mas exige um movimento adicional." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1695,7 +1799,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Adicionar paredes adicionais em torno da área de enchimento. Essas paredes podem fazer com que as linhas de revestimento superiores/inferiores desçam menos, o que significa que são necessárias menos camadas de revestimento superior/inferior para a mesma qualidade à custa de algum material adicional.\nEsta funcionalidade pode ser combinada com a opção Ligar polígonos de enchimento para unir todo o enchimento num único caminho de extrusão sem necessidade de deslocações ou retrações, se configurado corretamente." +msgstr "" +"Adicionar paredes adicionais em torno da área de enchimento. Essas paredes podem fazer com que as linhas de revestimento superiores/inferiores desçam menos, o que significa que são necessárias menos camadas de revestimento superior/inferior para a mesma qualidade à custa de algum material adicional.\n" +"Esta funcionalidade pode ser combinada com a opção Ligar polígonos de enchimento para unir todo o enchimento num único caminho de extrusão sem necessidade de deslocações ou retrações, se configurado corretamente." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1727,26 +1833,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "A distância em milímetros da sobreposição entre o enchimento e as paredes. Uma ligeira sobreposição permite que as paredes se unam firmemente ao enchimento." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Sobreposição Revestimento (%)" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajuste a quantidade de sobreposição entre as paredes e (as extremidades) das linhas centrais de revestimento, como percentagem das larguras de linha das linhas de revestimento e da parede mais interna. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Observe que no caso de um revestimento e uma largura de revestimento da parede iguais, qualquer percentagem acima de 50% pode fazer com que o revestimento ultrapasse a parede, visto que a posição do nozzle do extrusor de revestimento pode já ultrapassar o centro da parede neste ponto." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Sobreposição Revestimento (mm)" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Ajuste a quantidade de sobreposição entre as paredes e (as extremidades) das linhas centrais de revestimento. Uma ligeira sobreposição permite que as paredes se liguem firmemente ao revestimento. Observe que no caso de um revestimento e uma largura de revestimento da parede iguais, qualquer valor acima da metade da largura da parede pode fazer com que o revestimento ultrapasse a parede, visto que a posição do nozzle do extrusor de revestimento pode já ultrapassar o centro da parede." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1939,8 +2025,8 @@ msgstr "Temperatura do volume de construção" #: fdmprinter.def.json 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." +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" @@ -2052,6 +2138,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Proporção de Contração em percentagem." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Material Cristalino" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Este tipo de material é daquele que se separa de forma regular quando aquecido (cristalino) ou daquele que cria longas cadeias de polímero entrelaçado (não cristalino)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Posição Retraída Antiescorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "A distância a que o material tem de ser retraído antes de parar o escorrimento." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Velocidade de Retração Antiescorrimento" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "A velocidade a que o material tem de ser retraído durante uma substituição de filamentos para evitar o escorrimento." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Posição Retraída de Preparação da Separação" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "A distância a que o filamento pode ser esticado antes de se separar, enquanto é aquecido." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Velocidade de Retração de Preparação da Separação" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "A velocidade a que o filamento tem de ser retraído imediatamente antes de se separar numa retração." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Posição Retraída de Separação" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "A distância de retração do filamento para separá-lo de forma regular." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Velocidade de Retração de Separação" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "A velocidade de retração do filamento para separá-lo de forma regular." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Temperatura de Separação" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "A temperatura a que o filamento se quebra para uma separação regular." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -2062,6 +2228,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Fluxo da Parede" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Compensação de fluxo nas linhas de parede." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Fluxo de Parede Exterior" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Compensação de fluxo na linha de parede exterior." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Parede de Parede(s) Interior(es)" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "A compensação de fluxo nas linhas de parede para todas as linhas de parede exceto a mais exterior." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Fluxo Superior/Inferior" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Compensação de fluxo nas linhas superiores/inferiores." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Fluxo de Revestimento da Superfície Superior" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Compensação de fluxo nas linhas das áreas na parte superior da impressora." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Fluxo de Enchimento" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Compensação de fluxo nas linhas de enchimento." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Fluxo de Contorno/Aba" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Compensação de fluxo nas linhas de contorno ou abas." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Fluxo de Suporte" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Compensação de fluxo nas linhas das estruturas de suporte." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Fluxo da Interface do Suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Compensação de fluxo nas linhas de suporte do teto ou do chão." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Fluxo do Teto do Suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Compensação de fluxo nas linhas do teto do suporte." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Fluxo do Chão do Suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Compensação de fluxo nas linhas do chão do suporte." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Fluxo da torre de preparação" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Compensação de fluxo nas linhas da torre de preparação." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2190,8 +2476,8 @@ msgstr "Limitar Retrações de Suportes" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Eliminar a retração quando o movimento de suporte para suporte é em linha recta. Ativar esta definição reduz o tempo de impressão, mas pode levar a que aja um excessivo numero de fios nas estruturas de suporte." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Eliminar a retração quando o movimento de suporte para suporte é em linha reta. Ativar esta definição reduz o tempo de impressão, mas pode levar a que aja um excessivo numero de fios nas estruturas de suporte." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2245,6 +2531,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "A velocidade a que o filamento é empurrado após uma retração de substituição do nozzle." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Quantidade de Preparação Extra de Substituição do Nozzle" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Material extra a preparar após a substituição do nozzle." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2450,15 +2746,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "A velocidade a que o contorno e a aba são impressos. Geralmente, isto é efetuado à velocidade de camada inicial, mas, por vezes, pode preferir imprimir o contorno ou a aba a uma velocidade diferente." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Velocidade Z máxima" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Velocidade do Salto Z" -# a que a base de construção é movida. Defini-la como zero #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "A velocidade máxima do movimento da base de construção. Definir esta como zero faz com que a impressão utilize as predefinições de firmware para a velocidade Z máxima." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "A velocidade a que o movimento Z vertical é efetuado para Saltos Z. Este valor é geralmente inferior à velocidade de impressão, uma vez que é mais difícil mover a base de construção ou o pórtico da máquina." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2976,16 +3271,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "A distância entre o nozzle e as peças já impressas ao evitá-las durante os movimentos de deslocação." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Começar Camadas Mesmo Objecto" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Em cada camada, começar a imprimir o objeto perto do mesmo ponto, para não se começar a imprimir uma nova camada com a peça com a qual se terminou a camada anterior. O que resulta em melhores impressões de saliências e de pequenos objectos, mas aumenta o tempo de impressão." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3410,14 +3695,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Distância entre as linhas da estrutura de suporte da camada inicial impressas. Esta definição é calculada pela densidade do suporte." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Direção da linha de enchimento do suporte" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Orientação do padrão de enchimento para suportes. O padrão de enchimento do suporte gira no plano horizontal." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos de 0 graus." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3546,7 +3831,7 @@ msgstr "Distância da junção do suporte" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando a distância entre as estruturas de suporte for menor do que este valor, as estruturas fundem-se numa só." #: fdmprinter.def.json @@ -3834,8 +4119,8 @@ msgstr "Área mínima da interface de suporte" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Tamanho mínimo da área para polígonos da interface de suporte. Os polígonos com uma área inferior a este valor não serão gerados." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamanho mínimo da área para polígonos da interface do suporte. Os polígonos com uma área inferior a este valor serão impressos como suporte normal." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3844,8 +4129,8 @@ msgstr "Área mínima do teto de suporte" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Tamanho mínimo da área para os tetos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamanho mínimo da área para os tetos do suporte. Os polígonos com uma área inferior a este valor serão impressos como suporte normal." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3854,8 +4139,8 @@ msgstr "Área mínima do piso de suporte" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Tamanho mínimo da área para os pisos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Tamanho mínimo da área para os pisos do suporte. Os polígonos com uma área inferior a este valor serão impressos como suporte normal." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3887,6 +4172,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Quantidade do desvio aplicado aos pisos de suporte." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Direções da linha da interface do suporte" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos (que alternam entre 45 e 135 graus se as interfaces forem bastante espessas ou 90 graus)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Direções da linha do teto do suporte" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Uma lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos (que alternam entre 45 e 135 graus se as interfaces forem bastante espessas ou 90 graus)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Direções da linha do piso do suporte" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Lista de ângulos (números inteiros) relativos às direções de linha a utilizar. Os valores da lista são utilizados em sequência, à medida que as camadas progridem, voltando ao início assim que a lista chega ao fim. Os itens da lista são separados por vírgulas e a lista completa é escrita entre parênteses retos. Por defeito, a lista está vazia, o que significa a utilização dos ângulos predefinidos (que alternam entre 45 e 135 graus se as interfaces forem bastante espessas ou 90 graus)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3928,14 +4243,14 @@ msgid "The diameter of a special tower." msgstr "O diâmetro de uma torre especial." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Diâmetro mínimo" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Diâmetro Máximo Suportado pela Torre" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "O diâmetro mínimo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "O diâmetro máximo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4060,7 +4375,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "A distância horizontal entre o contorno e o perímetro exterior da primeira camada da impressão.\nEsta é a distância mínima. Linhas múltiplas de contorno serão impressas para o exterior." +msgstr "" +"A distância horizontal entre o contorno e o perímetro exterior da primeira camada da impressão.\n" +"Esta é a distância mínima. Linhas múltiplas de contorno serão impressas para o exterior." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4433,16 +4750,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Imprime uma torre próxima da impressão que prepara o material depois de cada substituição do nozzle." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Torre de preparação circular" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Faça a torre de preparação como uma forma circular." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4483,16 +4790,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "A coordenada Y da posição da torre de preparação." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Fluxo da torre de preparação" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4650,6 +4947,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Remove as camadas vazias por baixo da primeira camada impressa, se existirem. Desativar esta definição pode causar primeiras camadas vazias, se a definição Tolerância de Seccionamento estiver definida como Exclusivo ou Centro." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Resolução Máxima" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "O tamanho mínimo de um segmento após o seccionamento. Se aumentar este valor, a malha terá uma resolução menor. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o G-code e irá aumentar a velocidade de seccionamento ao remover os detalhes da malha que não podem ser processados." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Resolução Máxima Deslocação" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "O tamanho mínimo de um segmento de deslocação após o seccionamento. Se aumentar este valor, o movimento de deslocação nos cantos será menos suave. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o G-code, mas pode reduzir a precisão do movimento ao evitar as peças já impressas." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Desvio máximo" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "O desvio máximo permitido ao reduzir a resolução da definição de Resolução máxima. Se aumentar esta definição, a impressão será menos precisa, mas o G-code será menor. O Desvio máximo é um limite para a Resolução máxima, pelo que, se estiverem em conflito, o Desvio máximo é sempre considerado verdadeiro." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4820,8 +5147,8 @@ msgstr "\"Spiralize\" Suavizar Contornos" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Suaviza os contornos, criados pelo \"Spiralize\", para reduzir a visibilidade da junta Z (a junta Z deve ser praticamente imperceptível na impressão, mas continuará a ser visível na visualização por camadas). Ter em conta que a suavização tenderá a reduzir/desfocar pequenos detalhes da superfície." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Suaviza os contornos, criados pelo \"Spiralize\", para reduzir a visibilidade da junta Z (a junta Z deve ser praticamente impercetível na impressão, mas continuará a ser visível na visualização por camadas). Tenha em conta que a suavização tenderá a reduzir/desfocar pequenos detalhes da superfície." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -5035,36 +5362,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Os polígonos em camadas seccionadas que apresentem uma circunferência mais pequena do que este valor serão filtrados. Valores mais reduzidos originam malhas de resolução superior à custa do tempo de seccionamento. Destina-se principalmente a impressoras SLA de alta resolução e a modelos 3D muito pequenos com muitos detalhes." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Resolução Máxima" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "O tamanho mínimo de um segmento após o seccionamento. Se aumentar este valor, a malha terá uma resolução menor. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o G-code e irá aumentar a velocidade de seccionamento ao remover os detalhes da malha que não podem ser processados." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Resolução Máxima Deslocação" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "O tamanho mínimo de um segmento de deslocação após o seccionamento. Se aumentar este valor, o movimento de deslocação nos cantos será menos suave. Isto poderá permitir que a impressora acompanhe a velocidade que tem para processar o G-code, mas pode reduzir a precisão do movimento ao evitar as peças já impressas." - -#: 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? # -Break up @@ -5219,16 +5516,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "A velocidade de movimento durante a desaceleração, relativa à velocidade do caminho de extrusão. É recomendado um valor ligeiramente abaixo de 100%, uma vez que durante o movimento de desaceleração, a pressão no tubo Bowden diminui." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Alternar Rotação Revestimento" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Alterna a direção na qual as camadas superiores/inferiores são impressas. Geralmente, estas são impressas apenas na diagonal. Esta definição adiciona também as direções só em X e só em Y." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5336,8 +5623,8 @@ msgstr "Ativar suporte cónico" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Funcionalidade experimental: torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5401,23 +5688,24 @@ msgstr "A distância média entre os pontos aleatórios introduzidos em cada seg #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Desvio de extrusão máximo de compensação da taxa de fluxo" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "A distância máxima em milímetros a ser compensada." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "A distância máxima em mm de deslocação do filamento para compensar alterações na taxa de fluxo." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Fator de compensação da taxa de fluxo" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "O fator de multiplicação da taxa de fluxo -> translação de distância." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Até que distância o filamento se deve mover para compensar as alterações na taxa de fluxo, como uma percentagem da distância que o filamento iria percorrer" +" num segundo de extrusão." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5569,7 +5857,9 @@ msgctxt "wireframe_up_half_speed description" msgid "" "Distance of an upward move which is extruded with half speed.\n" "This can cause better adhesion to previous layers, while not heating the material in those layers too much. Only applies to Wire Printing." -msgstr "A distância de um movimento ascendente que é extrudido a metade da velocidade.\nIsto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." +msgstr "" +"A distância de um movimento ascendente que é extrudido a metade da velocidade.\n" +"Isto pode causar melhor aderência às camadas anteriores, sendo que o material nessas camadas não é demasiado aquecido. Aplica-se apenas à impressão de fios." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5708,13 +5998,14 @@ msgstr "A diferença de espessura da camada seguinte em comparação com a anter #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Limiar das camadas adaptáveis" +msgid "Adaptive Layers Topography Size" +msgstr "Dimensão da topografia das camadas adaptáveis" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "O limiar em que se deve usar, ou não, uma menor espessura de camada. Este número é comparado com a tangente da inclinação mais acentuada numa camada." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Distância horizontal pretendida entre duas camadas adjacentes. Reduzir o valor desta definição faz com que camadas mais finas sejam utilizadas para juntar" +" mais os contornos das camadas." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5723,8 +6014,9 @@ msgstr "Ângulo da parede de saliências" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "As paredes que se salientam mais do que este ângulo serão impressas utilizando definições de parede de saliências. Quando o valor é 90, nenhuma parede será tratada como saliente." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "As paredes com saliências que ultrapassem este ângulo serão impressas utilizando definições de parede de saliências. Quando o valor é 90, nenhuma parede" +" é considerada como sendo uma saliência. As saliências suportadas por suporte também não serão consideradas como saliências." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -6076,6 +6368,48 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "A distância de deslocação da cabeça para trás e para a frente pela escova." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Tamanho máximo do buraco pequeno" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Os buracos e os contornos das peças com um diâmetro inferior a este valor serão impressos à Velocidade de elemento pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Comprimento máximo do elemento pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Os contornos do elemento com um comprimento inferior a este serão impressos à Velocidade de elemento pequeno." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Velocidade de elemento pequeno" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Os elementos pequenos serão impressos a esta percentagem da respetiva velocidade de impressão normal. Uma impressão mais lenta pode ajudar em termos de" +" aderência e precisão." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Velocidade da camada inicial de partes pequenas" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Os elementos pequenos na primeira camada serão impressos a esta percentagem da respetiva velocidade de impressão normal. Uma impressão mais lenta pode" +" ajudar em termos de aderência e precisão." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -6136,6 +6470,157 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Matriz de transformação a ser aplicada ao modelo quando abrir o ficheiro." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamanho mínimo da área para polígonos da interface de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamanho mínimo da área para os tetos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Tamanho mínimo da área para os pisos de suporte. Os polígonos com uma área inferior a este valor não serão gerados." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Alternar Rotação Revestimento" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Alterna a direção na qual as camadas superiores/inferiores são impressas. Geralmente, estas são impressas apenas na diagonal. Esta definição adiciona também as direções só em X e só em Y." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Desvio de extrusão máximo de compensação da taxa de fluxo" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "A distância máxima em milímetros a ser compensada." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Fator de compensação da taxa de fluxo" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "O fator de multiplicação da taxa de fluxo -> translação de distância." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Limiar das camadas adaptáveis" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "O limiar em que se deve usar, ou não, uma menor espessura de camada. Este número é comparado com a tangente da inclinação mais acentuada numa camada." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "As paredes que se salientam mais do que este ângulo serão impressas utilizando definições de parede de saliências. Quando o valor é 90, nenhuma parede será tratada como saliente." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Os elementos pequenos serão impressos a esta percentagem da velocidade de impressão normal. A impressão mais lenta poderá contribuir para uma maior aderência e precisão." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Velocidade da primeira camada" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Os elementos pequenos da primeira camada serão impressos a esta percentagem da velocidade de impressão normal. A impressão mais lenta poderá contribuir para uma maior aderência e precisão." + +# O objetivo é derreter mais o plástico das superfícies superiores, criando uma superfície mais uniforme. +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Passar com o nozzle uma vez mais, sobre as superfícies superiores, mas sem extrudir material. O objetivo é criar superfícies mais suaves/lisas, ao derreter (\"engomar\") o plástico das superfícies superiores." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Começar Camadas Mesmo Objecto" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Em cada camada, começar a imprimir o objeto perto do mesmo ponto, para não se começar a imprimir uma nova camada com a peça com a qual se terminou a camada anterior. O que resulta em melhores impressões de saliências e de pequenos objectos, mas aumenta o tempo de impressão." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Orientação do padrão de enchimento para suportes. O padrão de enchimento do suporte gira no plano horizontal." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "O desvio máximo permitido ao reduzir a resolução da definição de Resolução máxima. Se aumentar esta definição, a impressão será menos precisa, mas o G-code será inferior." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Variante de G-code" + +# rever! +# torna mais provável que esta surja num canto +# aconteça? surja? apareça? +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Controla se os cantos do contorno do modelo influenciam a posição da junta. Nenhum significa que os cantos não influenciam a posição da junta. Ocultar Junta faz com que seja mais provável que a junta surja num canto interior. Expor Junta faz com que seja mais provável que a junta aconteça num canto exterior. Ocultar ou Expor Junta faz com que seja mais provável que a junta aconteça num canto interior ou exterior." + +# rever! +# gaps? Espaços? intervalos? folgas? +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Ignorar Pequenos Espaços Z" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Quando o modelo tem pequenos espaços verticais, cerca de mais 5% de tempo de cálculo pode ser despendido na criação das superfícies de revestimentos superior e inferior nestes pequenos espaços. Nesse caso desative esta definição." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "A temperatura utilizada para o volume de construção. Se for 0, a temperatura do volume de construção não será ajustada." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Eliminar a retração quando o movimento de suporte para suporte é em linha recta. Ativar esta definição reduz o tempo de impressão, mas pode levar a que aja um excessivo numero de fios nas estruturas de suporte." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Velocidade Z máxima" + +# a que a base de construção é movida. Defini-la como zero +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "A velocidade máxima do movimento da base de construção. Definir esta como zero faz com que a impressão utilize as predefinições de firmware para a velocidade Z máxima." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "A distância máxima entre as estruturas de suporte nas direções X/Y. Quando a distância entre as estruturas de suporte for menor do que este valor, as estruturas fundem-se numa só." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Diâmetro mínimo" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "O diâmetro mínimo nas direções X/Y de uma pequena área que deverá ser suportada por uma torre de suporte especializada." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Torre de preparação circular" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Faça a torre de preparação como uma forma circular." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Compensação de fluxo: a quantidade de material extrudido é multiplicada por este valor." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Suaviza os contornos, criados pelo \"Spiralize\", para reduzir a visibilidade da junta Z (a junta Z deve ser praticamente imperceptível na impressão, mas continuará a ser visível na visualização por camadas). Ter em conta que a suavização tenderá a reduzir/desfocar pequenos detalhes da superfície." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Funcionalidade experimental: torna as áreas de suporte mais reduzidas na parte inferior do que na saliência." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "O numero de Extrusores que estão activos" diff --git a/resources/i18n/ru_RU/cura.po b/resources/i18n/ru_RU/cura.po index 6769a02211..a8bab05fd7 100644 --- a/resources/i18n/ru_RU/cura.po +++ b/resources/i18n/ru_RU/cura.po @@ -5,12 +5,12 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-28 09:52+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Ruslan Popov , Russian \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Russian , Ruslan Popov , Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "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:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Параметры принтера" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "Файл G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "Средство записи G-кода (GCodeWriter) не поддерживает нетекстовый режим." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Подготовьте G-код перед экспортом." @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "Помощник по 3D-моделям" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "Обновить прошивку" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Сбросить текущие параметры к стандартным значениям" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "Файл AMF" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Профиль был нормализован и активирован." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "Печать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "Печатать через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "Подключено через USB" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "Выполняется печать через USB, закрытие Cura остановит эту печать. Вы уверены?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "Файл X3G" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Печать еще выполняется. Cura не может начать другую печать через USB, пока предыдущая печать не будет завершена." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Записывает X3g в файлы" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "Файл X3g" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Идет печать" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Сохранить на внешний носитель {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Ни один из форматов файлов не доступен для записи!" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Невозможно сохранить на внешний носитель {0}: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Ошибка" @@ -229,9 +217,9 @@ msgstr "Извлекает внешний носитель {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Внимание" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Внешний носитель" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Состояние аутентификации" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "Послать запрос доступа ещё раз" - -#: /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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "Не удалось начать новое задание печати." - -#: /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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Отправка данных на принтер" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Отправка данных" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "Отмена" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "Синхронизация с вашим принтером" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Подключен по сети" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "Задание печати успешно отправлено на принтер." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Данные отправлены" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Просмотр на мониторе" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Пусто" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Неизвестн" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Печать через облако" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Печать через облако" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Подключено через облако" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Ошибка облака" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "Облако не экспортировало задание печати." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Облако не залило данные на принтер." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "завтра" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "сегодня" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Заливка через облако Ultimaker Cloud" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "Не спрашивать меня снова для этого принтера." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "Приступить" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Подключено!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Проверьте свое подключение" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Подключиться через сеть" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Руководство по параметрам Cura" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Печать через сеть" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Печать через сеть" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Подключен по сети" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Дождитесь окончания отправки текущего задания." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Ошибка печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Обнаружены новые облачные принтеры" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Обнаружены новые принтеры, подключенные к вашей учетной записи; вы можете найти их в списке обнаруженных принтеров." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Больше не показывать это сообщение" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "Вы пытаетесь подключиться к {0}, но это не главный принтер группы. Откройте веб-страницу, чтобы настроить его в качестве главного принтера группы." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Не главный принтер группы" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Настроить группу" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Отправляйте и отслеживайте задания печати из любого места с помощью вашей учетной записи Ultimaker." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Подключиться к облаку Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Приступить" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Отправка задания печати" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Загрузка задания печати в принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Задание печати успешно отправлено на принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Данные отправлены" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Вы пытаетесь подключиться к принтеру, на котором не работает Ultimaker Connect. Обновите прошивку принтера до последней версии." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Обновите свой принтер" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura обнаружены профили материалов, которые пока не установлены в главном принтере группы {0}." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Отправка материалов на принтер" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Облако не залило данные на принтер." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Ошибка сети" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "завтра" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "сегодня" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Печать через облако" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Печать через облако" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Подключено через облако" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Монитор" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Не могу получить информацию об обновлениях." @@ -625,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Просмотр слоёв" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Cura не аккуратно отображает слои при использовании печати через кабель" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Вид моделирования" @@ -685,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF изображение" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -749,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Правка параметров модели" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Рекомендованная" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Своя" @@ -765,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "Файл 3MF" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Сопло" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Файл проекта {0} содержит неизвестный тип принтера {1}. Не удалось импортировать принтер. Вместо этого будут импортированы модели." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Открыть файл проекта" @@ -792,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "Файл G" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "Обработка G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "Параметры G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Перед отправкой G-code на принтер удостоверьтесь в его соответствии вашему принтеру и его настройкам. Возможны неточности в G-code." @@ -857,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Профиль Cura" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Помощник по профилю" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Помощник по профилю" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -887,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Предварительный просмотр" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -903,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Вход не выполнен" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Не поддерживается" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Файл уже существует" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Файл {0} уже существует. Вы уверены, что желаете перезаписать его?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Неправильный URL-адрес файла:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Настройки изменены в соответствии с текущей доступностью экструдеров:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Настройки обновлены" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Экструдер (-ы) отключен (-ы)" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Неизвестно" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Невозможно экспортировать профиль в {0}: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Невозможно экспортировать профиль в {0}: Плагин записи уведомил об ошибке." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Экспортирование профиля в {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Экспорт успешно завершен" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Невозможно импортировать профиль из {0}, пока не добавлен принтер." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "Отсутствует собственный профиль для импорта в файл {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "Не удалось импортировать профиль из {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Данный профиль {0} содержит неверные данные, поэтому его невозможно импортировать." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "Принтер, заданный в профиле {0} ({1}), не совпадает с вашим текущим принтером ({2}), поэтому его невозможно импортировать." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "Не удалось импортировать профиль из {0}:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Успешно импортирован профиль {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "В файле {0} нет подходящих профилей." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Профиль {0} имеет неизвестный тип файла или повреждён." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Собственный профиль" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "У профайла отсутствует тип качества." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1103,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Другое" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Предообратка файла {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "Следующий" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1123,73 +953,120 @@ msgstr "Группа #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Закрыть" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Добавить" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "Отмена" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Визуальный" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Визуальный профиль предназначен для печати визуальных прототипов и моделей, для которых требуется высокое качество поверхности и внешнего вида." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Инженерный профиль предназначен для печати функциональных прототипов и готовых деталей, для которых требуется высокая точность и малые допуски." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Черновой" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Черновой профиль предназначен для печати начальных прототипов и проверки концепции, где приоритетом является скорость печати." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Не переопределен" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Собственные профили" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Все поддерживаемые типы ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Все файлы (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Неизвестно" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Доступные сетевые принтеры" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Собственный материал" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Своё" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Перечисленные ниже принтеры невозможно подключить, поскольку они входят в состав группы" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Доступные сетевые принтеры" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Высота печатаемого объёма была уменьшена до значения параметра \"Последовательность печати\", чтобы предотвратить касание портала за напечатанные детали." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Объём печати" @@ -1214,39 +1091,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Не удалось прочитать ответ." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Нет связи с сервером учетных записей Ultimaker." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Дайте необходимые разрешения при авторизации в этом приложении." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Возникла непредвиденная ошибка при попытке входа в систему. Повторите попытку." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Размножение и размещение объектов" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Размещение объектов" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Невозможно разместить все объекты внутри печатаемого объёма" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Размещение объекта" @@ -1395,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Загрузка принтеров..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Настройка параметров..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Настройка сцены..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Загрузка интерфейса..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f мм" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Только один G-code файла может быть загружен в момент времени. Пропускаю импортирование {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "Невозможно открыть любой другой файл, если G-code файл уже загружен. Пропускаю импортирование {0}" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Выбранная модель слишком мала для загрузки." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Параметры принтера" @@ -1454,15 +1336,15 @@ msgstr "X (Ширина)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "мм" @@ -1494,50 +1376,55 @@ msgstr "Нагреваемый стол" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Подогреваемый объем печати" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "Вариант G-кода" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Параметры головы" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y минимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y максимум" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Высота портала" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Количество экструдеров" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "Стартовый G-код" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "Завершающий G-код" @@ -1567,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Смещение сопла по оси X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "Смещение сопла по оси Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "Номер охлаждающего вентилятора" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Завершающий G-код экструдера" @@ -1593,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Установлено" @@ -1608,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "оценки" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Плагины" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Материалы" @@ -1627,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1730,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Выйти из Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Вклад в развитие сообщества" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Плагины сообщества" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Универсальные материалы" @@ -1801,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "Рекомендуемые" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Совместимость" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Принтер" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Рабочий стол" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Поддержки" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Качество" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Таблица технических характеристик" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Паспорт безопасности" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Инструкции по печати" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Веб-сайт" @@ -1921,70 +1828,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "Обновление прошивки не удалось из-за её отсутствия." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Управление принтером" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Стекло" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "Веб-камера недоступна, поскольку вы отслеживаете облачный принтер." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Загрузка..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Недоступен" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Недостижимо" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Простой" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Без имени" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Анонимн" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Необходимо внести изменения конфигурации" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Подробности" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Недоступный принтер" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "Первое доступное" @@ -1994,212 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "Запланировано" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "В очереди нет заданий печати. Выполните нарезку и отправьте задание." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Задания печати" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Общее время печати" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Ожидание" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Все задания печати выполнены." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "Просмотреть архив печати" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Подключение к сетевому принтеру" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"Для печати на вашем принтере через сеть, пожалуйста, удостоверьтесь, что ваш принтер подключен к сети с помощью кабеля или через WiFi. Если вы не подключили Cura к вашему принтеру, вы по-прежнему можете использовать USB флешку для переноса G-Code файлов на ваш принтер.\n" -"\n" -"Укажите ваш принтер в списке ниже:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "Для печати непосредственно на принтере через сеть необходимо подключить принтер к сети с помощью сетевого кабеля или подключить его к сети Wi-Fi. Если вы не подключили Cura к принтеру, вы можете использовать USB-накопитель для переноса файлов G-Code на принтер." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Выберите свой принтер из приведенного ниже списка:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Правка" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Удалить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Обновить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Если ваш принтер отсутствует в списке, обратитесь к руководству по решению проблем с сетевой печатью" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Тип" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Версия прошивки" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Адрес" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Данный принтер не настроен для управления группой принтеров." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Данный принтер управляет группой из %1 принтера (-ов)." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Принтер по этому адресу ещё не отвечал." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Подключить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Недействительный IP-адрес" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Введите действительный IP-адрес." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Адрес принтера" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "Введите IP-адрес принтера или его имя в сети." +msgid "Enter the IP address of your printer on the network." +msgstr "Введите IP-адрес принтера в сети." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "OK" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "Завершение %1 в %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Печать" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Печать через сеть" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Печать" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Выбор принтера" @@ -2288,7 +2184,7 @@ msgctxt "@action:button" msgid "Override" msgstr "Переопределить" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:" @@ -2296,61 +2192,53 @@ msgstr[0] "Для назначенного принтера %1 требуетс msgstr[1] "Для назначенного принтера %1 требуются следующие изменения конфигурации:" msgstr[2] "Для назначенного принтера %1 требуются следующие изменения конфигурации:" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Алюминий" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Подключение к принтеру" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2559,70 +2447,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Сглаживание" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Тип объекта" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Нормальная модель" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Печать в качестве поддержки" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Не поддерживать перекрытие с другими моделями" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Изменять настройки для перекрытия с другими моделями" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Изменять настройки для заполнения других моделей" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Выберите параметры" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Выберите параметр для изменения этой модели" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Фильтр..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Показать всё" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Тип объекта" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Нормальная модель" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Печать в качестве поддержки" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Изменить настройки для перекрытий" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Не поддерживать перекрытия" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Только заполнение" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Выберите параметры" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Открытие проекта" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Обновить существующий" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Создать новый" @@ -2649,6 +2536,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Обновить" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Создать новый" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2662,7 +2554,7 @@ msgid "Printer Group" msgstr "Группа принтеров" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Параметры профиля" @@ -2673,21 +2565,27 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Как следует решать конфликт в профиле?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "Название" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Вне профиля" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" @@ -2695,12 +2593,12 @@ msgstr[0] "%1 перекрыт" msgstr[1] "%1 перекрыто" msgstr[2] "%1 перекрыто" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Производное от" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" @@ -2708,42 +2606,42 @@ msgstr[0] "%1, %2 перекрыто" msgstr[1] "%1, %2 перекрыто" msgstr[2] "%1, %2 перекрыто" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Параметры материала" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Как следует решать конфликт в материале?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Видимость параметров" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Режим" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Видимые параметры:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 из %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Загрузка проекта приведет к удалению всех моделей на рабочем столе." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Открыть" @@ -2850,48 +2748,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Автоматически создавать резервную копию в день запуска Cura." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Не поддерживается" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Экспорт" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "Кончик" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Пробная печать" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Контрольный список" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Блок Олссона" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2977,170 +2833,176 @@ 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:72 msgctxt "@title" msgid "Information" msgstr "Информация" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Подтвердить изменение диаметра" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Установлен новый диаметр пластиковой нити %1 мм. Это значение несовместимо с текущим экструдером. Продолжить?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Отображаемое имя" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Брэнд" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Тип материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Цвет" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Свойства" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Плотность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Диаметр" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Стоимость материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Вес материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Длина материала" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Стоимость метра" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Данный материал привязан к %1 и имеет ряд его свойств." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Отвязать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Описание" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Информация об адгезии" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Параметры печати" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Активировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Создать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Дублировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "Импорт" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Экспорт" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Подтвердите удаление" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "Вы уверены, что желаете удалить %1? Это нельзя будет отменить!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Импортировать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Не могу импортировать материал %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Успешно импортированный материал %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Экспортировать материал" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Не могу экспортировать материал %1: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Материал успешно экспортирован в %1" @@ -3155,414 +3017,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Выбрать все" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Вычислено" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Параметр" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Текущий" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Единица" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 msgctxt "@label" msgid "Interface" msgstr "Интерфейс" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "Язык:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "Валюта:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "Тема:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Для применения данных изменений вам потребуется перезапустить приложение." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Нарезать автоматически при изменении настроек." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Нарезать автоматически" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Поведение окна" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Подсвечивать красным области модели, требующие поддержек. Без поддержек эти области не будут напечатаны правильно." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Отобразить нависания" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Перемещать камеру так, чтобы выбранная модель помещалась в центр экрана" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Центрировать камеру на выбранном объекте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Следует ли инвертировать стандартный способ увеличения в Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Инвертировать направление увеличения камеры." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Увеличивать по мере движения мышкой?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "В ортогональной проекции изменение масштаба мышью не поддерживается." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Увеличивать по движению мышки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Следует ли размещать модели на столе так, чтобы они больше не пересекались?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Удостовериться, что модели размещены рядом" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Следует ли опустить модели на стол?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Автоматически опускать модели на стол" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "Показывать предупреждающее сообщение в средстве считывания G-кода." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "Предупреждающее сообщение в средстве считывания G-кода" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Должен ли слой быть переведён в режим совместимости?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Просматривать слои в режиме совместимости (требуется перезапуск)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Открыть Cura на том месте, где вы остановились в прошлый раз?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Восстановить положение окна при запуске" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Рендеринг камеры какого типа следует использовать?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Рендеринг камеры:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Перспективная" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ортографическая" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Открытие и сохранение файлов" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Масштабировать ли модели для размещения внутри печатаемого объёма, если они не влезают в него?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Масштабировать большие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Модель может показаться очень маленькой, если её размерность задана в метрах, а не миллиметрах. Следует ли масштабировать такие модели?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Масштабировать очень маленькие модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Выбрать модели после их загрузки?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Выбрать модели при загрузке" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Надо ли автоматически добавлять префикс, основанный на имени принтера, к названию задачи на печать?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Добавить префикс принтера к имени задачи" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Показывать сводку при сохранении файла проекта?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Показывать сводку при сохранении проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Стандартное поведение при открытии файла проекта" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Стандартное поведение при открытии файла проекта: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Всегда спрашивать меня" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Всегда открывать как проект" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Всегда импортировать модели" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "При внесении изменений в профиль и переключении на другой, будет показан диалог, запрашивающий ваше решение о сохранении ваших изменений, или вы можете указать стандартное поведение и не показывать такой диалог." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Профили" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Поведение по умолчанию для измененных значений настройки при переключении на другой профиль: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Всегда спрашивать меня" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Всегда сбрасывать измененные настройки" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Всегда передавать измененные настройки новому профилю" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Приватность" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Должна ли Cura проверять обновления программы при старте?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Проверять обновления при старте" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Можно ли отправлять анонимную информацию о вашей печати в Ultimaker? Следует отметить, что ни модели, ни IP-адреса и никакая другая персональная информация не будет отправлена или сохранена." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "Отправлять (анонимно) информацию о печати" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Дополнительная информация" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "Использовать функционал нескольких рабочих столов" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "Принтеры" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Переименовать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Профили" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Создать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Дублировать" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Создать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Укажите имя для данного профиля." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Скопировать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Переименовать профиль" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Импорт профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Экспорт профиля" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Принтер: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Профили по умолчанию" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 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:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Сбросить текущие параметры" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Данный профиль использует настройки принтера по умолчанию, поэтому список ниже пуст." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Ваши текущие параметры совпадают с выбранным профилем." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Общие параметры" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Магазин" @@ -3622,36 +3492,36 @@ msgstr "Без имени" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "параметры поиска" +msgid "Search settings" +msgstr "Параметры поиска" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Скопировать значение для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Копировать все измененные значения для всех экструдеров" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Спрятать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Не показывать этот параметр" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Оставить этот параметр видимым" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Видимость параметров..." @@ -3667,32 +3537,32 @@ msgstr "" "\n" "Щёлкните, чтобы сделать эти параметры видимыми." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Данная настройка всегда используется совместно всеми экструдерами. Изменение данного значения приведет к изменению значения для всех экструдеров." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Значение получается из параметров каждого экструдера " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3703,7 +3573,7 @@ msgstr "" "\n" "Щёлкните для восстановления значения из профиля." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3714,12 +3584,20 @@ msgstr "" "\n" "Щёлкните для восстановления вычисленного значения." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Рекомендован" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Свое" @@ -3744,36 +3622,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Генерация структур для поддержки нависающих частей модели. Без этих структур такие части будут складываться во время печати." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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 "Разрешает печать каймы или подложки. Это добавляет плоскую область вокруг или под вашим объектом, которую легко удалить после печати." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Высота слоя" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "В некоторые настройки профиля были внесены изменения. Если их необходимо изменить, перейдите в пользовательский режим." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти параметры для задействования данного профиля качества." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "В настоящее время активен пользовательский профиль. Чтобы включить ползунок качества, на вкладке «Пользовательские» выберите профиль качества по умолчанию" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3784,12 +3647,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Выкл" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Экспериментальное" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Профиль" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3800,6 +3668,11 @@ msgstr "" "\n" "Нажмите для открытия менеджера профилей." +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Собственные профили" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3835,59 +3708,59 @@ 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 (Ввод) для отправки команды." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Экструдер" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Целевая температура сопла. Сопло будет нагрето или остужено до указанной температуры. Если значение равно 0, то нагрев будет отключен." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Текущая температура данного сопла." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Температура предварительного нагрева сопла." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "Отмена" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Преднагрев" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Нагрев сопла перед печатью. Можно продолжать настройки вашей печати во время нагрева, и вам не понадобится ждать нагрева сопла, когда вы будете готовы приступить к печати." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Цвет материала в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Материал в данном экструдере." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Сопло, вставленное в данный экструдер." @@ -3927,12 +3800,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Избранные" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Универсальные" @@ -3952,42 +3825,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "Принтер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Установить как активный экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Включить экструдер" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Отключить экструдер" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "Профиль" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "Положение камеры" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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 "Рабочий стол" @@ -4007,17 +3885,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Управление видимостью настроек..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Сохранить..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Экспорт..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Экспорт выбранного..." @@ -4048,12 +3926,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Конфигурации" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Выберите конфигурации" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Конфигурации" @@ -4083,12 +3961,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Включено" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Использовать клей для лучшего прилипания с этой комбинацией материалов." @@ -4108,22 +3986,22 @@ 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 "Осталось примерно" @@ -4133,6 +4011,11 @@ msgctxt "@label" msgid "View type" msgstr "Просмотр типа" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Список объектов" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4184,32 +4067,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Оценка расходов недоступна" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "Невозможно нарезать" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "Отмена" @@ -4244,127 +4132,132 @@ msgctxt "@label" msgid "Preset printers" msgstr "Предварительно настроенные принтеры" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "Управление принтерами" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "Управление материалами..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:258 msgctxt "@action:inmenu menubar:edit" msgid "Delete Selected Model" msgid_plural "Delete Selected Models" @@ -4372,7 +4265,7 @@ msgstr[0] "Удалить выбранную модель" msgstr[1] "Удалить выбранные модели" msgstr[2] "Удалить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:259 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 msgctxt "@action:inmenu menubar:edit" msgid "Center Selected Model" msgid_plural "Center Selected Models" @@ -4380,7 +4273,7 @@ msgstr[0] "Центрировать выбранную модель" msgstr[1] "Центрировать выбранные модели" msgstr[2] "Центрировать выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:268 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 msgctxt "@action:inmenu menubar:edit" msgid "Multiply Selected Model" msgid_plural "Multiply Selected Models" @@ -4388,92 +4281,92 @@ msgstr[0] "Размножить выбранную модель" msgstr[1] "Размножить выбранные модели" msgstr[2] "Размножить выбранные модели" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "Удалить модель" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:340 msgctxt "@action:inmenu" msgid "&Multiply Model..." msgstr "Дублировать модель..." -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Магазин" @@ -4488,49 +4381,49 @@ msgctxt "@label" msgid "This package will be installed after restarting." msgstr "Этот пакет будет установлен после перезапуска." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Параметры" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Закрытие Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Вы уверены, что хотите выйти из Cura?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Установить пакет" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Открыть файл(ы)" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Среди выбранных файлов мы нашли несколько файлов с G-кодом. Вы можете открыть только один файл за раз. Измените свой выбор, пожалуйста." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Добавление принтера" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Что нового" @@ -4602,17 +4495,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "О Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "версия: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Полное решение для 3D печати методом наплавления материала." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4621,122 +4514,122 @@ msgstr "" "Cura разработана компанией Ultimaker B.V. совместно с сообществом.\n" "Cura использует следующие проекты с открытым исходным кодом:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Графический интерфейс пользователя" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Фреймворк приложения" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "Генератор G-кода" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "Библиотека межпроцессного взаимодействия" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Язык программирования" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "Фреймворк GUI" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "Фреймворк GUI, интерфейс" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C/C++ библиотека интерфейса" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Формат обмена данными" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Вспомогательная библиотека для научных вычислений" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Вспомогательная библиотека для быстрых расчётов" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "Вспомогательная библиотека для работы с STL файлами" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Вспомогательная библиотека для работы с плоскими объектами" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Вспомогательная библиотека для работы с треугольными сетками" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Вспомогательная библиотека для анализа сложных сетей" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "Вспомогательная библиотека для работы с 3MF файлами" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Вспомогательная библиотека для метаданных файла и потоковой передачи" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Библиотека последовательного интерфейса" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "Библиотека ZeroConf" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Библиотека обрезки полигонов" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Библиотека Python HTTP" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Шрифт" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "Иконки SVG" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Развертывание приложений для различных дистрибутивов Linux" @@ -4756,32 +4649,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Сохранить проект" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Рабочий стол" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Экструдер %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 и материал" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Материал" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Больше не показывать сводку по проекту" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Сохранить" @@ -4957,12 +4845,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Поиск и устранение неисправностей" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Имя принтера" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Присвойте имя принтеру" @@ -5021,20 +4909,30 @@ msgctxt "@button" msgid "Get started" 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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Вид сверху" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Вид слева" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Вид справа" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5096,16 +4994,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Средство проверки моделей" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Запись содержимого всех настроек в виде HTML файла." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Режим бога" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5116,15 +5004,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Средство обновления прошивки" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Создание нормализованного профиля с изменениями качества." +msgid "Provides support for reading AMF files." +msgstr "Обеспечивает поддержку чтения файлов AMF." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Нормализатор профиля" +msgid "AMF Reader" +msgstr "Средство чтения AMF" #: USBPrinting/plugin.json msgctxt "description" @@ -5136,16 +5024,6 @@ msgctxt "name" msgid "USB printing" msgstr "Печать через USB" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Разрешить сохранение результирующего слоя в формате X3G для поддержки принтеров, считывающих этот формат (Malyan, Makerbot и другие принтеры на базе Sailfish)." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5188,23 +5066,13 @@ msgstr "Плагин для работы с внешним носителем" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Управляет сетевыми соединениями с сетевыми принтерами Ultimaker 3." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "Соединение с сетью UM3" - -#: 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 "Руководство по параметрам" +msgid "Ultimaker Network Connection" +msgstr "Соединение с сетью Ultimaker" #: MonitorStage/plugin.json msgctxt "description" @@ -5336,6 +5204,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "Обновление версии 3.3 до 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Обновляет конфигурации Cura 4.3 до Cura 4.4." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "Обновление версии 4.3 до 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5396,6 +5274,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "Обновление версии 3.0 до 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Обновляет конфигурации Cura 4.1 до Cura 4.2." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Обновление версии 4.1 до 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5426,6 +5314,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "Обновление версии 2.2 до 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Обновляет конфигурации Cura 4.2 до Cura 4.3." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "Обновление версии 4.2 до 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5436,6 +5334,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Чтение изображений" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Предоставляет поддержку для чтения файлов моделей." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Средство чтения Trimesh" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5466,16 +5374,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "Чтение 3MF" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "Считывает файлы SVG как пути инструментов для отладки движений принтера." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "Средство считывания путей инструментов SVG" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5516,16 +5414,6 @@ 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." @@ -5566,6 +5454,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Чтение профиля Cura" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Сбросить текущие параметры к стандартным значениям" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Профиль был нормализован и активирован." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Записывает X3g в файлы" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "Файл X3g" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "Файл X3G" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Помощник по профилю" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Помощник по профилю" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Повторить" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Экструдер" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Не поддерживать перекрытие с другими моделями" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Изменять настройки для перекрытия с другими моделями" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Изменять настройки для заполнения других моделей" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Обновить существующий" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Не поддерживается" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Предыдущий" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "Кончик" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Пробная печать" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Контрольный список" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Пожалуйста, укажите любые изменения, внесённые в Ultimaker 2." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Блок Олссона" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Рендеринг камеры: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Использовать функционал нескольких рабочих столов" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Использовать функционал нескольких рабочих столов (требуется перезапуск)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Профили по умолчанию" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "параметры поиска" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Высота слоя" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Этот профиль качества недоступен для вашей текущей конфигурации материала и сопла. Измените эти параметры для задействования данного профиля качества." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "В настоящее время активен пользовательский профиль. Чтобы включить ползунок качества, на вкладке «Пользовательские» выберите профиль качества по умолчанию" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "Рабочий стол" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "Профиль" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Рабочий стол" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Запись содержимого всех настроек в виде HTML файла." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Режим бога" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Создание нормализованного профиля с изменениями качества." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Нормализатор профиля" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Позволяет производителям материалов создавать новые профили материалов и качества с помощью дружественного интерфейса." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Помощник по профилю печати" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Подключен по сети." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Подключен по сети. Пожалуйста, подтвердите запрос на принтере." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Подключен по сети. Нет доступа к управлению принтером." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "Запрошен доступ к принтеру. Пожалуйста, подтвердите запрос на принтере" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Состояние аутентификации" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Состояние аутентификации" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Послать запрос доступа ещё раз" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Доступ к принтеру получен" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Нет доступа к использованию этого принтера. Невозможно отправить задачу на печать." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Запросить доступ" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Отправить запрос на доступ к принтеру" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Не удалось начать новое задание печати." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Возникла проблема конфигурации Ultimaker, из-за которой невозможно начать печать. Перед продолжением работы решите возникшую проблему." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Несовпадение конфигурации" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Вы уверены, что желаете печатать с использованием выбранной конфигурации?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Есть несовпадение между конфигурацией или калибровкой принтера и Cura. Для лучшего результата, всегда производите слайсинг для PrintCore и материала, которые установлены в вашем принтере." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Отправка новых заданий (временно) заблокирована, идёт отправка предыдущего задания." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Отправка данных на принтер" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Отправка данных" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Модуль экструдера PrintCore не загружен в слот {slot_number}" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Материал не загружен в слот {slot_number}" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Другой модуль экструдера PrintCore (Cura: {cura_printcore_name}, принтер: {remote_printcore_name}) выбран для экструдера {extruder_id}" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Разный материал (Cura: {0}, Принтер: {1}) выбран для экструдера {2}" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Синхронизация с вашим принтером" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Желаете использовать текущую конфигурацию принтера в Cura?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Модуль PrintCore и/или материал в вашем принтере отличается от тех, что вы используете в текущем проекте. Для наилучшего результата всегда указывайте правильный модуль PrintCore и материалы, которые вставлены в ваш принтер." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Просмотр на мониторе" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name} завершил печать '{job_name}'." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Задание печати '{job_name}' выполнено." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Печать завершена" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Пусто" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Неизвестн" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Ошибка облака" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Облако не экспортировало задание печати." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "При подключении к облаку возникла ошибка." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Заливка через облако Ultimaker Cloud" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Подключиться к облаку Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Не спрашивать меня снова для этого принтера." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Теперь вы можете отправлять и отслеживать задания печати из любого места с помощью вашей учетной записи Ultimaker." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Подключено!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Проверьте свое подключение" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "Принтер, заданный в профиле {0} ({1}), не совпадает с вашим текущим принтером ({2}), поэтому его невозможно импортировать." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "Не удалось импортировать профиль из {0}:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Текущее подключение" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Этот принтер/группа уже добавлен (-а) в Cura. Выберите другой (-ую) принтер/группу." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "Введите IP-адрес принтера или его имя в сети." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Подключение к принтеру" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Руководство по параметрам Cura" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "В ортогональной проекции изменение масштаба мышью не поддерживается." + +#~ msgid "Orthogonal" +#~ msgstr "Ортогональная" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Управляет сетевыми соединениями с принтерами Ultimaker 3." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "Соединение с сетью UM3" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Предоставляет дополнительную информацию и пояснения относительно параметров Cura с изображениями и анимацией." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Руководство по параметрам" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Руководство по параметрам Cura" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Настройки изменены в соответствии с текущей доступностью экструдеров: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Описание пользователя" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Указанные опции недоступны, поскольку вы отслеживаете облачный принтер." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Перейти к Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Все задания печати выполнены." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Просмотреть архив печати" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Для печати на вашем принтере через сеть, пожалуйста, удостоверьтесь, что ваш принтер подключен к сети с помощью кабеля или через WiFi. Если вы не подключили Cura к вашему принтеру, вы по-прежнему можете использовать USB флешку для переноса G-Code файлов на ваш принтер.\n" +#~ "\n" +#~ "Укажите ваш принтер в списке ниже:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Проверьте наличие подключения к принтеру:\n" +#~ "- Убедитесь, что принтер включен.\n" +#~ "- Проверьте, подключен ли принтер к сети." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Показывать только текущий рабочий стол" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Выровнять для всех рабочих столов" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Выровнять текущий рабочий стол" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Разрешить сохранение результирующего слоя в формате X3G для поддержки принтеров, считывающих этот формат (Malyan, Makerbot и другие принтеры на базе Sailfish)." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Считывает файлы SVG как пути инструментов для отладки движений принтера." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "Средство считывания путей инструментов SVG" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Журнал изменений" diff --git a/resources/i18n/ru_RU/fdmextruder.def.json.po b/resources/i18n/ru_RU/fdmextruder.def.json.po index 23df03f728..15c5decf0a 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Ruslan Popov , Russian \n" diff --git a/resources/i18n/ru_RU/fdmprinter.def.json.po b/resources/i18n/ru_RU/fdmprinter.def.json.po index 510f400c86..f9f16b4d46 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+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-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Russian , Ruslan Popov , Russian \n" "Language: ru_RU\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -58,7 +58,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr "Команды в G-коде, которые будут выполнены в самом начале, разделенные с помощью \n." +msgstr "" +"Команды в G-коде, которые будут выполнены в самом начале, разделенные с помощью \n" +"." #: fdmprinter.def.json msgctxt "machine_end_gcode label" @@ -70,7 +72,9 @@ msgctxt "machine_end_gcode description" msgid "" "G-code commands to be executed at the very end - separated by \n" "." -msgstr "Команды в G-коде, которые будут выполнены в самом конце, разделенные с помощью \n." +msgstr "" +"Команды в G-коде, которые будут выполнены в самом конце, разделенные с помощью \n" +"." #: fdmprinter.def.json msgctxt "material_guid label" @@ -212,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Имеет ли принтер подогреваемый стол." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Есть стабилизация температуры для объема печати" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Имеет ли принтер возможность стабилизации температуры для объема печати." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -334,7 +348,7 @@ msgstr "Минимальное время, которое экструдер д #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "Вариант G-кода" #: fdmprinter.def.json @@ -1017,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Количество слоёв в дне. При вычислении толщины дна это значение округляется до целого." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "Начальные слои дна" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Количество начальных слоев дна, вверх от рабочего стола. При вычислении толщины дна это значение округляется до целого." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1267,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "Острейший угол" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Позиция Z шва" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Позиция, рядом с которой следует начинать путь на каждом слое." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Сзади слева" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Назад" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Сзади справа" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Справа" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Спереди справа" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Спереди" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Спереди слева" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Слева" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1294,8 +1368,8 @@ msgstr "Настройки угла шва" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Управляет влиянием углов на контуре модели на позицию шва. Нет означает отсутствие влияния. Спрятать шов означает по возможности перенести шов внутрь угла. Показать шов означает по возможности перенести шов наружу. Спрятать или показать означает выбор по ситуации." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Управляет влиянием углов на контуре модели на позицию шва. «Нет» означает отсутствие влияния. «Спрятать шов» означает размещение шва с наибольшей вероятностью внутри угла. «Показать шов» означает размещение шва с наибольшей вероятностью снаружи угла. «Спрятать или показать» означает выбор варианта в зависимости от ситуации. Функция «Интеллектуальное скрытие» допускает размещение швов как внутри, так и снаружи углов, но чаще размещает их внутри." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1317,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Спрятать или показать" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Интеллектуальное скрытие" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1329,13 +1408,13 @@ msgstr "Когда включено, координаты Z шва привяз #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Игнорирование Z зазоров" +msgid "No Skin in Z Gaps" +msgstr "Нет оболочки в Z-зазорах" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Когда модель имеет небольшие вертикальные зазоры, около 5% дополнительного времени будет потрачено на вычисления верхних и нижних оболочек в этих узких пространствах. В этом случае, отключите данный параметр." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Если у модели имеются небольшие вертикальные зазоры, состоящие всего из нескольких слоев, вокруг этих слоев в узком пространстве, как правило, присутствует оболочка. Выбор данного параметра предотвратит создание оболочки в ситуациях, когда вертикальные зазоры очень маленькие. Это позволит сократить время печати и нарезки, но с технической точки зрения область заполнения останется открытой." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1354,8 +1433,8 @@ msgstr "Разрешить разглаживание" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Проходить по верхней оболочке ещё раз, но без выдавливания материала. Это приводит к плавлению пластика, что создаёт более гладкую поверхность." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Проходить по верхней оболочке еще раз, но на этот раз выдавливая очень мало материала. Это приводит к плавлению пластика, что создает более гладкую поверхность. Давление в камере сопла поддерживается на высоком уровне, благодаря чему складки на поверхности заполняются материалом." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1447,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Изменение максимальной мгновенной скорости, с которой выполняется разглаживание." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Процент перекрытия оболочек" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Настройте величину перекрытия между стенками и центральными линиями оболочки (конечными точками) в виде процентного отношения значений ширины линии для линий оболочки и внутренней стенки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Обратите внимание, что при одинаковой толщине оболочки и ширине линии стенки любое процентное значение, превышающее 50%, может привести к размещению любой оболочки за пределами стенки. Это обусловлено тем, что в этот момент расположение сопла экструдера оболочки может сместиться за середину стенки." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Перекрытие оболочек" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Настройте величину перекрытия между стенками и центральными линиями оболочки (конечными точками). Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Обратите внимание, что при одинаковой толщине оболочки и ширине линии стенки любое значение, превышающее половину ширины стенки, может привести к размещению любой оболочки за пределами стенки. Это обусловлено тем, что в этот момент расположение сопла экструдера оболочки может сместиться за середину стенки." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1612,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Расстояние перемещения шаблона заполнения по оси Y." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Рандомизация начала заполнения" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Рандомизировать, какая линия заполнения печатается первой. Это препятствует тому, чтобы один сегмент стал самым сильным, но делает это за счет дополнительного перемещения." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1632,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "Добавление дополнительных стенок вокруг области заполнения. Эти стенки могут уменьшить провисание верхних/нижних линий оболочки, что уменьшает необходимое количество верхних/нижних слоев оболочки без ухудшения качества за счет небольшого увеличения количества материала.\nЭта функция может сочетаться с соединением полигонов заполнения для соединения всего участка заполнения в один путь экструзии без необходимости в движениях или откатах в случае правильной настройки." +msgstr "" +"Добавление дополнительных стенок вокруг области заполнения. Эти стенки могут уменьшить провисание верхних/нижних линий оболочки, что уменьшает необходимое количество верхних/нижних слоев оболочки без ухудшения качества за счет небольшого увеличения количества материала.\n" +"Эта функция может сочетаться с соединением полигонов заполнения для соединения всего участка заполнения в один путь экструзии без необходимости в движениях или откатах в случае правильной настройки." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1664,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Величина перекрытия между заполнением и стенками. Небольшое перекрытие позволяет стенкам плотно соединиться с заполнением." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Процент перекрытия оболочек" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Настройте величину перекрытия между стенками и центральными линиями оболочки (конечными точками) в виде процентного отношения значений ширины линии для линий оболочки и внутренней стенки. Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Обратите внимание, что при одинаковой толщине оболочки и ширине линии стенки любое процентное значение, превышающее 50%, может привести к размещению любой оболочки за пределами стенки. Это обусловлено тем, что в этот момент расположение сопла экструдера оболочки может сместиться за середину стенки." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Перекрытие оболочек" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Настройте величину перекрытия между стенками и центральными линиями оболочки (конечными точками). Небольшое перекрытие позволяет стенкам надежно соединяться с оболочкой. Обратите внимание, что при одинаковой толщине оболочки и ширине линии стенки любое значение, превышающее половину ширины стенки, может привести к размещению любой оболочки за пределами стенки. Это обусловлено тем, что в этот момент расположение сопла экструдера оболочки может сместиться за середину стенки." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1871,8 +1962,8 @@ msgstr "Температура для объема печати" #: fdmprinter.def.json 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, температура для объема печати не будет регулироваться." +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" @@ -1984,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Коэффициент усадки в процентах." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Кристаллический материал" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Это материал, который при нагревании легко ломается по четким линиям (кристаллический) или образует длинные сплетающиеся полимерные цепочки (некристаллический)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Положение отката для защиты от капель" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Насколько далеко необходимо убрать материал, чтобы он перестал капать." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Скорость отката для защиты от капель" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Насколько быстро необходимо убрать материал во время его замены, чтобы не допустить появления капель." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Положение отката для подготовки к отламыванию" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Насколько сильно можно растянуть материал при нагревании, до тех пор пока он не отломится." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Скорость отката для подготовки к отламыванию" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Насколько быстро следует убирать материал, чтобы он отломился." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Положение отката для отламывания" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Насколько далеко следует убрать материал, чтобы он отломился чисто." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Скорость отката для отламывания" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Скорость, при которой убираемый материал отломится чисто." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Температура отламывания" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Температура, при которой материал отломится чисто." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1994,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Компенсация потока: объём выдавленного материала умножается на этот коэффициент." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Поток для стенки" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Компенсация потока на линиях стенки." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Поток для внешней стенки" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "Компенсация потока на внешней линии стенки." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "Поток для внутренних стенок" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "Компенсация потока на линиях стенки для всех линий, за исключением внешней." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Поток для верхних/нижних линий" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Компенсация потока на верхних/нижних линиях." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Поток для верхней оболочки" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Компенсация потока на линиях наверху печатаемой детали." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Поток для заполнения" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Компенсация потока на линиях заполнения." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Поток для юбки/каймы" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Компенсация потока на линиях юбки или каймы." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Поток для поддержек" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Компенсация потока на линиях структуры поддержек." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Поток для связующего слоя поддержек" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Компенсация потока на линиях крыши или низа поддержек." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Поток для крыши поддержек" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Компенсация потока на линиях крыши поддержек." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Поток для низа поддержек" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Компенсация потока на линиях низа поддержек." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "Поток черновой башни" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Компенсация потока на линиях черновой башни." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2111,8 +2402,8 @@ msgstr "Ограничить откаты поддержки" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Избежание отката при перемещении от поддержки к поддержке по прямой. Активация этой настройки сокращает время печати, однако может привести к излишней строчности в поддерживающей структуре." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Пропустить откат при переходе от поддержки к поддержке по прямой линии. Включение этого параметра обеспечивает экономию времени печати, но может привести к чрезмерной строчности структуры поддержек." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2164,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Скорость, с которой материал будет возвращён обратно при смене экструдера." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Дополнительно заполняемый объем при смене экструдера" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Дополнительный объем материала для заполнения после смены экструдера." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2355,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Скорость, на которой происходит печать юбки и каймы. Обычно, их печать происходит на скорости печати первого слоя, но иногда вам может потребоваться печатать юбку или кайму на другой скорости." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Максимальная скорость по оси Z" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Скорость поднятия оси Z" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Максимальная скорость, с которой движется ось Z. Установка нуля в качестве значения, приводит к использованию скорости прописанной в прошивке." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Скорость вертикального движения по оси Z. Обычно она ниже, чем скорость печати, поскольку рабочий стол или портал машины тяжелее сдвинуть." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2864,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Дистанция между соплом и уже напечатанными частями, выдерживаемая при перемещении." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Начинать печать в одном месте" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "На каждом слое печать начинается вблизи одной и той же точки, таким образом, мы не начинаем новый слой на том месте, где завершилась печать предыдущего слоя. Это улучшает печать нависаний и мелких частей, но увеличивает длительность процесса." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3280,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Дистанция между напечатанными линиями структуры поддержек первого слоя. Этот параметр вычисляется по плотности поддержек." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Направление линии заполнения поддержек" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Ориентация шаблона заполнения для поддержек. Шаблон заполнения поддержек вращается в горизонтальной плоскости." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартного угла 0 градусов." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3416,8 +3707,8 @@ msgstr "Расстояние объединения поддержки" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "Максимальное расстояние между структурами поддержки по осям X/Y. Если отдельные структуры находятся ближе, чем определено данным значением, то такие структуры объединяются в одну." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "Максимальное расстояние между структурами поддержек по осям X/Y. Если отдельные структуры находятся ближе, чем определено данным значением, они объединяются в одну." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3701,8 +3992,8 @@ msgstr "Минимальная зона связующего слоя" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Минимальная площадь зоны для полигонов связующего слоя. Полигоны с площадью меньше данного значения не будут генерироваться." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Минимальная площадь зоны для полигонов связующего слоя. Полигоны с площадью меньше данного значения будут печататься как поддержки нормали." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3711,8 +4002,8 @@ msgstr "Минимальная зона верхней части поддерж #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Минимальная площадь зоны для верхних частей поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Минимальная площадь зоны для верхних частей поддержек. Полигоны с площадью меньше данного значения будут печататься как поддержки нормали." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3721,8 +4012,8 @@ msgstr "Минимальная зона нижней части поддерже #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Минимальная площадь зоны для нижних частей поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Минимальная площадь зоны для нижних частей поддержек. Полигоны с площадью меньше данного значения будут печататься как поддержки нормали." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3754,6 +4045,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Величина смещения, применяемая к нижней части поддержек." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Направления линии связующего слоя поддержек" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартных углов (45 либо 135 градусов, если связующий слой довольно толстый, или 90 градусов)." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Направления линии крыши поддержек" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартных углов (45 либо 135 градусов, если связующий слой довольно толстый, или 90 градусов)." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Направления линии низа поддержек" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Список целочисленных направлений линии. Элементы списка используются последовательно по мере печати слоев, и, когда конец списка будет достигнут, он начнется сначала. Элементы списка отделяются запятыми, и сам список заключен в квадратные скобки. По умолчанию список пустой, что означает использование стандартных углов (45 либо 135 градусов, если связующий слой довольно толстый, или 90 градусов)." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3795,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "Диаметр специальных башен." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Минимальный диаметр" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Максимальный диаметр, поддерживаемый башней" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Минимальный диаметр по осям X/Y небольшой области, которая будет поддерживаться с помощью специальных башен." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Максимальный диаметр по осям X/Y небольшой области, который должен поддерживаться определенной башней." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3924,7 +4245,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "Горизонтальное расстояние между юбкой и первым слоем печати.\nМинимальное расстояние. Несколько линий юбки будут расширяться от этого расстояния." +msgstr "" +"Горизонтальное расстояние между юбкой и первым слоем печати.\n" +"Минимальное расстояние. Несколько линий юбки будут расширяться от этого расстояния." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4296,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Печатает башню перед печатью модели, чем помогает выдавить старый материал после смены экструдера." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Цилиндрическая черновая башня" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "Делает черновую башню цилиндрической формы." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4346,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "Y координата позиции черновой башни." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "Поток черновой башни" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Компенсация потока: объём выдавленного материала умножается на этот коэффициент." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4496,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Удаление пустых слоёв под первым печатаемым слоем, если они имеются. Отключение этой функции может привести к созданию первых пустых слоев, если для параметра «Допуск слайсинга» установлено значение «Включение» или «Середина»." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Максимальное разрешение" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Минимальный размер сегмента линии после слайсинга. Увеличение значения этого параметра понизит разрешение модели. Это может позволить принтеру поддерживать скорость обработки кода G и увеличит скорость слайсинга за счет удаления деталей модели, которые он в любом случае не сможет обработать." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Максимальное разрешение перемещения" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Минимальный размер сегмента линии перемещения после разделения на слои. При увеличении этого значения углы при перемещении будут менее сглаженными. Это может помочь принтеру поддерживать скорость обработки G-кода, однако при этом может снизиться точность избегания моделей." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Максимальное отклонение" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Максимальное допустимое отклонение при снижении разрешения для параметра максимального разрешения. Увеличение этого значения понизит точность печати и уменьшит значение G-кода. Максимальное отклонение является пределом для максимального разрешения, поэтому, если они конфликтуют, истинным считается максимальное отклонение." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4658,8 +4991,8 @@ msgstr "Сглаживать спиральные контуры" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но по-прежнему виден при послойном просмотре). Следует отметить, что сглаживание ведёт к размыванию мелких деталей поверхности." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но виден при послойном просмотре). Следует отметить, что сглаживание ведет к размыванию мелких деталей поверхности." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4871,36 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Полигоны в разделенных слоях, длина окружности которых меньше указанной величины, будут отфильтрованы. Пониженные значения приводят к увеличению разрешения объекта за счет времени разделения. Это предназначено главным образом для принтеров SLA с высоким разрешением и миниатюрных 3D-моделей с множеством деталей." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Максимальное разрешение" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Минимальный размер сегмента линии после слайсинга. Увеличение значения этого параметра понизит разрешение модели. Это может позволить принтеру поддерживать скорость обработки кода G и увеличит скорость слайсинга за счет удаления деталей модели, которые он в любом случае не сможет обработать." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Максимальное разрешение перемещения" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Минимальный размер сегмента линии перемещения после разделения на слои. При увеличении этого значения углы при перемещении будут менее сглаженными. Это может помочь принтеру поддерживать скорость обработки G-кода, однако при этом может снизиться точность избегания моделей." - -#: fdmprinter.def.json -msgctxt "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" @@ -5041,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Скорость, с которой производятся движения во время наката, относительно скорости печати. Рекомендуется использовать значение чуть меньше 100%, так как во время наката давление в боудене снижается." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Чередование вращения оболочек" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Изменить направление, в котором печатаются слои крышки/дна. Обычно, они печатаются по диагонали. Данный параметр добавляет направления X-только и Y-только." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5158,8 +5451,8 @@ msgstr "Конические поддержки" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Экспериментальная возможность: Нижняя часть поддержек становится меньше, чем верхняя." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Нижняя часть поддержек становится меньше, чем верхняя." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5223,23 +5516,24 @@ msgstr "Среднее расстояние между случайными то #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Макс. смещение экструзии для компенсации расхода" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Максимальное компенсируемое расстояние в миллиметрах." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Максимальное расстояние (в мм) перемещения материала для компенсации изменения расхода." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Коэффициент компенсации расхода" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Коэффициент перевода расхода в расстояние." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Означает, насколько далеко следует переместить материал, чтобы компенсировать изменение расхода, в процентах от расстояния, на которое перемещается материал" +" за одну секунду экструзии." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5391,7 +5685,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" @@ -5530,13 +5826,14 @@ msgstr "Разница между высотой следующего слоя #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Порог для адаптивных слоев" +msgid "Adaptive Layers Topography Size" +msgstr "Размер топографии адаптивных слоев" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Пороговое значение, при достижении которого будет использоваться меньший слой. Это число сравнивается с тангенсом наиболее крутого наклона в слое." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "Целевое расстояние по горизонтали между двумя соседними слоями. Уменьшение этого значения приведет к сокращению толщины слоев, и края слоев станут ближе" +" друг к другу." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5545,8 +5842,9 @@ msgstr "Угол нависающей стенки" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Стенки, нависающие под углом, который больше указанного, будут напечатаны с использованием настроек нависающей стенки. Если значение составляет 90, стенки не считаются нависающими." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Стенки, выступающие под углом больше указанного, будут напечатаны с использованием настроек выступающей стенки. Если значение составляет 90, стенки не" +" считаются выступающими. Выступающие элементы, для которых имеется поддержка, также не считаются выступающими." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5898,6 +6196,48 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "Расстояние перемещения головки назад и вперед поперек щетки." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Максимальный размер малого отверстия" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Отверстия и контуры деталей с диаметром меньше этого значения будут напечатаны с использованием функции «Скорость для малых элементов»." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Максимальная длина малого элемента" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Контуры элементов с длиной меньше этого значения будут напечатаны с использованием функции «Скорость для малых элементов»." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Скорость для малых элементов" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Малые элементы будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить адгезию" +" и точность." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Скорость первого слоя для небольших объектов" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Малые элементы на первом слое будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить" +" адгезию и точность." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5958,6 +6298,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Матрица преобразования, применяемая к модели при её загрузке из файла." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Минимальная площадь зоны для полигонов связующего слоя. Полигоны с площадью меньше данного значения не будут генерироваться." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Минимальная площадь зоны для верхних частей поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Минимальная площадь зоны для нижних частей поддержек. Полигоны с площадью меньше данного значения не будут генерироваться." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Чередование вращения оболочек" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Изменить направление, в котором печатаются слои крышки/дна. Обычно, они печатаются по диагонали. Данный параметр добавляет направления X-только и Y-только." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Макс. смещение экструзии для компенсации расхода" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Максимальное компенсируемое расстояние в миллиметрах." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Коэффициент компенсации расхода" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Коэффициент перевода расхода в расстояние." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Порог для адаптивных слоев" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Пороговое значение, при достижении которого будет использоваться меньший слой. Это число сравнивается с тангенсом наиболее крутого наклона в слое." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Стенки, нависающие под углом, который больше указанного, будут напечатаны с использованием настроек нависающей стенки. Если значение составляет 90, стенки не считаются нависающими." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Малые элементы будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить адгезию и точность." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "Скорость первого слоя" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Малые элементы на первом слое будут напечатаны со скоростью, составляющей этот процент от их нормальной скорости печати. Более медленная печать может улучшить адгезию и точность." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Проходить по верхней оболочке ещё раз, но без выдавливания материала. Это приводит к плавлению пластика, что создаёт более гладкую поверхность." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Начинать печать в одном месте" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "На каждом слое печать начинается вблизи одной и той же точки, таким образом, мы не начинаем новый слой на том месте, где завершилась печать предыдущего слоя. Это улучшает печать нависаний и мелких частей, но увеличивает длительность процесса." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Ориентация шаблона заполнения для поддержек. Шаблон заполнения поддержек вращается в горизонтальной плоскости." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Максимальное допустимое отклонение при снижении разрешения для параметра максимального разрешения. Увеличение этого значения уменьшит точность печати и значение G-кода." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "Вариант G-кода" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Управляет влиянием углов на контуре модели на позицию шва. Нет означает отсутствие влияния. Спрятать шов означает по возможности перенести шов внутрь угла. Показать шов означает по возможности перенести шов наружу. Спрятать или показать означает выбор по ситуации." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Игнорирование Z зазоров" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Когда модель имеет небольшие вертикальные зазоры, около 5% дополнительного времени будет потрачено на вычисления верхних и нижних оболочек в этих узких пространствах. В этом случае, отключите данный параметр." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Температура, используемая для объема печати. Если значение равно 0, температура для объема печати не будет регулироваться." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Избежание отката при перемещении от поддержки к поддержке по прямой. Активация этой настройки сокращает время печати, однако может привести к излишней строчности в поддерживающей структуре." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Максимальная скорость по оси Z" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Максимальная скорость, с которой движется ось Z. Установка нуля в качестве значения, приводит к использованию скорости прописанной в прошивке." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "Максимальное расстояние между структурами поддержки по осям X/Y. Если отдельные структуры находятся ближе, чем определено данным значением, то такие структуры объединяются в одну." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Минимальный диаметр" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Минимальный диаметр по осям X/Y небольшой области, которая будет поддерживаться с помощью специальных башен." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Цилиндрическая черновая башня" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "Делает черновую башню цилиндрической формы." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Компенсация потока: объём выдавленного материала умножается на этот коэффициент." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Сглаживает спиральные контуры для уменьшения видимости шва по оси Z (такой шов должен быть едва виден при печати, но по-прежнему виден при послойном просмотре). Следует отметить, что сглаживание ведёт к размыванию мелких деталей поверхности." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Экспериментальная возможность: Нижняя часть поддержек становится меньше, чем верхняя." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Количество включенных экструдеров" @@ -6163,7 +6647,6 @@ msgstr "Матрица преобразования, применяемая к #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "Команды в G-коде, которые будут выполнены при старте печати, разделённые \n" #~ "." @@ -6176,7 +6659,6 @@ msgstr "Матрица преобразования, применяемая к #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "Команды в G-коде, которые будут выполнены в конце печати, разделённые \n" #~ "." @@ -6233,7 +6715,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 2e0eb16b0c..b58a394a66 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-03-13 14:00+0200\n" -"Last-Translator: Bothof \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Turkish , Turkish \n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 2.0.6\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "Makine Ayarları" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code dosyası" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter metin dışı modu desteklemez." -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "Lütfen dışa aktarmadan önce G-code'u hazırlayın." @@ -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:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,63 +64,56 @@ 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

" +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" msgid "Update Firmware" msgstr "Aygıt Yazılımını Güncelle" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "Düzleştirme aktif ayarları" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF Dosyası" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "Profil düzleştirilmiş ve aktifleştirilmiştir." - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB yazdırma" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "USB ile yazdır" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "USB ile bağlı" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USB’den yazdırma devam ediyor, Cura’yı kapatmanız bu yazdırma işlemini durduracak. Emin misiniz?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G Dosyası" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "Devam eden bir baskı var. Cura, önceki baskı tamamlanmadan USB aracılığıyla başka bir baskı işi başlatamaz." -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "Dosyalara X3g yazar" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g Dosyası" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "Baskı Sürüyor" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -156,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "Çıkarılabilir Sürücüye Kaydediliyor {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "Yazılacak dosya biçimleri mevcut değil!" @@ -193,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "Çıkarılabilir aygıta {0} kaydedilemedi: {1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "Hata" @@ -225,9 +217,9 @@ msgstr "Çıkarılabilir aygıtı çıkar {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "Uyarı" @@ -254,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "Çıkarılabilir Sürücü" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -msgstr "Ağ üzerinden bağlandı." - -#: /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: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: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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "Kimlik doğrulama durumu" - -#: /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: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: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: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: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: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: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: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: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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "Veriler yazıcıya gönderiliyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "Veri gönderiliyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "İptal Et" - -#: /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: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: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: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: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: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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "Ağ üzerinden bağlandı" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -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:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "Veri Gönderildi" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "Monitörde Görüntüle" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "Boş" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "Bilinmiyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "Bulut üzerinden yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "Bulut üzerinden yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "Bulut üzerinden bağlı" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "Bulut hatası" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -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:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "Veri yazıcıya yüklenemedi." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "yarın" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "bugün" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "Ultimaker Cloud İle Yükleniyor" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -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:634 -msgctxt "@action" -msgid "Get started" -msgstr "Başlayın" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "Bağlı!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "Bağlantınızı inceleyin" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "Ağ ile Bağlan" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Cura Ayarlar Kılavuzu" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "Ağ üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "Ağ üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "Ağ üzerinden bağlandı" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "Mevcut iş gönderilene kadar bekleyin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "Baskı hatası" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "Yeni bulut yazıcılar bulundu" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "Hesabınıza bağlı yeni yazıcılar bulundu. Keşfedilen yazıcılar listenizde bunları görüntüleyebilirsiniz." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "Bu mesajı bir daha gösterme" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "{0} ile bağlantı kurmayı deniyorsunuz ancak cihaz bir grubun ana makinesi değil. Bu cihazı grup ana makinesi olarak yapılandırmak için web sayfasını ziyaret edebilirsiniz." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "Grup ana makinesi değil" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "Grubu yapılandır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "Ultimaker hesabınızı kullanarak yazdırma görevlerini dilediğiniz yerden gönderin ve görüntüleyin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "Ultimaker Cloud Platformuna Bağlan" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "Başlayın" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "Yazdırma İşi Gönderiliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "Baskı işi yazıcıya yükleniyor." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "Yazdırma işi yazıcıya başarıyla gönderildi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "Veri Gönderildi" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "Ultimaker Connect çalıştırmayan bir yazıcıya bağlanmaya çalışıyorsunuz. Lütfen yazıcının donanım yazılımını son sürüme güncelleyin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "Yazıcınızı güncelleyin" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura, henüz {0} grubunun ana yazıcısına yüklenmemiş malzeme profilleri tespit etti." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "Malzemeler yazıcıya gönderiliyor" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "Veri yazıcıya yüklenemedi." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "Ağ hatası" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "yarın" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "bugün" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "Bulut üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "Bulut üzerinden yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "Bulut üzerinden bağlı" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "Görüntüle" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "Güncelleme bilgilerine erişilemedi." @@ -621,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "Katman görünümü" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "Tel Yazma etkinleştirildiğinde, Cura katmanları doğru olarak görüntülemez" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "Simülasyon Görünümü" @@ -681,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF Resmi" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -745,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "Model Başına Ayarları Yapılandır" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "Önerilen Ayarlar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "Özel" @@ -761,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF Dosyası" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "Nozül" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "Proje dosyası {0} bilinmeyen bir makine tipi içeriyor: {1}. Makine alınamıyor. Bunun yerine modeller alınacak." -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "Proje Dosyası Aç" @@ -788,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G Dosyası" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "G-code ayrıştırma" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code Ayrıntıları" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "Dosya göndermeden önce g-code’un yazıcınız ve yazıcı yapılandırmanız için uygun olduğundan emin olun. G-code temsili doğru olmayabilir." @@ -853,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura Profili" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "Profil Asistanı" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "Profil Asistanı" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -883,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "Önizleme" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -899,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "Giriş başarısız" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "Desteklenmiyor" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "Dosya Zaten Mevcut" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "Dosya {0} zaten mevcut. Üstüne yazmak istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "Geçersiz dosya URL’si:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "Ayarlar, ekstrüderlerin mevcut kullanılabilirliğine uyacak şekilde değiştirildi:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "Ayarlar güncellendi" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "Ekstrüder(ler) Devre Dışı Bırakıldı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "Bilinmiyor" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "Profilin {0} dosyasına aktarımı başarısız oldu: Yazıcı eklentisinde rapor edilen hata." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "Profil {0} dosyasına aktarıldı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "Dışa aktarma başarılı" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "Yazıcı eklenmeden önce profil, {0} dosyasından içe aktarılamaz." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "{0} dosyasında içe aktarılabilecek özel profil yok" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "Bu {0} profili yanlış veri içeriyor, içeri aktarılamadı." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "{0} ({1}) profilinde tanımlanan makine, mevcut makineniz ({2}) ile eşleşmiyor, içe aktarılamadı." - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "Profil başarıyla içe aktarıldı {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "Dosya {0} geçerli bir profil içermemekte." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "Profil {0} öğesinde bilinmeyen bir dosya türü var veya profil bozuk." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "Özel profil" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "Profilde eksik bir kalite tipi var." -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1099,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "Diğer" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "Önceden dilimlenmiş dosya {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /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:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1119,73 +953,120 @@ msgstr "Grup #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "Kapat" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "Ekle" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "İptal Et" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "Görsel" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "Görsel profili, yüksek görsel ve yüzey kalitesi oluşturmak amacıyla, görsel prototipler ve modeller basılması için tasarlanmıştır." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "Mühendislik profili, daha yüksek doğruluk ve daha yakın toleranslar sağlamak amacıyla, işlevsel prototipler ve son kullanım parçaları basılması için tasarlanmıştır." + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "Taslak" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "Taslak profili, baskı süresinin önemli ölçüde kısaltılması amacıyla, birincil prototipler basılması ve konsept doğrulaması yapılması için tasarlanmıştır." + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "Geçersiz kılınmadı" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "Özel profiller" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "Tüm desteklenen türler ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "Tüm Dosyalar (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "Bilinmiyor" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "Mevcut ağ yazıcıları" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "Özel Malzeme" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "Özel" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "Aşağıdaki yazıcı(lar) bir grubun parçası olmadıkları için bağlanamıyor" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "Mevcut ağ yazıcıları" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "Portalın yazdırılan modeller ile çarpışmasını önlemek için yapı hacmi yüksekliği “Sıralamayı Yazdır” ayarı nedeniyle azaltıldı." -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "Yapı Disk Bölümü" @@ -1210,39 +1091,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "Yanıt okunamadı." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "Ultimaker hesabı sunucusuna ulaşılamadı." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "Lütfen bu başvuruya yetki verirken gerekli izinleri verin." -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "Oturum açmaya çalışırken beklenmeyen bir sorun oluştu, lütfen tekrar deneyin." -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "Nesneler çoğaltılıyor ve yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "Nesneler Yerleştiriliyor" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "Yapılan hacim içinde tüm nesneler için konum bulunamadı" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "Nesne Yerleştiriliyor" @@ -1278,7 +1159,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" @@ -1311,7 +1197,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" @@ -1383,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "Makineler yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "Tercihler ayarlanıyor..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "Görünüm ayarlanıyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "Arayüz yükleniyor..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "Aynı anda yalnızca bir G-code dosyası yüklenebilir. {0} içe aktarma atlandı" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "G-code yüklenirken başka bir dosya açılamaz. {0} içe aktarma atlandı" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "Seçilen model yüklenemeyecek kadar küçüktü." -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "Yazıcı Ayarları" @@ -1442,15 +1336,15 @@ msgstr "X (Genişlik)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1482,50 +1376,55 @@ msgstr "Isıtılmış yatak" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "Isıtılmış yapı hacmi" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "G-code türü" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "Yazıcı Başlığı Ayarları" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y min" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y maks" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "Portal Yüksekliği" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "Ekstrüder Sayısı" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "G-code’u Başlat" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "G-code’u Sonlandır" @@ -1555,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "Nozül X ofseti" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /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/MachineSettingsExtruderTab.qml:133 +#: /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/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "Ekstruder G-Code'u Sonlandırma" @@ -1581,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "Yüklü" @@ -1596,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "derecelendirmeler" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "Eklentiler" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "Malzemeler" @@ -1615,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1718,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "Cura’dan Çıkın" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "Topluluk Katkıları" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "Topluluk Eklentileri" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "Genel Materyaller" @@ -1769,7 +1668,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" @@ -1786,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "Öne Çıkan" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "Uyumluluk" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "Makine" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "Baskı tepsisi" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "Destek" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "Kalite" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "Teknik Veri Sayfası" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "Güvenlik Veri Sayfası" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "Yazdırma Talimatları" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "Web sitesi" @@ -1906,70 +1828,76 @@ 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/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "Yazıcıyı yönet" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "Cam" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "Görüntülediğiniz yazıcı bulut yazıcısı olduğundan web kamerasını kullanamazsınız." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "Yükleniyor..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "Mevcut değil" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "Ulaşılamıyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "Boşta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "Başlıksız" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "Anonim" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "Yapılandırma değişiklikleri gerekiyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "Detaylar" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "Kullanım dışı yazıcı" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "İlk kullanılabilen" @@ -1979,209 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "Kuyrukta" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "Kuyrukta baskı işi yok. Bir iş eklemek için dilimleme yapın ve gönderin." + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "Yazdırma görevleri" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "Toplam yazdırma süresi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "Bekleniyor" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "Tüm işler yazdırıldı." - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -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:50 -msgctxt "@window:title" -msgid "Existing Connection" -msgstr "Mevcut Bağlantı" - -#: /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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "Ağ Yazıcısına Bağlan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n\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:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "Aşağıdaki listeden yazıcınızı seçin:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "Düzenle" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "Kaldır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "Yenile" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "Yazıcınız listede yoksa ağ yazdırma sorun giderme kılavuzunu okuyun" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "Tür" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "Üretici yazılımı sürümü" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "Adres" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "Bu yazıcı, bir yazıcı grubunu barındırmak için ayarlı değildir." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "Bu yazıcı, %1 yazıcı grubunun ana makinesidir." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "Bu adresteki yazıcı henüz yanıt vermedi." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "Bağlan" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "Geçersiz IP adresi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "Lütfen geçerli bir IP adresi girin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "Yazıcı Adresi" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." +msgid "Enter the IP address of your printer on the network." +msgstr "Ağdaki yazıcınızın IP adresini girin." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "Tamam" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "%1 bitiş tarihi: %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "Yazdır" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "Ağ üzerinden yazdır" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "Yazdır" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "Yazıcı seçimi" @@ -2270,65 +2184,60 @@ msgctxt "@action:button" msgid "Override" msgstr "Geçersiz kıl" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "Alüminyum" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "Yazıcıya Bağlan" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2537,70 +2446,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "Düzeltme" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "Ağ Tipi" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "Normal model" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "Destek olarak yazdır" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "Diğer modellerle örtüşmeyi destekleme" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "Diğer modellerle örtüşme ayarlarını değiştir" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "Diğer modellerle doldurma ayarlarını değiştir" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "Ayarları seçin" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "Bu modeli Özelleştirmek için Ayarları seçin" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "Filtrele..." -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "Tümünü göster" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "Ağ Tipi" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "Normal model" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "Destek olarak yazdır" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "Çakışma ayarlarını değiştir" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "Çakışmaları destekleme" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "Yalnızca dolgu" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "Ayarları seçin" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "Proje Aç" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "Var olanları güncelleştir" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "Yeni oluştur" @@ -2627,6 +2535,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "Güncelle" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "Yeni oluştur" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2640,7 +2553,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:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "Profil ayarları" @@ -2651,75 +2564,81 @@ msgid "How should the conflict in the profile be resolved?" msgstr "Profildeki çakışma nasıl çözülmelidir?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "İsim" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "Profilde değil" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 geçersiz kılma" msgstr[1] "%1 geçersiz kılmalar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "Kaynağı" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 geçersiz kılma" msgstr[1] "%1, %2 geçersiz kılmalar" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "Malzeme ayarları" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "Malzemedeki çakışma nasıl çözülmelidir?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "Görünürlük ayarı" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "Mod" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "Görünür ayarlar:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "Bir projenin yüklenmesi derleme levhasındaki tüm modelleri siler." -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "Aç" @@ -2826,48 +2745,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "Cura’nın başlatıldığı günlerde otomatik olarak yedekleme yapar." -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "Desteklenmiyor" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "Dışa Aktar" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "İpucu" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "Yazdırma denemesi" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "Kontrol listesi" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Bloku" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2953,170 +2830,176 @@ msgctxt "@label" msgid "Are you sure you want to abort the print?" msgstr "Yazdırmayı iptal etmek istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:72 msgctxt "@title" msgid "Information" msgstr "Bilgi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "Çap Değişikliğini Onayla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "Yeni filaman çapı %1 mm olarak ayarlandı ve bu değer, geçerli ekstrüder ile uyumlu değil. Devam etmek istiyor musunuz?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "Görünen Ad" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "Marka" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "Malzeme Türü" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "Renk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "Özellikler" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "Yoğunluk" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "Çap" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "Filaman masrafı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "Filaman ağırlığı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "Filaman uzunluğu" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "Metre başına maliyet" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "Bu malzeme %1’e bağlıdır ve özelliklerinden bazılarını paylaşır." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "Malzemeyi Ayır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "Tanım" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "Yapışma Bilgileri" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "Yazdırma ayarları" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "Etkinleştir" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "Dışa Aktar" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "Kaldırmayı Onayla" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "%1’i kaldırmak istediğinizden emin misiniz? Bu eylem geri alınamaz!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "Malzemeyi İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "Malzeme %1 dosyasına içe aktarılamadı: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "Malzeme %1 dosyasına başarıyla içe aktarıldı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "Malzemeyi Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "Malzemenin %1 dosyasına dışa aktarımı başarısız oldu: %2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "Malzeme %1 dosyasına başarıyla dışa aktarıldı" @@ -3131,414 +3014,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "Tümünü denetle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "Hesaplanmış" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "Ayar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "Geçerli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "Birim" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 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:143 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:210 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:223 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:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "Bu değişikliklerinin geçerli olması için uygulamayı yeniden başlatmanız gerekecektir." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "Ayarlar değiştirilirken otomatik olarak dilimle." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "Otomatik olarak dilimle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "Görünüm şekli" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "Modelin desteklenmeyen alanlarını kırmızı ile gösterin. Destek alınmadan bu alanlar düzgün bir şekilde yazdırılmayacaktır." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "Dışarıda kalan alanı göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "Bir model seçildiğinde bu model görüntünün ortasında kalacak şekilde kamera hareket eder" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "Öğeyi seçince kamerayı ortalayın" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "Cura’nın varsayılan yakınlaştırma davranışı tersine çevrilsin mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "Kamera yakınlaştırma yönünü ters çevir." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "Yakınlaştırma farenin hareket yönüne uygun olsun mu?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "Fareye doğru yakınlaştırma yapılması ortografik perspektifte desteklenmez." + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "Farenin hareket yönüne göre yakınlaştır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "Platformun üzerindeki öğeler kesişmemeleri için hareket ettirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "Modellerin birbirinden ayrı olduğundan emin olduğundan emin olun" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "Platformun üzerindeki modeller yapı levhasına değmeleri için indirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "Modelleri otomatik olarak yapı tahtasına indirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "G-code okuyucuda uyarı mesajı göster." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code okuyucuda uyarı mesajı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "Katman, uyumluluk moduna zorlansın mı?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "Katman görünümünü uyumluluk moduna zorla (yeniden başlatma gerekir)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Cura kapatıldığı yerden mi başlatılsın?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "Başlangıçtaki pencere konumuna dönülsün" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "Ne tür bir kamera oluşturma işlemi kullanılmalıdır?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "Kamera oluşturma:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "Perspektif" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "Ortografik" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "Dosyaların açılması ve kaydedilmesi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "Modeller çok büyükse yapı hacmine göre ölçeklendirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "Büyük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "Bir modelin birimi milimetre değil de metre ise oldukça küçük görünebilir. Bu modeller ölçeklendirilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "Çok küçük modelleri ölçeklendirin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "Yüklendikten sonra modeller seçilsin mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "Yüklendiğinde modelleri seç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "Yazıcı adına bağlı bir ön ek otomatik olarak yazdırma işinin adına eklenmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "Makine ön ekini iş adına ekleyin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "Bir proje dosyasını kaydederken özet gösterilmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "Projeyi kaydederken özet iletişim kutusunu göster" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "Bir proje dosyası açıldığında varsayılan davranış" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "Bir proje dosyası açıldığında varsayılan davranış: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "Her zaman sor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "Her zaman proje olarak aç" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "Her zaman modelleri içe aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "Bir profil üzerinde değişiklik yapıp farklı bir profile geçtiğinizde, değişikliklerin kaydedilmesini isteyip istemediğinizi soran bir iletişim kutusu açılır. Alternatif olarak bu işleve yönelik varsayılan bir davranış seçebilir ve bu iletişim kutusunun bir daha görüntülenmemesini tercih edebilirsiniz." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "Profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "Farklı bir profile geçerken değişen ayar değerleriyle ilgili varsayılan davranış: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "Her zaman sor" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "Değiştirilen ayarları her zaman at" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "Değiştirilen ayarları her zaman yeni profile taşı" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "Gizlilik" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "Cura, program başladığında güncellemeleri kontrol etmeli mi?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "Başlangıçta güncellemeleri kontrol edin" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "Yazdırmanızdaki anonim veriler Ultimaker’a gönderilmeli mi? Unutmayın; hiçbir model, IP adresi veya diğer kişiye özgü bilgiler gönderilmez veya saklanmaz." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(Anonim) yazdırma bilgisi gönder" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "Daha fazla bilgi" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -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 -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:411 +#: /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:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "Yeniden adlandır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "Profiller" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "Profil Oluştur" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "Bu profil için lütfen bir ad girin." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "Profili Çoğalt" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "Profili Yeniden Adlandır" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "Profili İçe Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "Profili Dışa Aktar" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "Yazıcı: %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "Varsayılan profiller" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 msgctxt "@action:button" msgid "Update profile with current settings/overrides" msgstr "Profili geçerli ayarlar/geçersiz kılmalar ile güncelle" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:497 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "Geçerli değişiklikleri iptal et" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "Bu profil yazıcının belirlediği varsayılan ayarları kullanır; dolayısıyla aşağıdaki listede bulunan ayarları/geçersiz kılmaları içermez." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "Geçerli ayarlarınız seçilen profille uyumlu." -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "Küresel Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "Mağaza" @@ -3598,36 +3489,36 @@ msgstr "Başlıksız" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" -msgstr "arama ayarları" +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:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "Değeri tüm ekstruderlere kopyala" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "Tüm değiştirilmiş değerleri tüm ekstruderlere kopyala" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "Bu ayarı gizle" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "Bu ayarı gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "Bu ayarı görünür yap" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "Görünürlük ayarını yapılandır..." @@ -3638,55 +3529,71 @@ 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:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "Bu ayar her zaman, tüm ekstrüderler arasında paylaşılır. Buradan değiştirildiğinde tüm ekstrüderler için değer değiştirir." -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "Değer, her bir ekstruder değerinden alınır. " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "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:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "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/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" +msgstr[1] "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "Önerilen" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "Özel" @@ -3711,36 +3618,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "Modellerin askıda kalan kısımlarını destekleyen yapılar oluşturun. Bu yapılar olmadan, yazdırma sırasında söz konusu kısımlar düşebilir." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "Katman Yüksekliği" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "Bazı profil ayarlarını değiştirdiniz. Bunları değişiklikleri kaydetmek istiyorsanız, özel moda gidin." -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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." - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "Özel bir profil şu anda aktif. Kalite kaydırıcısını etkinleştirmek için Özel sekmesinde varsayılan bir kalite seçin" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3751,18 +3643,31 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "Kapalı" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "Deneysel" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "Profil" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "Bazı ayar/geçersiz kılma değerleri profilinizde saklanan değerlerden farklıdır.\n\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/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "Özel profiller" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" @@ -3799,59 +3704,59 @@ 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." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "Ekstrüder" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "Sıcak ucun hedef sıcaklığı. Sıcak uç, bu sıcaklığa doğru ısıtılır veya soğutulur. Bu ayar 0 olarak belirlenirse sıcak uç ısıtma kapatılır." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "Bu sıcak ucun geçerli sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "Sıcak ucun ön ısıtma sıcaklığı." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "İptal Et" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "Ön ısıtma" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "Yazdırma öncesinde sıcak ucu ısıt. Isıtma sırasında yazdırma işinizi ayarlamaya devam edebilirsiniz. Böylece yazdırmaya hazır olduğunuzda sıcak ucun ısınmasını beklemeniz gerekmez." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "Bu ekstruderdeki malzemenin rengi." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "Bu ekstruderdeki malzeme." -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "Bu ekstrudere takılan nozül." @@ -3891,12 +3796,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "Favoriler" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "Genel" @@ -3916,42 +3821,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "&Yazıcı" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "&Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "Etkin Ekstruder olarak ayarla" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "Ekstruderi Etkinleştir" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "Ekstruderi Devre Dışı Bırak" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:68 -msgctxt "@title:menu" -msgid "&Build plate" -msgstr "&Yapı levhası" - -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "&Profil" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "&Kamera konumu" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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ı" @@ -3971,17 +3881,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "Ayar Görünürlüğünü Yönet..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "&Kaydet..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "&Dışa Aktar..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "Seçimi Dışa Aktar..." @@ -4010,12 +3920,12 @@ msgctxt "@header" msgid "Configurations" msgstr "Yapılandırmalar" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "Yapılandırma seç" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "Yapılandırmalar" @@ -4045,12 +3955,12 @@ msgctxt "@label" msgid "Enabled" msgstr "Etkin" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "Bu malzeme kombinasyonuyla daha iyi yapıştırma için yapıştırıcı kullanın." @@ -4070,22 +3980,22 @@ 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" @@ -4095,6 +4005,11 @@ msgctxt "@label" msgid "View type" msgstr "Görüntüleme tipi" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "Nesne listesi" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4126,7 +4041,10 @@ msgid "" "- Send print jobs to Ultimaker printers outside your local network\n" "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" "- Get exclusive access to print profiles from leading brands" -msgstr "- Yerel ağınız dışındaki Ultimaker yazıcılarına yazdırma görevleri gönderin\n- Dilediğiniz yerde kullanmak üzere Ultimaker Cura ayarlarınızı bulutta depolayın\n- Lider markalardan yazdırma profillerine özel erişim sağlayın" +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" @@ -4143,32 +4061,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "Maliyet tahmini yok" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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" msgstr "Dilimlenemedi" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "İptal" @@ -4203,233 +4126,238 @@ msgctxt "@label" msgid "Preset printers" msgstr "Önayarlı yazıcılar" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /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:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /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:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /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:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "&Mağazayı Göster" @@ -4444,49 +4372,49 @@ 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:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "Ayarlar" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "Cura Kapatılıyor" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "Cura’dan çıkmak istediğinizden emin misiniz?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "Dosya aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "Paketi Kur" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "Dosya Aç" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "Seçtiğiniz dosyalar arasında bir veya daha fazla G-code dosyası bulduk. Tek seferde sadece bir G-code dosyası açabilirsiniz. Bir G-code dosyası açmak istiyorsanız, sadece birini seçiniz." -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "Yazıcı Ekle" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "Yenilikler" @@ -4508,7 +4436,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" @@ -4555,139 +4485,141 @@ msgctxt "@title:window" msgid "About Cura" msgstr "Cura hakkında" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "sürüm: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "Kaynaşık filaman 3B yazdırma için kalıcı çözüm." -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura, topluluk iş birliği ile Ultimaker B.V. tarafından geliştirilmiştir.\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 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "Grafik kullanıcı arayüzü" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "Uygulama çerçevesi" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "G-code oluşturucu" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "İşlemler arası iletişim kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "Programlama dili" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI çerçevesi" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUI çerçeve bağlantıları" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C/C++ Bağlantı kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "Veri değişim biçimi" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "Bilimsel bilgi işlem için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "Daha hızlı matematik için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "STL dosyalarının işlenmesi için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "Düzlemsel nesnelerin işlenmesi için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "Üçgen birleşimlerin işlenmesi için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "Karmaşık ağların analizi için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "3MF dosyalarının işlenmesi için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "Dosya meta verileri ve akış için destek kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "Seri iletişim kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConf keşif kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "Poligon kırpma kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Python HTTP kitaplığı" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "Yazı tipi" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG simgeleri" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Linux çapraz-dağıtım uygulama dağıtımı" @@ -4707,32 +4639,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "Projeyi Kaydet" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "Baskı tepsisi" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "Ekstruder %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "Malzeme" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "Kaydederken proje özetini bir daha gösterme" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "Kaydet" @@ -4908,12 +4835,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "Sorun giderme" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "Yazıcı adı" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "Lütfen yazıcınıza bir isim verin" @@ -4963,27 +4890,39 @@ 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." +msgstr "" +"Ultimaker Cura'yı kurmak\n" +" için lütfen aşağıdaki adımları izleyin. Bu sadece birkaç saniye sürecektir." #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 msgctxt "@button" msgid "Get started" msgstr "Başlayın" -#: /home/ruben/Projects/Cura/resources/qml/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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3 Boyutlu Görünüm" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +msgstr "Önden Görünüm" -#: /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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "Yukarıdan Görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "Sol görünüm" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "Sağ görünüm" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5045,16 +4984,6 @@ msgctxt "name" msgid "Model Checker" msgstr "Model Kontrol Edici" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "Tüm ayarların içeriklerini bir HTML dosyasına aktarır." - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "Tanrı Modu" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5065,15 +4994,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "Aygıt Yazılımı Güncelleyici" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "Düzleştirilmiş kalitede değiştirilmiş bir profil oluşturun." +msgid "Provides support for reading AMF files." +msgstr "AMF dosyalarının okunması için destek sağlar." -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "Profil Düzleştirici" +msgid "AMF Reader" +msgstr "AMF Okuyucu" #: USBPrinting/plugin.json msgctxt "description" @@ -5085,16 +5014,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB yazdırma" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "Bu formatı okuyan yazıcıları (Malyan, Makerbot ve diğer Sailfish tabanlı yazıcılar) desteklemek için Ortaya çıkacak parçanın X3G dosyası olarak kaydedilmesine izin verir." - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3GWriter" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5137,23 +5056,13 @@ msgstr "Çıkarılabilir Sürücü Çıkış Cihazı Eklentisi" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "Ultimaker 3 yazıcıları için ağ bağlantılarını yönetir." +msgid "Manages network connections to Ultimaker networked printers." +msgstr "Ultimaker ağındaki yazıcılar için ağ bağlantılarını yönetir." #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 Ağ Bağlantısı" - -#: 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" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker Ağ Bağlantısı" #: MonitorStage/plugin.json msgctxt "description" @@ -5285,6 +5194,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "3.3'dan 3.4'e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "Yapılandırmaları Cura 4.3'ten Cura 4.4'e yükseltir." + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "4.3'ten 4.4'e Sürüm Yükseltme" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5345,6 +5264,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "3.0'dan 3.1'e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "Yapılandırmaları Cura 4.1'den Cura 4.2'ye yükseltir." + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "Sürüm 4.1'den 4.2'ye Yükseltme" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5375,6 +5304,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "2.2’den 2.4’e Sürüm Yükseltme" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "Yapılandırmaları Cura 4.2'den Cura 4.3'e yükseltir." + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "4.2'den 4.3'e Sürüm Yükseltme" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5385,6 +5324,16 @@ msgctxt "name" msgid "Image Reader" msgstr "Resim Okuyucu" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "Model dosyalarını okuma desteği sağlar." + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh Okuyucu" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5415,16 +5364,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF Okuyucu" -#: SVGToolpathReader/build/plugin.json -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." - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG Takım Yolu Okuyucu" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5465,16 +5404,6 @@ 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." @@ -5515,6 +5444,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura Profil Okuyucu" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "Düzleştirme aktif ayarları" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "Profil düzleştirilmiş ve aktifleştirilmiştir." + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "Dosyalara X3g yazar" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g Dosyası" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G Dosyası" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "Profil Asistanı" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "Profil Asistanı" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "Yeniden dene" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Baskı Hücresi" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "Diğer modellerle örtüşmeyi destekleme" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "Diğer modellerle örtüşme ayarlarını değiştir" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "Diğer modellerle doldurma ayarlarını değiştir" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "Var olanları güncelleştir" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "Desteklenmiyor" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "Önceki" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "İpucu" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "Yazdırma denemesi" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "Kontrol listesi" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "Ultimaker 2 için yapılan herhangi bir yükseltmeyi seçiniz." + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Bloku" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "Kamera oluşturma: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "Çok yapılı levha fonksiyonelliğini kullan" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "Çok yapılı levha fonksiyonelliğini kullan (yeniden başlatma gerektirir)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "Varsayılan profiller" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "arama ayarları" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "Katman Yüksekliği" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "Bu kalite profili mevcut malzemeniz ve nozül yapılandırması için kullanılamaz. Bu kalite profilini etkinleştirmek için lütfen bu öğeleri değiştirin." + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "Özel bir profil şu anda aktif. Kalite kaydırıcısını etkinleştirmek için Özel sekmesinde varsayılan bir kalite seçin" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "&Yapı levhası" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "&Profil" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "Baskı tepsisi" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "Tüm ayarların içeriklerini bir HTML dosyasına aktarır." + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "Tanrı Modu" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "Düzleştirilmiş kalitede değiştirilmiş bir profil oluşturun." + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "Profil Düzleştirici" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "Malzeme üreticilerine bir drop-in UI kullanarak yeni malzeme ve kalite profili oluşturma imkanı sunar." + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "Baskı Profili Asistanı" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "Ağ üzerinden bağlandı." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "Ağ üzerinden bağlandı. Lütfen yazıcıya erişim isteğini onaylayın." + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "Ağ üzerinden bağlandı. Yazıcıyı kontrol etmek için erişim yok." + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "İstenen yazıcıya erişim. Lütfen yazıcı isteğini onaylayın" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "Kimlik doğrulama durumu" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "Kimlik Doğrulama Durumu" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "Erişim talebini yeniden gönder" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "Kabul edilen yazıcıya erişim" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "Bu yazıcıyla yazdırmaya erişim yok. Yazdırma işi gönderilemedi." + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "Erişim Talep Et" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "Yazıcıya erişim talebi gönder" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "Yeni bir yazdırma işi başlatılamıyor." + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker’ın yapılandırmasında yazdırmayı başlatmayı imkansız kılan bir sorun var. Devam etmeden önce lütfen bu sorunu çözün." + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "Uyumsuz yapılandırma" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "Seçilen yapılandırma ile yazdırmak istediğinizden emin misiniz?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Yazıcı yapılandırması veya kalibrasyonu ile Cura arasında eşleşme sorunu var. En iyi sonucu almak istiyorsanız her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "Yeni işlerin gönderilmesi (geçici olarak) engellenmiştir, hala bir önceki yazdırma işi gönderiliyor." + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "Veriler yazıcıya gönderiliyor" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "Veri gönderiliyor" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "{slot_number} yuvasına Printcore yüklenmedi" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "{slot_number} yuvasına malzeme yüklenmedi" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "Farklı PrintCore (Cura: {cura_printcore_name}, Yazıcı: ekstruder {extruder_id} için {remote_printcore_name}) seçildi" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "Farklı malzeme (Cura: {0}, Yazıcı: {1}), ekstrüder {2} için seçildi" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "Yazıcınız ile eşitleyin" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "Cura’da geçerli yazıcı yapılandırmanızı kullanmak istiyor musunuz?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "Yazıcınızda bulunan PrintCore’lar ve/veya malzemeler geçerli projenizde bulunandan farklı. En iyi sonucu almak istiyorsanız, her zaman PrintCore ve yazıcıya eklenen malzemeler için dilimleme yapın." + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "Monitörde Görüntüle" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "{printer_name}, '{job_name}' yazdırmayı tamamladı." + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "Yazdırma işi '{job_name}' tamamlandı." + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "Baskı tamamlandı" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "Boş" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "Bilinmiyor" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "Bulut hatası" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "Yazdırma görevi dışa aktarılamadı." + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "Buluta bağlanırken hata oluştu." + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud İle Yükleniyor" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "Ultimaker Cloud Platformuna Bağlan" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "Bu yazıcı için bir daha sorma." + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "Artık, Ultimaker hesabınızı kullanarak yazdırma görevlerini dilediğiniz yerden gönderebilir ve görüntüleyebilirsiniz." + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "Bağlı!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "Bağlantınızı inceleyin" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "{0} ({1}) profilinde tanımlanan makine, mevcut makineniz ({2}) ile eşleşmiyor, içe aktarılamadı." + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "{0} dosyasından profil içe aktarımı başarısız oldu:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "Mevcut Bağlantı" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "Bu yazıcı/grup Cura’ya zaten eklenmiş. Lütfen başka bir yazıcı/grup seçin." + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "IP adresini veya yazıcınızın ağ üzerindeki ana bilgisayar adını girin." + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "Yazıcıya Bağlan" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura Ayarlar Kılavuzu" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "Fareye doğru yakınlaştırma yapılması ortografik perspektifte desteklenmez." + +#~ msgid "Orthogonal" +#~ msgstr "Ortografik" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "Ultimaker 3 yazıcıları için ağ bağlantılarını yönetir." + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 Ağ Bağlantısı" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "Resim ve animasyonlar yardımıyla Cura'daki ayarlarla ilgili ekstra bilgi ve açıklama sunar." + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "Ayarlar Kılavuzu" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura Ayarlar Kılavuzu" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "Ayarlar, ekstruderlerin mevcut kullanılabilirliğine uyacak şekilde değiştirildi: [%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "Kullanıcı açıklaması" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "Görüntülediğiniz yazıcı bulut yazıcısı olduğundan bu seçenekleri kullanamazsınız." + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "Cura Connect’e git" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "Tüm işler yazdırıldı." + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "Yazdırma geçmişini görüntüle" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "Yazıcınıza ağ üzerinden doğrudan bağlamak için, lütfen yazıcınızın ağ kablosu kullanan bir ağa bağlı olduğundan emin olun veya yazıcınızı WiFi ağına bağlayın. Cura'ya yazıcınız ile bağlanamıyorsanız g-code dosyalarını yazıcınıza aktarmak için USB sürücüsü kullanabilirsiniz.\n" +#~ "\n" +#~ "Aşağıdaki listeden yazıcınızı seçin:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "Lütfen yazıcınızın bağlı olduğunu kontrol edin:\n" +#~ "- Yazıcının açık olduğunu kontrol edin.\n" +#~ "- Yazıcının ağa bağlı olduğunu kontrol edin." + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "Sadece mevcut yapı levhasını görüntüle" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "Tüm yapı levhalarına yerleştir" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "Sadece mevcut yapı levhasına yerleştir" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "Bu formatı okuyan yazıcıları (Malyan, Makerbot ve diğer Sailfish tabanlı yazıcılar) desteklemek için Ortaya çıkacak parçanın X3G dosyası olarak kaydedilmesine izin verir." + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3GWriter" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "Yazıcı hareketlerinde hata ayıklaması yapmak için takım yolu olarak SVG dosyalarını okur." + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG Takım Yolu Okuyucu" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "Değişiklik Günlüğü" @@ -5721,7 +6093,6 @@ msgstr "Cura Profil Okuyucu" #~ "- 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" @@ -5748,7 +6119,6 @@ msgstr "Cura Profil Okuyucu" #~ "\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." @@ -5961,7 +6331,6 @@ msgstr "Cura Profil Okuyucu" #~ "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" @@ -6214,7 +6583,6 @@ msgstr "Cura Profil Okuyucu" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "\"{}\" quality!\n" #~ "Fell back to \"{}\" kullanarak dışarı aktarım yapılamadı." @@ -6390,7 +6758,6 @@ msgstr "Cura Profil Okuyucu" #~ "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" @@ -6407,7 +6774,6 @@ msgstr "Cura Profil Okuyucu" #~ "\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!" @@ -6418,7 +6784,6 @@ msgstr "Cura Profil Okuyucu" #~ "\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!" @@ -6443,7 +6808,6 @@ msgstr "Cura Profil Okuyucu" #~ "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" @@ -6458,7 +6822,6 @@ msgstr "Cura Profil Okuyucu" #~ "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" @@ -6563,7 +6926,6 @@ msgstr "Cura Profil Okuyucu" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "Makro ve simge ile\n" #~ "dizini açın" @@ -6862,7 +7224,6 @@ msgstr "Cura Profil Okuyucu" #~ "\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!." @@ -6873,7 +7234,6 @@ msgstr "Cura Profil Okuyucu" #~ "\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!" @@ -6908,7 +7268,6 @@ msgstr "Cura Profil Okuyucu" #~ "

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" #~ " " @@ -7075,7 +7434,6 @@ msgstr "Cura Profil Okuyucu" #~ "

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" #~ " " @@ -7222,7 +7580,6 @@ msgstr "Cura Profil Okuyucu" #~ "

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" #~ " " @@ -7265,7 +7622,6 @@ msgstr "Cura Profil Okuyucu" #~ "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?" @@ -7793,7 +8149,6 @@ msgstr "Cura Profil Okuyucu" #~ 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" @@ -7823,7 +8178,6 @@ msgstr "Cura Profil Okuyucu" #~ "

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 fb4a041bd8..43cfbf076c 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: Turkish\n" diff --git a/resources/i18n/tr_TR/fdmprinter.def.json.po b/resources/i18n/tr_TR/fdmprinter.def.json.po index 4ab6aef3d7..4b8b49454d 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-03-14 14:47+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: Turkish\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Turkish , Turkish \n" "Language: tr_TR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -57,7 +57,9 @@ msgctxt "machine_start_gcode description" msgid "" "G-code commands to be executed at the very start - separated by \n" "." -msgstr " \n ile ayrılan, başlangıçta yürütülecek G-code komutları" +msgstr "" +" \n" +" ile ayrılan, başlangıçta yürütülecek G-code komutları" #: 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 " \n ile ayrılan, bitişte yürütülecek G-code komutları" +msgstr "" +" \n" +" ile ayrılan, bitişte yürütülecek G-code komutları" #: fdmprinter.def.json msgctxt "material_guid label" @@ -211,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "Makinenin mevcut yapı levhasını ısıtıp ısıtmadığı." +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "Yapı Hacmi Sıcaklığı Dengesi Mevcut" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "Makinenin yapı hacmi sıcaklığını dengeleyip dengelemediği." + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -333,8 +347,8 @@ 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" -msgstr "G-code Türü" +msgid "G-code Flavor" +msgstr "G-code türü" #: fdmprinter.def.json msgctxt "machine_gcode_flavor description" @@ -1016,6 +1030,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "Alt katman sayısı. Bu değer, alt kalınlığıyla hesaplandığında tam sayıya yuvarlanır." +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "İlk Alt Katmanlar" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "Yapı plakasından itibaren ilk alt katman sayısı Bu değer, alt kalınlığıyla hesaplandığında tam sayıya yuvarlanır." + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1266,6 +1290,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "En Keskin Köşe" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z Dikişi Konumu" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "Bir katmandaki her kısmın basılmaya başlanacağı yere yakın konum." + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "Sol Arka" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "Geri" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "Sağ Arka" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "Sağ" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "Sağ Ön" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "Ön" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "Sol Ön" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "Sol" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1293,8 +1367,8 @@ msgstr "Dikiş Köşesi Tercihi" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar." +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar. Akıllı Gizleme, hem iç hem de dış köşelere izin verir ancak uygun olduğu durumlarda iç köşeleri daha sık seçer." #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1316,6 +1390,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "Dikişi Gizle veya Açığa Çıkar" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "Akıllı Gizleme" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1328,13 +1407,13 @@ msgstr "Etkin olduğunda, z dikişi koordinatları her parçanın merkezine gör #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "Küçük Z Açıklıklarını Yoksay" +msgid "No Skin in Z Gaps" +msgstr "Z Boşluklarında Dış Katman Oluşturma" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "Modelde küçük dikey açıklıklar varsa bu dar yerlerdeki üst ve alt yüzeyleri oluşturmak için %5 oranında ek hesaplama süresi verilebilir. Bu gibi bir durumda ayarı devre dışı bırakın." +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "Modelde yalnızca birkaç katmanda küçük dikey boşluklar varsa normal şartlarda dar alandaki bu katmanların etrafında dış bir katman olmalıdır. Dikey boşluğun çok küçük olduğu durumlarda dış katman oluşturulmaması için bu ayarı etkinleştirin. Böylece baskı ve dilimleme süresi kısalır ancak teknik olarak bakıldığında havayla temasa açık dolgular kalır." #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1353,8 +1432,8 @@ msgstr "Ütülemeyi Etkinleştir" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "Malzeme ekstrude edilmeden önce üst yüzey üzerinden bir kere daha geçilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey elde etmek için kullanılır." +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "Üst yüzey üzerinden bir kere daha geçilir, ancak bu defa çok küçük malzeme ekstrüde edilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey oluşturur. Nozül haznesindeki baskı yüksek tutularak yüzeydeki kıvrımların malzemeyle dolması sağlanır." #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1446,6 +1525,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "Ütüleme sırasında oluşan maksimum anlık hız değişimi." +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "Yüzey Çakışma Oranı" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Duvarlar ile yüzey ekseni (uçları) arasındaki çakışma miktarını yüzey hatlarının hat genişliği ile en içteki duvarın bir yüzdesi olarak ayarlayın. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Eşit yüzey ve duvar hattı genişliği söz konusu olduğunda, %50’nin üstündeki yüzdelerde bu noktada yüzey ekstrüderinin nozül konumu halihazırda duvarın ortasına ulaşmış olacağından yüzeyin duvarı geçmiş olabileceğini unutmayın." + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "Yüzey Çakışması" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "Duvarlar ile yüzey ekseni (uçları) arasındaki çakışma miktarını ayarlayın. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Eşit yüzey ve duvar hattı genişliği söz konusu olduğunda, duvar kalınlığının yarısından fazla değerlerde bu noktada yüzey ekstrüderinin nozül konumu halihazırda duvarın ortasına ulaşmış olacağından yüzeyin duvarı geçmiş olabileceğini unutmayın." + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1611,6 +1710,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "Dolgu şekli Y ekseni boyunca bu mesafe kadar kaydırılır." +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "Rastgele Boşluk Doldurma Başlat" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "Önce hangi boşluk doldurma hattının yapılacağını rastgele belirler. Böylece tek bir segmentin en güçlü yapıda olması önlenir ancak bu işlem ilave gezinti hamlelerine neden olabilir." + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1631,7 +1740,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 "Dolgu alanının etrafına ekstra duvar ekle. Bu duvarlar üst/alt yüzey hatlarının daha az aşağı düşmesini sağlar. Yani biraz fazla materyal kullanarak, daha az üst/alt yüzey katmanı ile aynı kaliteyi yakalayabilirsiniz.\nBu özellik, doğru konfigüre edildiğinde, harekete veya geri çekmeye gerek kalmadan Dolgu Poligonlarını Bağlama ile birlikte tüm dolguyu tek bir ekstrüzyon yoluna bağlayabilir." +msgstr "" +"Dolgu alanının etrafına ekstra duvar ekle. Bu duvarlar üst/alt yüzey hatlarının daha az aşağı düşmesini sağlar. Yani biraz fazla materyal kullanarak, daha az üst/alt yüzey katmanı ile aynı kaliteyi yakalayabilirsiniz.\n" +"Bu özellik, doğru konfigüre edildiğinde, harekete veya geri çekmeye gerek kalmadan Dolgu Poligonlarını Bağlama ile birlikte tüm dolguyu tek bir ekstrüzyon yoluna bağlayabilir." #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1663,26 +1774,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "Dolgu ve duvarlar arasındaki çakışma miktarı. Hafif bir çakışma duvarların dolguya sıkıca bağlanmasını sağlar." -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "Yüzey Çakışma Oranı" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Duvarlar ile yüzey ekseni (uçları) arasındaki çakışma miktarını yüzey hatlarının hat genişliği ile en içteki duvarın bir yüzdesi olarak ayarlayın. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Eşit yüzey ve duvar hattı genişliği söz konusu olduğunda, %50’nin üstündeki yüzdelerde bu noktada yüzey ekstrüderinin nozül konumu halihazırda duvarın ortasına ulaşmış olacağından yüzeyin duvarı geçmiş olabileceğini unutmayın." - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "Yüzey Çakışması" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "Duvarlar ile yüzey ekseni (uçları) arasındaki çakışma miktarını ayarlayın. Az miktar çakışma duvarların yüzeye sıkıca bağlanmasını sağlar. Eşit yüzey ve duvar hattı genişliği söz konusu olduğunda, duvar kalınlığının yarısından fazla değerlerde bu noktada yüzey ekstrüderinin nozül konumu halihazırda duvarın ortasına ulaşmış olacağından yüzeyin duvarı geçmiş olabileceğini unutmayın." - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1870,8 +1961,8 @@ msgstr "Yapı Disk Bölümü Sıcaklığı" #: fdmprinter.def.json 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." +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" @@ -1983,6 +2074,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "Yüzde cinsinden çekme oranı." +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "Kristalli Malzeme" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "Bu malzeme ısıtıldığında temiz bir şekilde parçalanan tür de mi (kristalli) yoksa uzun iç içe polimer zincirler (kristal olmayan) oluşturan türde mi?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "Sızma Önleme Geri Çekme Mesafesi" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "Malzemenin sızma yapmaması için gereken geri çekilme mesafesidir." + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "Sızma Önleme Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "Filament değişimi sırasında malzemenin sızma yapmaması için gereken geri çekilme hızıdır." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "Geri Çekme Pozisyonunda Durma Mesafesi" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "Filamentin ısıtıldığında kopmadan esneyebileceği mesafedir." + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "Durma Payına Uygun Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "Filamentin kopmadan ne kadar hızlı geri çekilmesi gerektiğidir." + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "Kopma Geri Çekme Mesafesi" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "Sorunsuz kopması için filamentin geri çekilmesi gereken mesafedir." + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "Kopma Geri Çekme Hızı" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "Sorunsuz kopması için filamentin geri çekilmesi gereken hızdır." + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "Kopma Sıcaklığı" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "Sorunsuz kopması için filament koptuğundaki sıcaklık değeridir." + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1993,6 +2164,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "Akış dengeleme: sıkıştırılan malzeme miktarı bu değerle çoğaltılır." +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "Duvar Akışı" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "Duvar hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "Dış Duvar Akışı" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "En dıştaki duvar hattının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "İç Duvar Akışı" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "En dıştaki duvar hattı hariç diğer duvar hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "Üst/Alt Akış" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "Üst/alt hatların akış telafisidir." + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "Üst Yüzeyin Dış Katman Akışı" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "Baskının üst bölümlerindeki hatların akış telafisidir." + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "Dolgu Akışı" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "Dolgu hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "Etek/Kenar Akışı" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "Etek veya kenar hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "Destek Akışı" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "Destek yapı hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "Destek Ara Yüzeyi Akışı" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "Destek çatı ve zemin hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "Destek Çatı Akışı" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "Destek çatı hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "Destek Zemin Akışı" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "Destek zemin hatlarının akış telafisidir." + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "İlk Direk Akışı" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "Temel kule hatlarının akış telafisidir." + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2110,8 +2401,8 @@ msgstr "Destek Geri Çekmelerini Sınırlandır" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "Düz çizgi üzerinde destekler arasında hareket ederken geri çekmeyi atla. Bu ayarın etkinleştirilmesi yazdırma süresi tasarrufu sağlar ancak destek yapısı içinde aşırı dizilime yol açabilir." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "Düz hat üzerinde destekler arasında hareket ederken geri çekmeyi atlayın. Bu ayarın etkinleştirilmesi baskı süresini kısaltır ancak destek yapısında ölçüsüz dizilime yol açabilir." #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2163,6 +2454,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "Nozül değişiminin çekmesi sonucunda filamanın geriye doğru itildiği hız." +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "Nozül Değişimiyle Çalışmaya Hazırlanacak Ek Miktar" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "Nozül değişiminin ardından çalışmaya hazırlanacak ek malzemedir." + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2354,14 +2655,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "Etek ve kenarın yazdırıldığı hız. Bu işlem normalde ilk katman hızında yapılır, ama etek ve kenarı farklı hızlarda yazdırmak isteyebilirsiniz." #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "Maksimum Z Hızı" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z Atlama Hızı" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "Yapı levhasının hareket ettiği maksimum hız. Bu hızı 0’a ayarlamak yazdırmanın maksimum z hızı için aygıt yazılımı kullanmasına neden olur." +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z Atlamaları için yapılan dikey Z hareketinin gerçekleştirileceği hızdır. Yapı plakasının veya makine tezgahının hareket etmesi daha zor olduğundan genelde baskı hızından daha düşüktür." #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2863,16 +3164,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "Hareket esnasında atlama yaparken nozül ve daha önce yazdırılmış olan bölümler arasındaki mesafe." -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "Katmanları Aynı Bölümle Başlatın" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "Bir önceki katmanın bitirdiği bir parçayı yeni bir katmanla tekrar yazdırmamak için, her bir katmanda nesneyi yazdırmaya aynı noktanın yakınından başlayın. Bu şekilde daha iyi çıkıntılar ve küçük parçalar oluşturulur, ancak yazdırma süresi uzar." - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3279,14 +3570,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "Yazdırılan ilk katman destek yapı hatları arasındaki mesafedir. Bu ayar destek yoğunluğuna göre hesaplanır." #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "Destek Dolgu Hattı Yönü" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "Destekler için dolgu şeklinin döndürülmesi. Destek dolgu şekli yatay düzlemde döndürülür." +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "Kullanılacak tam hat yönlerinin listesi. Katmanlar ilerledikçe listedeki öğeler sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar listenin boş olmasıdır ve bu durumda varsayılan açı 0'dır." #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3415,8 +3706,8 @@ msgstr "Destek Birleşme Mesafesi" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "X/Y yönündeki destek yapıları arasındaki maksimum mesafe. Ayrı yapılar birbirlerine bu değerden daha yakınsa yapılar birleşip tek olur." +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "X/Y yönlerinde destek yapıları arasındaki maksimum mesafedir. Ayrı yapılar birbirlerine bu değerden daha yakınsa yapılar birleşerek tek bir yapı haline gelir." #: fdmprinter.def.json msgctxt "support_offset label" @@ -3700,8 +3991,8 @@ msgstr "Minimum Destek Arayüzü Bölgesi" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "Destek arayüzü poligonları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Destek arayüzü çokgenlerinin minimum alan boyutu. Alanı bu değerden küçük olan poligonlar normal destekle basılacaktır." #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3710,8 +4001,8 @@ msgstr "Minimum Destek Çatısı Bölgesi" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Destek çatıları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Destek çatılarının minimum alan boyutu. Alanı bu değerden küçük olan poligonlar normal destekle basılacaktır." #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3720,8 +4011,8 @@ msgstr "Minimum Destek Zemini Bölgesi" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "Destek zeminleri için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "Destek tabanlarının minimum alan boyutu. Alanı bu değerden küçük olan poligonlar normal destekle basılacaktır." #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3753,6 +4044,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "Destek zeminlerine uygulanan ofset miktarı." +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "Destek Arabirim Hattı Yönleri" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Kullanılacak tam hat yönlerinin listesi. Katmanlar ilerledikçe listedeki öğeler sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar, varsayılan açıların kullanıldığı (ara birimler biraz kalınsa 45 ile 135 derece arasında değişir veya 90 derecedir) boş listedir." + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "Destek Çatı Hattı Yönleri" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Kullanılacak tam hat yönlerinin listesi. Katmanlar ilerledikçe listedeki öğeler sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar, varsayılan açıların kullanıldığı (ara birimler biraz kalınsa 45 ile 135 derece arasında değişir veya 90 derecedir) boş listedir." + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "Destek Zemin Hattı Yönleri" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "Kullanılacak tam hat yönlerinin listesi. Listedeki öğeler katmanlar ilerledikçe sırayla kullanılır ve listenin sonuna gelindiğinde tekrar baştan başlanır. Liste öğeleri virgülle ayrılır ve listenin tamamı köşeli paranteze alınır. Varsayılan ayar, varsayılan açıların kullanıldığı (ara birimler biraz kalınsa 45 ile 135 derece arasında değişir veya 90 derecedir) boş listedir." + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3794,14 +4115,14 @@ msgid "The diameter of a special tower." msgstr "Özel bir direğin çapı." #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "Minimum Çap" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "Kule Destekli Maksimum Çap" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "Özel bir destek direği ile desteklenecek küçük bir alanın X/Y yönündeki minimum çapı." +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "Özel bir destek kulesiyle desteklenecek küçük bir alanın X/Y yönlerindeki maksimum çapıdır." #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3923,7 +4244,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 "Baskının eteği ve ilk katmanı arasındaki yatay mesafe.\nMinimum mesafedir. Bu mesafeden çok sayıda etek hattı dışarı doğru uzanır." +msgstr "" +"Baskının eteği ve ilk katmanı arasındaki yatay mesafe.\n" +"Minimum mesafedir. Bu mesafeden çok sayıda etek hattı dışarı doğru uzanır." #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4295,16 +4618,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "Malzemenin hazırlanmasına yardımcı olan yazıcının yanındaki direği her nozül değişiminden sonra yazdırın." -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "Dairesel İlk Direk" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "İlk direği dairesel bir şekil olarak yapın." - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4345,16 +4658,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "İlk direk konumunun y koordinatı." -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "İlk Direk Akışı" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "Akış dengeleme: sıkıştırılan malzeme miktarı bu değerle çoğaltılır." - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4495,6 +4798,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "Basılan ilk katmanın altındaki varsa boş katmanları kaldır. Bu ayarın devre dışı bırakılması, Dilimleme Toleransı Dışlayıcı veya Ortalayıcı olarak ayarlanmışsa, boş ilk katmanlar oluşmasına neden olabilir." +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "Maksimum Çözünürlük" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "Bir çizginin dilimlemeden sonraki minimum boyutu. Bu değer artırıldıktan sonra örgünün çözünürlüğü düşer. Bu, yazıcının g-kodunu işlemek için gereken hıza yetişmesine olanak tanır ve örtünün zaten işlenemeyecek ayrıntılarını kaldırarak dilimleme hızını artırır." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "Maksimum Hareket Çözünürlüğü" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "Bir hareket çizgisinin dilimlemeden sonraki minimum boyutu. Bunu artırmanız durumunda, hareketlerde köşelerin yumuşaklığı azalır. Bu seçenek, yazıcının g-code işlemek için gereken hızı yakalamasına olanak tanıyabilir ancak model kaçınmasının doğruluğunu azaltabilir." + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "Maksimum Sapma" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "Maksimum Çözünürlük ayarı için çözünürlük azaltıldığında izin verilen maksimum sapma. Bu değeri artırırsanız baskının doğruluğu azalacak ancak g kodu daha küçük olacaktır. Maksimum Sapma, Maksimum Çözünürlük için sınırdır, dolayısıyla iki değer çelişirse Maksimum Sapma her zaman doğru kabul edilir." + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4657,8 +4990,8 @@ msgstr "Helezon Şeklinde Düzeltme" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklinde konturları düzeltin (Z-dikişi yazdırma durumunda çok az görünür olmalı, ancak tabaka görünümünde halen görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini unutmayınız." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklindeki konturları düzeltin (Z dikişi baskıda zor görünmeli ancak katman görünümünde görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini göz önünde bulundurun." #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4870,36 +5203,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "Bu miktardan daha kısa çevre uzunluğuna sahip dilimlenmiş katmanlardaki poligonlar filtre ile elenecektir. Daha düşük değerler dilimleme süresini uzatacak ancak daha yüksek çözünürlükte bir ağ oluşturacaktır. Genellikle yüksek çözünürlüklü SLA yazıcılarına yöneliktir ve çok fazla detay içeren çok küçük 3D modellerinde kullanılır." -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "Maksimum Çözünürlük" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "Bir çizginin dilimlemeden sonraki minimum boyutu. Bu değer artırıldıktan sonra örgünün çözünürlüğü düşer. Bu, yazıcının g-kodunu işlemek için gereken hıza yetişmesine olanak tanır ve örtünün zaten işlenemeyecek ayrıntılarını kaldırarak dilimleme hızını artırır." - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "Maksimum Hareket Çözünürlüğü" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "Bir hareket çizgisinin dilimlemeden sonraki minimum boyutu. Bunu artırmanız durumunda, hareketlerde köşelerin yumuşaklığı azalır. Bu seçenek, yazıcının g-code işlemek için gereken hızı yakalamasına olanak tanıyabilir ancak model kaçınmasının doğruluğunu azaltabilir." - -#: fdmprinter.def.json -msgctxt "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" @@ -5040,16 +5343,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "Ekstrüzyon yolu hızına göre tarama sırasındaki hareket hızı. Tarama hareketi sırasında bowden tüpündeki basınç düştüğü için değerin %100’ün altında olması öneriliyor." -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "Dış Katman Rotasyonunu Değiştir" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "Üst/alt katmanların yazdırıldığı yönü değiştirin. Normal koşullarda sadece çapraz şekilde yazdırılırlar. Bu ayar sadece-X ve sadece-Y yönlerini ekler." - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5157,8 +5450,8 @@ msgstr "Konik Desteği Etkinleştir" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "Deneysel Özellik: Destek alanlarını alt kısımlarda çıkıntılardakinden daha küçük yapar." +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "Alttaki destek alanlarını çıkıntıda olanlardan daha küçük yapın." #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5222,23 +5515,24 @@ msgstr "Her bir hat dilimine tanıtılan rastgele noktalar arasındaki ortalama #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "Akış hızı dengelemesi maksimum ekstrüzyon kayması" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "Dengelenecek, mm cinsinden maksimum mesafe." +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "Akış hızındaki değişiklikleri telafi etmek için filamentin hareket ettirileceği mm cinsinden maksimum mesafe." #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "Akış hızı dengeleme çarpanı" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "Akış hızından -> mesafeye dönüştürme için çarpan." +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "Akış hızındaki değişiklikleri telafi edebilmek için filamentin bir saniyelik ekstrüzyonda hareket ettirileceği mesafenin yüzdesi olarak filamentin ne kadar" +" uzağa hareket ettirileceği." #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5390,7 +5684,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 "Yarı hızda sıkıştırılmış yukarı doğru hareket mesafesi.\nBu katmanlarda malzemeyi çok fazla ısıtmayarak önceki katmanlarda daha iyi yapışma sağlayabilir. Sadece kablo yazdırmaya uygulanır." +msgstr "" +"Yarı hızda sıkıştırılmış yukarı doğru hareket mesafesi.\n" +"Bu katmanlarda malzemeyi çok fazla ısıtmayarak önceki katmanlarda daha iyi yapışma sağlayabilir. Sadece kablo yazdırmaya uygulanır." #: fdmprinter.def.json msgctxt "wireframe_top_jump label" @@ -5529,13 +5825,14 @@ msgstr "Bir önceki ve bir sonraki katman yüksekliği arasındaki yükseklik fa #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "Uyarlanabilir Katman Eşiği" +msgid "Adaptive Layers Topography Size" +msgstr "Uyarlanabilir Katman Topografisi Boyutu" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "Daha küçük bir katmanın kullanılıp kullanılmayacağını belirleyen eşik. Bu rakam bir katmandaki en dik eğimin tanjantına eşittir." +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "İki bitişik katman arasındaki hedef yatay mesafe. Bu ayarın azaltılması, katmanların kenarlarını birbirine yakınlaştırmak için daha ince katmanlar kullanılmasına" +" neden olur." #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5544,8 +5841,9 @@ msgstr "Çıkıntılı Duvar Açısı" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "Bu açıdan daha fazla çıkıntı yapan duvarlar çıkıntılı duvar ayarları kullanılarak yazdırılacaktır. Değer 90 ise hiçbir duvar çıkıntılı kabul edilmeyecektir." +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "Bu açıdan daha yüksek çıkıntıya sahip duvarlar çıkıntılı duvar ayarları kullanılarak basılacaktır. Değer 90 ise hiçbir duvarda çıkıntı olmadığı varsayılacaktır." +" Destek ile desteklenen çıkıntılar da çıkıntı olarak değerlendirilmeyecektir." #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5897,6 +6195,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "Başlığı fırçada ileri ve geri hareket ettirme mesafesi." +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "Maksimum Küçük Delik Boyutu" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "Bu değerden daha küçük çaptaki delik ve parça ana hatları Küçük Özellik Hızı kullanılarak basılacaktır." + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "Maksimum Küçük Özellik Uzunluğu" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "Bu uzunluktan kısa olan özellik ana hatları Kısa Özellik Hızı kullanılarak basılacaktır." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "Küçük Özellik Hızı" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "Küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "Küçük Özellik İlk Katman Hızı" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "İlk katman üzerindeki küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5957,6 +6295,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi." +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Destek arayüzü poligonları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Destek çatıları için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "Destek zeminleri için minimum alan boyutu. Alanı bu değerden daha düşük olan poligonlar oluşturulmayacaktır." + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "Dış Katman Rotasyonunu Değiştir" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "Üst/alt katmanların yazdırıldığı yönü değiştirin. Normal koşullarda sadece çapraz şekilde yazdırılırlar. Bu ayar sadece-X ve sadece-Y yönlerini ekler." + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "Akış hızı dengelemesi maksimum ekstrüzyon kayması" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "Dengelenecek, mm cinsinden maksimum mesafe." + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "Akış hızı dengeleme çarpanı" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "Akış hızından -> mesafeye dönüştürme için çarpan." + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "Uyarlanabilir Katman Eşiği" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "Daha küçük bir katmanın kullanılıp kullanılmayacağını belirleyen eşik. Bu rakam bir katmandaki en dik eğimin tanjantına eşittir." + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "Bu açıdan daha fazla çıkıntı yapan duvarlar çıkıntılı duvar ayarları kullanılarak yazdırılacaktır. Değer 90 ise hiçbir duvar çıkıntılı kabul edilmeyecektir." + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "Küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "İlk Katman Hızı" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "İlk katman üzerindeki küçük özellikler normal baskı hızının bu yüzdesinde basılacaktır. Daha yavaş baskı, yapışma ve doğruluğu artırmaya yardımcı olabilir." + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "Malzeme ekstrude edilmeden önce üst yüzey üzerinden bir kere daha geçilir. Bu işlem en üstte bulunan plastiği eriterek daha pürüzsüz bir yüzey elde etmek için kullanılır." + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "Katmanları Aynı Bölümle Başlatın" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "Bir önceki katmanın bitirdiği bir parçayı yeni bir katmanla tekrar yazdırmamak için, her bir katmanda nesneyi yazdırmaya aynı noktanın yakınından başlayın. Bu şekilde daha iyi çıkıntılar ve küçük parçalar oluşturulur, ancak yazdırma süresi uzar." + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "Destekler için dolgu şeklinin döndürülmesi. Destek dolgu şekli yatay düzlemde döndürülür." + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "Maksimum Çözünürlük ayarı için çözünürlüğü azaltırken izin verilen maksimum sapma. Bunu arttırırsanız baskının doğruluğu azalacak fakat g-code daha küçük olacaktır." + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code Türü" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "Modelin ana hatlarında yer alan köşelerin dikişin konumunu etkileyip etkilemediğini kontrol edin. Hiçbiri, köşelerin dikişin konumunu etkilemediği anlamına gelir. Dikişi Gizle, dikişin daha büyük olasılıkla bir iç köşe üzerinde oluşmasını sağlar. Dikişi Açığa Çıkar, dikişin daha büyük olasılıkla bir dış köşe üzerinde oluşmasını sağlar. Dikişi Gizle veya Açığa Çıkar, dikişin daha büyük olasılıkla bir iç veya dış köşe üzerinde oluşmasını sağlar." + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "Küçük Z Açıklıklarını Yoksay" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "Modelde küçük dikey açıklıklar varsa bu dar yerlerdeki üst ve alt yüzeyleri oluşturmak için %5 oranında ek hesaplama süresi verilebilir. Bu gibi bir durumda ayarı devre dışı bırakın." + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "Yapı disk bölümü için kullanılan sıcaklık. Bu 0 olursa yapı disk bölümü sıcaklığı ayarlanmaz." + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "Düz çizgi üzerinde destekler arasında hareket ederken geri çekmeyi atla. Bu ayarın etkinleştirilmesi yazdırma süresi tasarrufu sağlar ancak destek yapısı içinde aşırı dizilime yol açabilir." + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "Maksimum Z Hızı" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "Yapı levhasının hareket ettiği maksimum hız. Bu hızı 0’a ayarlamak yazdırmanın maksimum z hızı için aygıt yazılımı kullanmasına neden olur." + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "X/Y yönündeki destek yapıları arasındaki maksimum mesafe. Ayrı yapılar birbirlerine bu değerden daha yakınsa yapılar birleşip tek olur." + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "Minimum Çap" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "Özel bir destek direği ile desteklenecek küçük bir alanın X/Y yönündeki minimum çapı." + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "Dairesel İlk Direk" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "İlk direği dairesel bir şekil olarak yapın." + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "Akış dengeleme: sıkıştırılan malzeme miktarı bu değerle çoğaltılır." + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "Z dikişinin görünürlüğünü azaltmak için helezon şeklinde konturları düzeltin (Z-dikişi yazdırma durumunda çok az görünür olmalı, ancak tabaka görünümünde halen görünür olmalıdır). Düzeltme işleminin ince yüzey detaylarında bulanıklığa neden olabileceğini unutmayınız." + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "Deneysel Özellik: Destek alanlarını alt kısımlarda çıkıntılardakinden daha küçük yapar." + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "Etkinleştirilmiş Ekstruder sayısı" @@ -6162,7 +6644,6 @@ msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi." #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "​\n" #~ " ile ayrılan, başlangıçta yürütülecek G-code komutları." @@ -6175,7 +6656,6 @@ msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi." #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "​\n" #~ " ile ayrılan, bitişte yürütülecek Gcode komutları." @@ -6232,7 +6712,6 @@ msgstr "Modeli dosyadan indirirken modele uygulanacak olan dönüşüm matrisi." #~ "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 "" - #~ "Etek ve baskının ilk katmanı arasındaki yatay mesafe.\n" #~ "Bu minimum mesafedir ve çoklu etek hatları bu mesafeden dışa doğru genişleyecektir." diff --git a/resources/i18n/zh_CN/cura.po b/resources/i18n/zh_CN/cura.po index 733b994b1f..dc4252852f 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-03-14 14:49+0100\n" -"Last-Translator: Bothof \n" -"Language-Team: PCDotFan , Bothof \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-07-29 15:51+0100\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Chinese , PCDotFan , Chinese \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -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:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "打印机设置" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "GCode 文件" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "GCodeWriter 不支持非文本模式。" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "导出前请先准备 G-code。" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "三维模型的助理" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -64,63 +64,56 @@ msgid "" "

{model_names}

\n" "

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

\n" "

View print quality guide

" -msgstr "

由于模型的大小和材质的配置,一个或多个3D模型可能无法最优地打印:

\n

{model_names}

\n

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

\n

查看打印质量指南

" +msgstr "" +"

由于模型的大小和材质的配置,一个或多个3D模型可能无法最优地打印:

\n" +"

{model_names}

\n" +"

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

\n" +"

查看打印质量指南

" #: /home/ruben/Projects/Cura/plugins/FirmwareUpdater/FirmwareUpdaterMachineAction.py:25 msgctxt "@action" msgid "Update Firmware" msgstr "更新固件" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "合并有效设置" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 文件" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "配置文件已被合并并激活。" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "通过 USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "通过 USB 联机打印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "通过 USB 连接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "正在进行 USB 打印,关闭 Cura 将停止此打印。您确定吗?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 文件" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "正在进行打印在上一次打印完成之前,Cura 无法通过 USB 启动另一次打印。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "写入 X3g 到文件" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g 文件" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "正在进行打印" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -156,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "保存到可移动磁盘 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "没有可进行写入的文件格式!" @@ -193,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "无法保存到可移动磁盘 {0}:{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "错误" @@ -225,9 +217,9 @@ msgstr "弹出可移动设备 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -254,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "可移动磁盘" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "身份验证状态" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "重新发送访问请求" - -#: /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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "无法启动新的打印作业。" - -#: /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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "向打印机发送数据" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "正在发送数据" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "取消" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "与您的打印机同步" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "已通过网络连接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "打印作业已成功发送到打印机。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "数据已发送" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "在监控器中查看" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "空" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "未知" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "通过云打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "通过云打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "通过云连接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "云错误" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "无法导出打印作业。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "无法将数据上传到打印机。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "明天" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "今天" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "通过 Ultimaker Cloud 上传" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "对此打印机不再询问。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "开始" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "已连接!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "查看您的连接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "通过网络连接" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Cura 设置向导" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "通过网络打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "通过网络打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "已通过网络连接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "请等待当前作业完成发送。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "打印错误" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "发现新的云打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "发现有新打印机连接到您的帐户。您可以在已发现的打印机列表中查找新连接的打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "不再显示此消息" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "您正在尝试连接到 {0},但它不是组中的主机。您可以访问网页,将其配置为组主机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "非组中的主机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "配置组" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "使用您的 Ultimaker account 帐户从任何地方发送和监控打印作业。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "连接到 Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "开始" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "发送打印作业" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "正在将打印作业上传至打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "打印作业已成功发送到打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "数据已发送" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "您正在尝试连接未运行 Ultimaker Connect 的打印机。请将打印机更新至最新固件。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "请更新升级打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura 已检测到材料配置文件尚未安装到组 {0} 中的主机打印机上。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "正在将材料发送到打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "无法将数据上传到打印机。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "网络错误" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "明天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "今天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "通过云打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "通过云打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "通过云连接" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "监控" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "无法获取更新信息。" @@ -621,12 +430,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "分层视图" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "当单线打印(Wire Printing)功能开启时,Cura 将无法准确地显示打印层(Layers)" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "仿真视图" @@ -681,6 +490,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 图像" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "打开压缩三角网格" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA 数据资源交换" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF 二进制" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF 嵌入式 JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "斯坦福三角格式" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "压缩 COLLADA 数据资源交换" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -745,12 +584,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "设置对每个模型的单独设定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "推荐" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "自定义" @@ -761,19 +600,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 文件" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "喷嘴" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "项目文件 {0} 包含未知机器类型 {1}。无法导入机器。将改为导入模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "打开项目文件" @@ -788,18 +627,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 文件" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 详细信息" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "发送文件之前,请确保 G-code 适用于当前打印机和打印机配置。当前 G-code 文件可能不准确。" @@ -853,16 +692,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura 配置文件" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "配置文件助手" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "配置文件助手" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -883,7 +712,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "预览" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -899,141 +727,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "登录失败" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "不支持" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "文件已存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" msgstr "文件 {0} 已存在。您确定要覆盖它吗?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "文件 URL 无效:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "已根据挤出机的当前可用性更改设置:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "设置已更新" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "挤出机已禁用" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "无法将配置文件导出至 {0} {1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "无法将配置文件导出至 {0} : 写入器插件报告故障。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "配置文件已导出至: {0} " -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "导出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "无法在添加打印机前从 {0} 导入配置文件。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "没有可导入文件 {0} 的自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "无法从 {0} 导入配置文件:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "此配置文件 {0} 包含错误数据,无法导入。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "配置文件 {0} ({1}) 中定义的机器与当前机器 ({2}) 不匹配,无法导入。" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "无法从 {0} 导入配置文件:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功导入配置文件 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "文件 {0} 不包含任何有效的配置文件。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "配置 {0} 文件类型未知或已损坏。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "自定义配置文件" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "配置文件缺少打印质量类型定义。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1099,19 +934,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "其它" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "预切片文件 {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "下一步" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1119,73 +953,120 @@ msgstr "组 #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "关闭" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "添加" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "Default" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "视觉" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "视觉配置文件用于打印视觉原型和模型,可实现出色的视觉效果和表面质量。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "Engineering" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "工程配置文件用于打印功能性原型和最终用途部件,可提高准确性和减小公差。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "草稿" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "草稿配置文件用于打印初始原型和概念验证,可大大缩短打印时间。" + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "未覆盖" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "自定义配置文件" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "所有支持的文件类型 ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "所有文件 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "未知" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "可用的网络打印机" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "自定义材料" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "自定义" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "无法连接到下列打印机,因为这些打印机已在组中" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "可用的网络打印机" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "由于“打印序列”设置的值,成形空间体积高度已被减少,以防止十字轴与打印模型相冲突。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "成形空间体积" @@ -1210,39 +1091,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "无法读取响应。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "无法连接 Ultimaker 帐户服务器。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "在授权此应用程序时,须提供所需权限。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "尝试登录时出现意外情况,请重试。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "复制并放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "无法在成形空间体积内放下全部模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "放置模型" @@ -1278,7 +1159,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 似乎遇到了问题。

\n

在启动时发生了不可修复的错误。这可能是因某些配置文件出错导致的。建议您备份并重置配置。

\n

您可在配置文件夹中找到备份。

\n

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

\n " +msgstr "" +"

糟糕,Ultimaker Cura 似乎遇到了问题。

\n" +"

在启动时发生了不可修复的错误。这可能是因某些配置文件出错导致的。建议您备份并重置配置。

\n" +"

您可在配置文件夹中找到备份。

\n" +"

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

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:98 msgctxt "@action:button" @@ -1311,7 +1197,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 发生了严重错误。请将这份错误报告发送给我们以便修复问题

\n

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

\n " +msgstr "" +"

Cura 发生了严重错误。请将这份错误报告发送给我们以便修复问题

\n" +"

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

\n" +" " #: /home/ruben/Projects/Cura/cura/CrashHandler.py:173 msgctxt "@title:groupbox" @@ -1383,53 +1272,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在载入打印机..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "正在设置偏好设置..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在设置场景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在载入界面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一次只能加载一个 G-code 文件。{0} 已跳过导入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "如果加载 G-code,则无法打开其他任何文件。{0} 已跳过导入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "所选模型过小,无法加载。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "打印机设置" @@ -1442,15 +1336,15 @@ msgstr "X (宽度)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1482,50 +1376,55 @@ msgstr "加热床" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "加热的构建体积" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "G-code 风格" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "打印头设置" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "十字轴高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "挤出机数目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "开始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "结束 G-code" @@ -1555,22 +1454,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "喷嘴偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "喷嘴偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷却风扇数量" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "挤出机的结束 G-code" @@ -1581,7 +1480,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "已安装" @@ -1596,16 +1495,16 @@ msgctxt "@label" msgid "ratings" msgstr "评分" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "插件" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "材料" @@ -1615,49 +1514,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1718,17 +1617,17 @@ msgctxt "@info:button" msgid "Quit Cura" msgstr "退出 Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "社区贡献" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "社区插件" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "通用材料" @@ -1769,7 +1668,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 "该插件包含一个许可。\n您需要接受此许可才能安装此插件。\n是否同意下列条款?" +msgstr "" +"该插件包含一个许可。\n" +"您需要接受此许可才能安装此插件。\n" +"是否同意下列条款?" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml:55 msgctxt "@action:button" @@ -1786,27 +1688,47 @@ msgctxt "@label" msgid "Featured" msgstr "精选" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "兼容性" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "机器" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "打印平台" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "支持" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "质量" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "技术数据表" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "安全数据表" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "打印指南" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "网站" @@ -1906,70 +1828,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "由于固件丢失,导致固件升级失败。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "管理打印机" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "玻璃" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "网络摄像头不可用,因为您正在监控云打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "正在加载..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "不可用" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "无法连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "空闲" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "未命名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "匿名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "需要更改配置" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "详细信息" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "不可用的打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "第一个可用" @@ -1979,209 +1907,195 @@ msgctxt "@label" msgid "Queued" msgstr "已排队" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "队列中无打印任务。可通过切片和发送添加任务。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "打印作业" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "总打印时间" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "等待" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "已完成所有打印工作。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "查看打印历史" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "连接到网络打印机" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n\n从以下列表中选择您的打印机:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "欲通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接至网络。若不能连接 Cura 与打印机,亦可通过使用 USB 设备将 G-code 文件传输到打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "请从以下列表中选择您的打印机:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "编辑" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "删除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "如果您的打印机未列出,请阅读网络打印故障排除指南" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "类型" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "固件版本" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "这台打印机未设置为运行一组打印机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "这台打印机是一组共 %1 台打印机的主机。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "该网络地址的打印机尚未响应。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "连接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "IP 地址无效" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "请输入有效的 IP 地址。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "打印机网络地址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "输入打印机在网络上的 IP 地址或主机名。" +msgid "Enter the IP address of your printer on the network." +msgstr "请输入打印机在网络上的 IP 地址。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "确定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "完成 %1 于 %2" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "打印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "通过网络打印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "打印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "打印机选择" @@ -2270,64 +2184,59 @@ msgctxt "@action:button" msgid "Override" msgstr "覆盖" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "铝" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "连接到打印机" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2536,70 +2445,69 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "网格类型" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "正常模式" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "打印为支撑" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "不支持与其他模型重叠" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "修改与其他模型重叠的设置" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "修改其他模型填充物的设置" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "选择设置" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "选择对此模型的自定义设置" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "筛选…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "显示全部" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "网格类型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "正常模式" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "打印为支撑" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "修改重叠设置" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "不支持重叠" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "仅填充" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "选择设置" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "打开项目" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "更新已有配置" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" msgstr "新建" @@ -2626,6 +2534,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "更新" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新建" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2639,7 +2552,7 @@ msgid "Printer Group" msgstr "打印机组" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "配置文件设置" @@ -2650,73 +2563,79 @@ msgid "How should the conflict in the profile be resolved?" msgstr "配置文件中的冲突如何解决?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "名字" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "Intent" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "不在配置文件中" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 重写" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "衍生自" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 重写" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "材料设置" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "材料的设置冲突应如何解决?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "设置可见性" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "模式" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "可见设置:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "加载项目将清除打印平台上的所有模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "打开" @@ -2823,48 +2742,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "在 Cura 每天启动时自动创建备份。" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "不支持" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "导出" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "提示" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "打印试验" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "检查表" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2950,170 +2827,176 @@ 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:72 msgctxt "@title" msgid "Information" msgstr "信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "确认直径更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "新的灯丝直径被设置为%1毫米,这与当前的挤出机不兼容。你想继续吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "显示名称" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "品牌" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "材料类型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "颜色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "属性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "直径" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "耗材成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "耗材重量" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "耗材长度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "每米成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "此材料与 %1 相关联,并共享其某些属性。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "解绑材料" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "描述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "粘附信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "打印设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "激活" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "创建" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "复制" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "导入" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "导出" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "打印机" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "确认删除" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "您确认要删除 %1?该操作无法恢复!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "导入配置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "无法导入材料 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "成功导入材料 %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "导出材料" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "无法导出材料至 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功导出材料至: %1" @@ -3128,414 +3011,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "全部勾选" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "已计算" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "当前" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "单位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 msgctxt "@label" msgid "Interface" msgstr "接口" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "语言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "币种:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "主题:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "需重新启动 Cura,新的设置才能生效。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "当设置被更改时自动进行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自动切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "视区行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "以红色突出显示模型需要增加支撑结构的区域。没有支撑,这些区域将无法正确打印。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "显示悬垂(Overhang)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "当模型被选中时,视角将自动调整到最合适的观察位置(模型处于正中央)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "当项目被选中时,自动对中视角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要令 Cura 的默认缩放操作反转吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反转视角变焦方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟随鼠标方向进行缩放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "正交透视不支持通过鼠标进行缩放。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟随鼠标方向缩放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "需要移动平台上的模型,使它们不再相交吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "确保每个模型都保持分离" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "需要转动模型,使它们接触打印平台吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自动下降模型到打印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "在 G-code 读取器中显示警告信息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code 读取器中的警告信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "层视图要强制进入兼容模式吗?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "强制层视图兼容模式(需要重新启动)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Cura 是否应该在关闭的位置打开?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "恢复初始窗口位置" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "应使用哪种类型的摄像头进行渲染?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "摄像头渲染:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "透视" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "打开并保存文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "当模型的尺寸过大时,是否将模型自动缩小至成形空间体积?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "缩小过大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "当模型以米而不是毫米为单位时,模型可能会在打印平台中显得非常小。在此情况下是否进行放大?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大过小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "模型是否应该在加载后被选中?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "选择模型时加载" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "打印机名是否自动作为打印作业名称的前缀?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "将机器前缀添加到作业名称中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "保存项目文件时是否显示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "保存项目时显示摘要对话框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "打开项目文件时的默认行为" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "打开项目文件时的默认行为: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "总是询问" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "始终作为一个项目打开" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "始终导入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "当您对配置文件进行更改并切换到其他配置文件时将显示一个对话框,询问您是否要保留修改。您也可以选择一个默认行为并令其不再显示该对话框。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "切换到不同配置文件时对设置值更改的默认操作: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "总是询问" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "总是舍失更改的设置" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "总是将更改的设置传输至新配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "隐私" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "当 Cura 启动时,是否自动检查更新?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "启动时检查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "您愿意将关于您的打印数据以匿名形式发送到 Ultimaker 吗?注意:我们不会记录/发送任何模型、IP 地址或其他私人数据。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)发送打印信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "详细信息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "使用多打印平台功能" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "打印机" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "重命名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "创建" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "复制" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "创建配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "请为此配置文件提供名称。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "复制配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "重命名配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "导入配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "导出配置文件" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "打印机:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "默认配置文件" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 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:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "舍弃当前更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "此配置文件使用打印机指定的默认值,因此在下面的列表中没有此设置项。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "您当前的设置与选定的配置文件相匹配。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "全局设置" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "市场" @@ -3595,36 +3486,36 @@ msgstr "未命名" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +msgid "Search settings" msgstr "搜索设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "将值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "将所有修改值复制到所有挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隐藏此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再显示此设置" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此设置可见" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "配置设定可见性..." @@ -3635,55 +3526,70 @@ msgid "" "Some hidden settings use values different from their normal calculated value.\n" "\n" "Click to make these settings visible." -msgstr "一些隐藏设置正在使用有别于一般设置的计算值。\n\n单击以使这些设置可见。" +msgstr "" +"一些隐藏设置正在使用有别于一般设置的计算值。\n" +"\n" +"单击以使这些设置可见。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "此设置始终在所有挤出机之间共享。在此处更改它将改变所有挤出机的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "该值将会根据每一个挤出机的设置而确定 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" "\n" "Click to restore the value of the profile." -msgstr "此设置的值与配置文件不同。\n\n单击以恢复配置文件的值。" +msgstr "" +"此设置的值与配置文件不同。\n" +"\n" +"单击以恢复配置文件的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" "\n" "Click to restore the calculated value." -msgstr "此设置通常可被自动计算,但其当前已被绝对定义。\n\n单击以恢复自动计算的值。" +msgstr "" +"此设置通常可被自动计算,但其当前已被绝对定义。\n" +"\n" +"单击以恢复自动计算的值。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "推荐" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "自定义" @@ -3708,36 +3614,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "在模型的悬垂(Overhangs)部分生成支撑结构。若不这样做,这些部分在打印时将倒塌。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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。这将在您的对象周围或下方添加一个容易切断的平面区域。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "层高" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "您已修改部分配置文件设置。 如果您想对其进行更改,请转至自定义模式。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "此质量配置文件不适用于当前材料和喷嘴配置。请进行更改以便启用此质量配置文件。" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "自定义配置文件目前处于活动状态。 如要启用质量滑块,请在“自定义”选项卡中选择一个默认质量配置文件" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3748,18 +3639,31 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "关" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "实验性" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "配置文件" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" "\n" "Click to open the profile manager." -msgstr "某些设置/重写值与存储在配置文件中的值不同。\n\n点击打开配置文件管理器。" +msgstr "" +"某些设置/重写值与存储在配置文件中的值不同。\n" +"\n" +"点击打开配置文件管理器。" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "自定义配置文件" #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" @@ -3796,59 +3700,59 @@ 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”发送命令。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "挤出机" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "热端的目标温度。 热端将加热或冷却至此温度。 如果目标温度为 0,则热端加热将关闭。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "该热端的当前温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "热端的预热温度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "预热" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "打印前请预热热端。您可以在热端加热时继续调整打印机,而不必等待热端加热完毕再做好打印准备。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "该挤出机中材料的颜色。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "该挤出机中的材料。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "该挤出机所使用的喷嘴。" @@ -3888,12 +3792,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "收藏" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "通用" @@ -3913,42 +3817,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "打印机(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "材料(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "设为主要挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "启用挤出机" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "禁用挤出机" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "配置文件(&P)" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "摄像头位置(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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)" @@ -3968,17 +3877,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "管理设置可见性..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "保存(&S)..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "导出(&E)..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "导出选择..." @@ -4005,12 +3914,12 @@ msgctxt "@header" msgid "Configurations" msgstr "配置" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "选择配置" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "配置" @@ -4040,12 +3949,12 @@ msgctxt "@label" msgid "Enabled" msgstr "已启用" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "用胶粘和此材料组合以产生更好的附着。" @@ -4065,22 +3974,22 @@ 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 "预计剩余时间" @@ -4090,6 +3999,11 @@ msgctxt "@label" msgid "View type" msgstr "查看类型" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "对象列表" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4121,7 +4035,10 @@ msgid "" "- Send print jobs to Ultimaker printers outside your local network\n" "- Store your Ultimaker Cura settings in the cloud for use anywhere\n" "- Get exclusive access to print profiles from leading brands" -msgstr "- 将打印作业发送到局域网外的 Ultimaker 打印机\n- 将 Ultimaker Cura 设置存储到云以便在任何地方使用\n- 获得来自领先品牌的打印配置文件的独家访问权限" +msgstr "" +"- 将打印作业发送到局域网外的 Ultimaker 打印机\n" +"- 将 Ultimaker Cura 设置存储到云以便在任何地方使用\n" +"- 获得来自领先品牌的打印配置文件的独家访问权限" #: /home/ruben/Projects/Cura/resources/qml/Account/GeneralOperations.qml:78 msgctxt "@button" @@ -4138,32 +4055,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "无可用成本估计" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "无法切片" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "取消" @@ -4198,230 +4120,235 @@ msgctxt "@label" msgid "Preset printers" msgstr "预设打印机" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "管理打印机" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理材料…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "删除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "市场(&M)" @@ -4436,49 +4363,49 @@ msgctxt "@label" msgid "This package will be installed after restarting." msgstr "这个包将在重新启动后安装。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "设置" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "关闭 Cura" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "您确定要退出 Cura 吗?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" msgstr "安装包" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "打开文件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "我们已经在您选择的文件中找到一个或多个 G-Code 文件。您一次只能打开一个 G-Code 文件。若需打开 G-Code 文件,请仅选择一个。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "新增打印机" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "新增功能" @@ -4499,7 +4426,9 @@ msgctxt "@text:window" msgid "" "You have customized some profile settings.\n" "Would you like to keep or discard those settings?" -msgstr "您已自定义某些配置文件设置。\n您想保留或舍弃这些设置吗?" +msgstr "" +"您已自定义某些配置文件设置。\n" +"您想保留或舍弃这些设置吗?" #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:110 msgctxt "@title:column" @@ -4546,139 +4475,141 @@ msgctxt "@title:window" msgid "About Cura" msgstr "关于 Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "版本: %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "熔丝 3D 打印技术的的端对端解决方案。" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" "Cura proudly uses the following open source projects:" -msgstr "Cura 由 Ultimaker B.V. 与社区合作开发。\nCura 使用以下开源项目:" +msgstr "" +"Cura 由 Ultimaker B.V. 与社区合作开发。\n" +"Cura 使用以下开源项目:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "图形用户界面" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "应用框架" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "G-code 生成器" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "进程间通信交互使用库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "编程语言" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI 框架" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUI 框架绑定" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C / C++ 绑定库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "数据交换格式" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "科学计算支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "高速运算支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "用于处理 STL 文件的支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "用于处理平面对象的支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "用于处理三角网格的支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "用于分析复杂网络的支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "用于处理 3MF 文件的支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "用于文件元数据和流媒体的支持库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "串口通讯库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConf 发现库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "多边形剪辑库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Python HTTP 库" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "字体" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG 图标" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Linux 交叉分布应用程序部署" @@ -4698,32 +4629,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "保存项目" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "打印平台" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "挤出机 %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 材料" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "材料" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "保存时不再显示项目摘要" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "保存" @@ -4899,12 +4825,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "故障排除" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "打印机名称" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "请指定打印机名称" @@ -4954,27 +4880,39 @@ msgctxt "@text" msgid "" "Please follow these steps to set up\n" "Ultimaker Cura. This will only take a few moments." -msgstr "请按照以下步骤设置\nUltimaker Cura。此操作只需要几分钟时间。" +msgstr "" +"请按照以下步骤设置\n" +"Ultimaker Cura。此操作只需要几分钟时间。" #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/WelcomeContent.qml:58 msgctxt "@button" msgid "Get started" msgstr "开始" -#: /home/ruben/Projects/Cura/resources/qml/ObjectsList.qml:210 -msgctxt "@option:check" -msgid "See only current build plate" -msgstr "只能看到当前的打印平台" +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +msgstr "3D 视图" -#: /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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "顶视图" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "左视图" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "右视图" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5036,16 +4974,6 @@ msgctxt "name" msgid "Model Checker" msgstr "模型检查器" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "将所有设置内容转储至 HTML 文件。" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "God 模式" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5056,15 +4984,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "固件更新程序" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "创建一份合并质量变化配置文件。" +msgid "Provides support for reading AMF files." +msgstr "提供对读取 AMF 文件的支持。" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "配置文件合并器" +msgid "AMF Reader" +msgstr "AMF 读取器" #: USBPrinting/plugin.json msgctxt "description" @@ -5076,16 +5004,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 联机打印" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "允许将产生的切片保存为X3G文件,以支持读取此格式的打印机(Malyan、Makerbot和其他基于sailfish打印机的打印机)。" - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G写" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5128,23 +5046,13 @@ msgstr "可移动磁盘输出设备插件" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "管理与最后的3个打印机的网络连接。" +msgid "Manages network connections to Ultimaker networked printers." +msgstr "管理与 Ultimaker 网络打印机的网络连接。" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 网络连接" - -#: 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 "设置向导" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker 网络连接" #: MonitorStage/plugin.json msgctxt "description" @@ -5276,6 +5184,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "版本升级3.3到3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "将配置从 Cura 4.3 升级至 Cura 4.4。" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "版本自 4.3 升级至 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5336,6 +5254,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "版本自 3.0 升级到 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "请将配置从 Cura 4.1 升级至 Cura 4.2。" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "版本自 4.1 升级到 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5366,6 +5294,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "版本自 2.2 升级到 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "请将配置从 Cura 4.2 升级至 Cura 4.3。" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "版本自 4.2 升级至 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5376,6 +5314,16 @@ msgctxt "name" msgid "Image Reader" msgstr "图像读取器" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "提供对读取模型文件的支持。" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh 阅读器" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5406,16 +5354,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF 读取器" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "读取 SVG 文件的刀具路径,调试打印机活动。" - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG 刀具路径读取器" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5456,16 +5394,6 @@ 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." @@ -5506,6 +5434,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 配置文件读取器" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "合并有效设置" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "配置文件已被合并并激活。" + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "写入 X3g 到文件" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g 文件" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 文件" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "打开压缩三角网格" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "配置文件助手" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "配置文件助手" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "重试" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "打印芯" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "不支持与其他模型重叠" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "修改与其他模型重叠的设置" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "修改其他模型填充物的设置" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "更新已有配置" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "不支持" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "上一步" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "提示" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "打印试验" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "检查表" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "请选择适用于 Ultimaker 2 的升级文件。" + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "摄像头渲染: " + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "使用多打印平台功能" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "使用多打印平台功能(需要重启)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "默认配置文件" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "搜索设置" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "层高" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "此质量配置文件不适用于当前材料和喷嘴配置。请进行更改以便启用此质量配置文件。" + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "自定义配置文件目前处于活动状态。 如要启用质量滑块,请在“自定义”选项卡中选择一个默认质量配置文件" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "打印平台(&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "配置文件(&P)" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "打印平台" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "将所有设置内容转储至 HTML 文件。" + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "God 模式" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "创建一份合并质量变化配置文件。" + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "配置文件合并器" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "允许材料制造商使用下拉式 UI 创建新的材料和质量配置文件。" + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "打印配置文件助手" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "已通过网络连接。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "已通过网络连接。请在打印机上接受访问请求。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "已通过网络连接,但没有打印机的控制权限。" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "已发送打印机访问请求,请在打印机上批准该请求" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "身份验证状态" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "身份验证状态" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "重新发送访问请求" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "打印机接受了访问请求" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "无法使用本打印机进行打印,无法发送打印作业。" + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "请求访问" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "向打印机发送访问请求" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "无法启动新的打印作业。" + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker 配置存在问题,导致无法开始打印。请解决此问题,然后再继续。" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "配置不匹配" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "您确定要使用所选配置进行打印吗?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "打印机的配置或校准与 Cura 之间不匹配。为了获得最佳打印效果,请务必切换打印头和打印机中插入的材料。" + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "发送新作业(暂时)受阻,仍在发送前一份打印作业。" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "向打印机发送数据" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "正在发送数据" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "插槽 {slot_number} 中未加载 Printcore" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "插槽 {slot_number} 中未加载材料" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "为挤出机 {extruder_id} 选择了不同的 PrintCore(Cura: {cura_printcore_name},打印机:{remote_printcore_name})" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "您为挤出机 {2} 选择了不同的材料(Cura:{0},打印机:{1})" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "与您的打印机同步" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "您想在 Cura 中使用当前的打印机配置吗?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "打印机上的打印头和/或材料与当前项目中的不同。 为获得最佳打印效果,请始终使用已插入打印机的打印头和材料进行切片。" + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "在监控器中查看" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "打印机 '{printer_name}' 完成了打印任务 '{job_name}'。" + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "打印作业 '{job_name}' 已完成。" + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "打印完成" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "空" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "云错误" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "无法导出打印作业。" + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "连接到云时出错。" + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "通过 Ultimaker Cloud 上传" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "连接到 Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "对此打印机不再询问。" + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "您现在可以使用您的 Ultimaker account 帐户从任何地方发送和监控打印作业。" + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "已连接!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "查看您的连接" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "配置文件 {0} ({1}) 中定义的机器与当前机器 ({2}) 不匹配,无法导入。" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "无法从 {0} 导入配置文件:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "现有连接" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "此打印机/打印机组已添加到 Cura。请选择其他打印机/打印机组。" + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "输入打印机在网络上的 IP 地址或主机名。" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "连接到打印机" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 设置向导" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "正交透视中不支持通过鼠标缩放。" + +#~ msgid "Orthogonal" +#~ msgstr "正交" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "管理与最后的3个打印机的网络连接。" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 网络连接" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "提供关于 Cura 设置的额外信息和说明,并附上图片及动画。" + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "设置向导" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 设置向导" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "已根据挤出机的当前可用性更改设置:[%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "用户说明" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "这些选项不可用,因为您正在监控云打印机。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "转到 Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "已完成所有打印工作。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "查看打印历史" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "要通过网络向打印机发送打印请求,请确保您的打印机已通过网线或 WIFI 连接到网络。若您不能连接 Cura 与打印机,您仍然可以使用 USB 设备将 G-code 文件传输到打印机。\n" +#~ "\n" +#~ "从以下列表中选择您的打印机:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "请确保您的打印机已连接:\n" +#~ "- 检查打印机是否已启动。\n" +#~ "- 检查打印机是否连接到网络。" + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "只能看到当前的打印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "编位到所有打印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "编位当前打印平台" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "允许将产生的切片保存为X3G文件,以支持读取此格式的打印机(Malyan、Makerbot和其他基于sailfish打印机的打印机)。" + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G写" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "读取 SVG 文件的刀具路径,调试打印机活动。" + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG 刀具路径读取器" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "更新日志" @@ -5712,7 +6083,6 @@ msgstr "Cura 配置文件读取器" #~ "- 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" #~ "- 获得来自领先品牌的材料配置文件的独家访问权限" @@ -5739,7 +6109,6 @@ msgstr "Cura 配置文件读取器" #~ "\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 打印机”,并在下一个对话框中调整设置以匹配您的打印机。" @@ -5952,7 +6321,6 @@ msgstr "Cura 配置文件读取器" #~ "Print Setup disabled\n" #~ "G-code files cannot be modified" #~ msgstr "" - #~ "打印设置已禁用\n" #~ "G-code 文件无法被修改" @@ -6205,7 +6573,6 @@ msgstr "Cura 配置文件读取器" #~ "Could not export using \"{}\" quality!\n" #~ "Felt back to \"{}\"." #~ msgstr "" - #~ "无法使用 \"{}\" 导出质量!\n" #~ "返回 \"{}\"。" @@ -6381,7 +6748,6 @@ msgstr "Cura 配置文件读取器" #~ "2) Turn the fan off (only if there are no tiny details on the model).\n" #~ "3) Use a different material." #~ msgstr "" - #~ "由于模型的对象大小和所选材质,某些模型可能无法打印出最佳效果:{Model_names}。\n" #~ "可以借鉴一些实用技巧来改善打印质量:\n" #~ "1) 使用圆角。\n" @@ -6398,7 +6764,6 @@ msgstr "Cura 配置文件读取器" #~ "\n" #~ "Thanks!" #~ msgstr "" - #~ "在图纸中找不到模型。请再次检查图纸内容,确保里面有一个零件或组件?\n" #~ "\n" #~ "谢谢!" @@ -6409,7 +6774,6 @@ msgstr "Cura 配置文件读取器" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "在图纸中找到一个以上的零件或组件。我们目前只支持里面正好有一个零件或组件的图纸。\n" #~ "\n" #~ "很抱歉!" @@ -6434,7 +6798,6 @@ msgstr "Cura 配置文件读取器" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "尊敬的客户:\n" #~ "我们无法在您的系统中找到有效的 SolidWorks 软件。这意味着您的系统中没有安装 SolidWorks,或者您没有获得有效的许可。请确保 SolidWorks 的运行没有任何问题并/或联系您的 ICT。\n" #~ "\n" @@ -6449,7 +6812,6 @@ msgstr "Cura 配置文件读取器" #~ "With kind regards\n" #~ " - Thomas Karl Pietrowski" #~ msgstr "" - #~ "尊敬的客户:\n" #~ "您当前正在非 Windows 操作系统上运行此插件。此插件只能在装有 SolidWorks 且拥有有效许可的 Windows 系统上运行。请在装有 SolidWorks 的 Windows 计算机上安装此插件。\n" #~ "\n" @@ -6554,7 +6916,6 @@ msgstr "Cura 配置文件读取器" #~ "Open the directory\n" #~ "with macro and icon" #~ msgstr "" - #~ "打开宏和图标\n" #~ "所在的目录" @@ -6853,7 +7214,6 @@ msgstr "Cura 配置文件读取器" #~ "\n" #~ " Thanks!." #~ msgstr "" - #~ "在您的图纸中找不到模型。请再次检查图纸内容,确保里面有一个零件或组件。\n" #~ "\n" #~ "谢谢!" @@ -6864,7 +7224,6 @@ msgstr "Cura 配置文件读取器" #~ "\n" #~ "Sorry!" #~ msgstr "" - #~ "在您的图纸中找到一个以上的零件或组件。我们目前只支持里面正好有一个零件或组件的图纸。\n" #~ "\n" #~ "很抱歉!" @@ -6899,7 +7258,6 @@ msgstr "Cura 配置文件读取器" #~ "

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

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

发生了致命错误。请将这份错误报告发送给我们以便修复问题

\n" #~ "

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

\n" #~ " " @@ -7066,7 +7424,6 @@ msgstr "Cura 配置文件读取器" #~ "

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

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

发生了致命错误。 请将这份错误报告发送给我们以便修复问题

\n" #~ "

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

\n" #~ " " @@ -7213,7 +7570,6 @@ msgstr "Cura 配置文件读取器" #~ "

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

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

发生了致命错误,我们无法恢复!

\n" #~ "

请在以下网址中使用下方的信息提交错误报告:http://github.com/Ultimaker/Cura/issues

" @@ -7255,7 +7611,6 @@ msgstr "Cura 配置文件读取器" #~ "You need to accept this license to install this plugin.\n" #~ "Do you agree with the terms below?" #~ msgstr "" - #~ " 插件包含一个许可。\n" #~ "您需要接受此许可才能安装此插件。\n" #~ "是否同意下列条款?" diff --git a/resources/i18n/zh_CN/fdmextruder.def.json.po b/resources/i18n/zh_CN/fdmextruder.def.json.po index 62bda7bf06..c829558fe3 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.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-13 14:00+0200\n" "Last-Translator: Bothof \n" "Language-Team: PCDotFan , Bothof \n" diff --git a/resources/i18n/zh_CN/fdmprinter.def.json.po b/resources/i18n/zh_CN/fdmprinter.def.json.po index f6a213dc74..2de81b585d 100644 --- a/resources/i18n/zh_CN/fdmprinter.def.json.po +++ b/resources/i18n/zh_CN/fdmprinter.def.json.po @@ -5,17 +5,17 @@ # msgid "" msgstr "" -"Project-Id-Version: Cura 4.1\n" +"Project-Id-Version: Cura 4.4\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+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-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-09-23 14:18+0200\n" +"Last-Translator: Lionbridge \n" +"Language-Team: Chinese , PCDotFan , Chinese \n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.0.6\n" +"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=1; plural=0;\n" #: fdmprinter.def.json @@ -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" @@ -212,6 +216,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "机器是否有加热打印平台。" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "具有构建体积温度稳定性" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "机器是否能够稳定构建体积温度。" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -334,7 +348,7 @@ msgstr "挤出机必须保持不活动以便喷嘴冷却的最短时间。 挤 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "G-code 风格" #: fdmprinter.def.json @@ -1017,6 +1031,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "底层的数量。 在按底层厚度计算时,该值舍入为整数。" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "初始底层数" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "从构建板向上算起的初始底层数。在按底层厚度计算时,该值四舍五入为整数。" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1267,6 +1291,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "最尖角" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z 缝位置" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "在该位置附近开始打印层中各个部分。" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "左后方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "返回" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "右后方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "右侧" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "右前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "左前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "左侧" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1294,8 +1368,8 @@ msgstr "缝隙角偏好设置" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "控制模型轮廓上的各个角是否影响缝隙的位置。 “无”意味着各个角不影响缝隙位置。 “隐藏缝隙”会使缝隙更可能出现在内侧角上。 “外露缝隙”会使缝隙更可能出现在外侧角上。 “隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "控制模型轮廓上的角是否影响缝隙的位置。“无”表示各个角不影响缝隙位置。“隐藏缝隙”会使缝隙更可能出现在内侧角上。“外露缝隙”会使缝隙更可能出现在外侧角上。“隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。“智能隐藏”允许缝隙出现在内侧和外侧角上,如适当,会更多地出现在内侧角上。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1317,6 +1391,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "隐藏或外露缝隙" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "智能隐藏" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1329,13 +1408,13 @@ msgstr "启用时,Z 缝坐标为相对于各个部分中心的值。 禁用时 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "忽略小 Z 间隙" +msgid "No Skin in Z Gaps" +msgstr "Z 间隙内无表层" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "当模型具有小的垂直间隙时,可能会花费大约 5% 的额外计算时间来生成这些狭窄空间中的顶部和底部皮肤。 这种情况下,禁用该设置。" +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "当模型中只有几个分层有微小垂直间隙时,通常狭窄空间的分层周围应有表层。如果垂直间隙非常小,则启用此设置不生成表层。这缩短了打印时间和切片时间,但从技术方面看,会使填充物暴露在空气中。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1354,8 +1433,8 @@ msgstr "启用熨平" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "再一次经过顶部表面,但不挤出材料。 这是为了进一步融化顶部的塑料,打造更平滑的表面。" +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "再次经过顶部表面,但这次挤出的材料非常少。这意味着将进一步熔化顶部的塑料,形成更平滑的表面。喷嘴室中的压力保持很高,确保表面折痕中也能填充材料,以保证细节。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1447,6 +1526,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "执行熨平时的最大瞬时速度变化。" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "皮肤重叠百分比" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "调整壁和皮肤中心线的(端点)之间的重叠量,以皮肤线走线和最内壁的线宽度的百分比表示。稍微重叠可让各个壁与皮肤牢固连接。请注意,对于相等的皮肤和壁线宽度,任何超过 50% 的百分比可能已经导致任何皮肤越过壁,因为在该点,皮肤挤出机的喷嘴位置可能已经达到越过壁中间的位置。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "皮肤重叠" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "调整壁和皮肤中心线的(端点)之间的重叠量。稍微重叠可让各个壁与皮肤牢固连接。请注意,对于相等的皮肤和壁线宽度,任何超过壁宽度一半的值可能已经导致任何皮肤越过壁,因为在该点,皮肤挤出机的喷嘴位置可能已经达到越过壁中间的位置。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1612,6 +1711,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "填充图案沿 Y 轴移动此距离。" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "开始随机化填充" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "先随机化打印哪条填充线。这可以防止一个部分变强,但会导致一次额外的空驶。" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1632,7 +1741,9 @@ msgctxt "infill_wall_line_count description" msgid "" "Add extra walls around the infill area. Such walls can make top/bottom skin lines sag down less which means you need less top/bottom skin layers for the same quality at the cost of some extra material.\n" "This feature can combine with the Connect Infill Polygons to connect all the infill into a single extrusion path without the need for travels or retractions if configured right." -msgstr "在填充区域周围添加额外壁。此类壁可减少顶部/底部皮肤走线,这意味着只要付出一些额外的材料就可以使用更少的顶部/底部皮肤层达到相同的质量。\n在适当配置的情况下,此功能可结合连接填充多边形以将所有填充物连接到单一挤出路径而无需空驶或回抽。" +msgstr "" +"在填充区域周围添加额外壁。此类壁可减少顶部/底部皮肤走线,这意味着只要付出一些额外的材料就可以使用更少的顶部/底部皮肤层达到相同的质量。\n" +"在适当配置的情况下,此功能可结合连接填充多边形以将所有填充物连接到单一挤出路径而无需空驶或回抽。" #: fdmprinter.def.json msgctxt "sub_div_rad_add label" @@ -1664,26 +1775,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "填充物和壁之间的重叠量。 稍微重叠可让各个壁与填充物牢固连接。" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "皮肤重叠百分比" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "调整壁和皮肤中心线的(端点)之间的重叠量,以皮肤线走线和最内壁的线宽度的百分比表示。稍微重叠可让各个壁与皮肤牢固连接。请注意,对于相等的皮肤和壁线宽度,任何超过 50% 的百分比可能已经导致任何皮肤越过壁,因为在该点,皮肤挤出机的喷嘴位置可能已经达到越过壁中间的位置。" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "皮肤重叠" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "调整壁和皮肤中心线的(端点)之间的重叠量。稍微重叠可让各个壁与皮肤牢固连接。请注意,对于相等的皮肤和壁线宽度,任何超过壁宽度一半的值可能已经导致任何皮肤越过壁,因为在该点,皮肤挤出机的喷嘴位置可能已经达到越过壁中间的位置。" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1871,8 +1962,8 @@ msgstr "打印体积温度" #: fdmprinter.def.json 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,将不会调整打印体积温度。" +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" @@ -1984,6 +2075,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "百分比收缩率。" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "晶体材料" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "该材料为受热后脱落干净的类型(晶体),还是会产生长交织状聚合物链的类型(非晶体)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "防渗出回抽位置" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "材料在停止渗出前所需的回抽长度。" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "防渗出回抽速度" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "在耗材用于防渗出过程中材料所需的回抽速率。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "断裂缓冲期回抽位置" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "耗材受热拉伸但不断裂的极限长度。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "断裂缓冲期回抽速度" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "耗材在回抽过程中恰好折断的回抽速率。" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "断裂回抽位置" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "为完全脱落耗材而抽回耗材的长度。" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "断裂回抽速度" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "为完全脱落耗材而抽回耗材的速度。" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "折断温度" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "耗材在完全脱落时的温度。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1994,6 +2165,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流量补偿:挤出的材料量乘以此值。" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "壁流量" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "壁走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "外壁流量" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "最外壁走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "内壁流量" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "适用于所有壁走线(最外壁走线除外)的流量补偿。" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "顶部/底部流量" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "顶部/底部走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "顶部表层流量" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "打印顶部区域走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "填充流量" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "填充走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "裙边/边缘流量" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "裙边或边缘走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "支撑流量" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "支撑结构走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "支撑接触面流量" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "支撑顶板或底板走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "支撑顶板流量" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "支撑顶板走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "支撑底板流量" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "支撑底板走线的流量补偿。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "装填塔流量" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "装填塔走线的流量补偿。" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2111,8 +2402,8 @@ msgstr "支撑限制被撤销" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." -msgstr "当从支撑移动到支撑直线时,省略撤回。启用这个设置可以节省打印时间,但是可以在支撑结构中产生出色的字符串。" +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." +msgstr "当在各个支撑间直线移动时,省略回抽。启用这个设置可以节省打印时间,但会在支撑结构中产生过多穿线。" #: fdmprinter.def.json msgctxt "material_standby_temperature label" @@ -2164,6 +2455,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "喷嘴切换回抽后耗材被推回的速度。" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "喷嘴切换额外装填量" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "喷嘴切换后的额外装填材料。" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2355,14 +2656,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "打印 skirt 和 brim 的速度。 一般情况是以起始层速度打印这些部分,但有时候您可能想要以不同速度来打印 skirt 或 brim。" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "最大 Z 速度" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 抬升速度" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "打印平台移动的最大速度。 将该值设为零会使打印为最大 Z 速度采用固件默认值。" +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 垂直移动实现抬升的速度。一般小于打印速度,因为打印平台或打印机的十字轴较难移动。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2864,16 +3165,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "喷嘴和已打印部分之间在空驶时避让的距离。" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "开始具有相同部分的层" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "每一层都在相同点附近开始打印模型,这样我们就不用在开始新层时打印上一层结束的部分。 这会打印出更好的悬垂和较小的部分,但会增加打印时间。" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3280,14 +3571,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "已打印起始层支撑结构走线之间的距离。该设置通过支撑密度计算。" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "支撑填充走线方向" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "用于支撑的填充图案的方向。支撑填充图案在水平面中旋转。" +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“是一个空列表,即意味着使用默认角度 0 度。" #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3416,8 +3707,8 @@ msgstr "支撑结合部距离" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "支撑结构间在 X/Y 方向的最大距离。 当分离结构之间的距离小于此值时,这些结构将合并为一个。" +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "支撑结构间在 X/Y 方向的最大距离。当分离结构之间的距离小于此值时,这些结构将合并为一体。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3701,8 +3992,8 @@ msgstr "最小支撑接触面面积" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "支撑接触面多边形的最小面积。将不会生成面积小于此值的多边形。" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撑接触面多边形的最小面积。面积小于此值的多边形将打印为一般支撑。" #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3711,8 +4002,8 @@ msgstr "最小支撑顶板面积" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "支撑顶板的最小面积。将不会生成面积小于此值的多边形。" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撑顶板的最小面积。面积小于此值的多边形将打印为一般支撑。" #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3721,8 +4012,8 @@ msgstr "最小支撑底板面积" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "支撑底板的最小面积。将不会生成面积小于此值的多边形。" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撑底板的最小面积。面积小于此值的多边形将打印为一般支撑。" #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3754,6 +4045,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "应用到支撑底板的偏移量。" +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "支撑接触面走线方向" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“为一个空列表,即意味着使用默认角度(如果接触面很厚或为 90 度,则在 45 度和 135 度之间交替)。" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "支撑顶板走线方向" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“为一个空列表,即意味着使用默认角度(如果接触面很厚或为 90 度,则在 45 度和 135 度之间交替)。" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "支撑底板走线方向" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的整数走线方向列表。列表中的元素随层的进度依次使用,当达到列表末尾时将从头开始。列表项以逗号分隔,整个列表包含在方括号中。“默认“为一个空列表,即意味着使用默认角度(如果接触面很厚或为 90 度,则在 45 度和 135 度之间交替)。" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3795,14 +4116,14 @@ msgid "The diameter of a special tower." msgstr "特殊塔的直径。" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "最小直径" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "最大塔支撑直径" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "将由专门的支撑塔支撑的小区域 X/Y 轴方向的最小直径。" +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "将由专门的支撑塔支撑的小区域 X/Y 轴方向的最大直径。" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -3924,7 +4245,9 @@ msgctxt "skirt_gap description" msgid "" "The horizontal distance between the skirt and the first layer of the print.\n" "This is the minimum distance. Multiple skirt lines will extend outwards from this distance." -msgstr "skirt 和打印第一层之间的水平距离。\n这是最小距离。多个 skirt 走线将从此距离向外延伸。" +msgstr "" +"skirt 和打印第一层之间的水平距离。\n" +"这是最小距离。多个 skirt 走线将从此距离向外延伸。" #: fdmprinter.def.json msgctxt "skirt_brim_minimal_length label" @@ -4296,16 +4619,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "在打印品相邻处打印一个塔,用于在每个喷嘴切换后装填材料。" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "圆形装填塔" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "使装填塔成圆形。" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4346,16 +4659,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "装填塔位置的 y 坐标。" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "装填塔流量" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "流量补偿:挤出的材料量乘以此值。" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4496,6 +4799,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "移除第一个打印层下方的空白层(如果存在)。如果“切片公差”设置被设为“独占”或“中间”,禁用此设置可能导致空白第一层。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最大分辨率" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "走线部分在切片后的最小尺寸。如果提高此值,网格的分辨率将降低。这可让打印机保持处理 g-code 所需的速度,并将通过移除无法处理的网格细节提高切片速度。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "空走的最大分辨率" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "切片后的旅行线路段的最小尺寸。如果你增加了这个,旅行的移动就会变得不那么平滑了。这可能使打印机能够跟上它处理g代码的速度,但是它可能导致模型的避免变得不那么准确。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "最大偏移量" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "降低“最大分辨率”设置的分辨率时允许的最大偏移量。如果增加该值,打印作业的准确性将降低,但 g-code 将减小。“最大偏移量”是“最大分辨率”的限制,因此如果两者冲突,则“最大偏移量”将始终保持有效。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4658,8 +4991,8 @@ msgstr "平滑螺旋轮廓" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." -msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝应在打印品上几乎看不到,但在层视图中仍然可见)。 请注意,平滑操作将倾向于模糊精细的表面细节。" +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝于打印品上几乎不可见,但在层视图中仍然可见)。注意:平滑操作将模糊精细的表面细节。" #: fdmprinter.def.json msgctxt "relative_extrusion label" @@ -4871,36 +5204,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "切片层中周长小于此数值的多边形将被滤除。以切片时间为代价,较低的值可实现较高分辨率的网格。它主要用于高分辨率 SLA 打印机和包含大量细节的极小 3D 模型。" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "最大分辨率" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "走线部分在切片后的最小尺寸。如果提高此值,网格的分辨率将降低。这可让打印机保持处理 g-code 所需的速度,并将通过移除无法处理的网格细节提高切片速度。" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "空走的最大分辨率" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "切片后的旅行线路段的最小尺寸。如果你增加了这个,旅行的移动就会变得不那么平滑了。这可能使打印机能够跟上它处理g代码的速度,但是它可能导致模型的避免变得不那么准确。" - -#: fdmprinter.def.json -msgctxt "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" @@ -5041,16 +5344,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "滑行期间的移动速度,相对于挤出路径的速度。 建议采用略低于 100% 的值,因为在滑行移动期间鲍登管中的压力会下降。" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "交替皮肤旋转" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "交替打印顶部/底部层的方向。 通常它们只进行对角线打印。 此设置添加仅限 X 和仅限 Y 的方向。" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5158,8 +5451,8 @@ msgstr "启用锥形支撑" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "实验性功能: 让底部的支撑区域小于悬垂处的支撑区域。" +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "使底部的支撑区域小于悬垂处的支撑区域。" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5223,23 +5516,23 @@ msgstr "在每个走线部分引入的随机点之间的平均距离。 注意 #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" +msgid "Flow Rate Compensation Max Extrusion Offset" msgstr "流量补偿最大挤出偏移值" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "以毫米为单位的最大补偿距离。" +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "移动线材以补偿流量变化的最大距离(以毫米为单位)。" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" +msgid "Flow Rate Compensation Factor" msgstr "流量补偿因子" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "流量的倍增因子-> 距离转换。" +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "为补偿流量变化而将线材移动的距离,在挤出一秒钟的情况下占线材移动距离的百分比。" #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5391,7 +5684,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" @@ -5530,13 +5825,13 @@ msgstr "下一层与前一层的高度差。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "自适应图层阈值" +msgid "Adaptive Layers Topography Size" +msgstr "自适应图层地形尺寸" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "决定是否使用较小图层的阈值。该数字相当于一层中最大坡度的切线。" +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "两个相邻图层之间的目标水平距离。减小此设置的值会使要使用的图层变薄,从而使图层的边缘距离更近。" #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5545,8 +5840,8 @@ msgstr "悬垂壁角度" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "悬垂超过此角度的壁将使用悬垂壁设置打印。该值为 90 时,不会将任何壁视为悬垂。" +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "悬垂超过此角度的壁将使用悬垂壁设置打印。该值为 90 时,不会将任何壁视为悬垂。受到支撑支持的悬垂也不会被视为悬垂。" #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5898,6 +6193,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "在擦拭刷上来回移动喷嘴头的距离。" +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "小孔最大尺寸" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "将使用微小特征速度打印直径小于此尺寸的孔和零件轮廓。" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "微小特征最大长度" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "将使用微小特征速度打印小于此长度的特征轮廓。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "微小特征速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "微小特征初始层速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "第一层的微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5958,6 +6293,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撑接触面多边形的最小面积。将不会生成面积小于此值的多边形。" + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撑顶板的最小面积。将不会生成面积小于此值的多边形。" + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撑底板的最小面积。将不会生成面积小于此值的多边形。" + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "交替皮肤旋转" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "交替打印顶部/底部层的方向。 通常它们只进行对角线打印。 此设置添加仅限 X 和仅限 Y 的方向。" + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "流量补偿最大挤出偏移值" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "以毫米为单位的最大补偿距离。" + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "流量补偿因子" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "流量的倍增因子-> 距离转换。" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "自适应图层阈值" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "决定是否使用较小图层的阈值。该数字相当于一层中最大坡度的切线。" + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "悬垂超过此角度的壁将使用悬垂壁设置打印。该值为 90 时,不会将任何壁视为悬垂。" + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "第一层速度" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "第一层的微小特征将按正常打印速度的百分比进行打印。缓慢打印有助于粘合和提高准确性。" + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "再一次经过顶部表面,但不挤出材料。 这是为了进一步融化顶部的塑料,打造更平滑的表面。" + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "开始具有相同部分的层" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "每一层都在相同点附近开始打印模型,这样我们就不用在开始新层时打印上一层结束的部分。 这会打印出更好的悬垂和较小的部分,但会增加打印时间。" + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "用于支撑的填充图案的方向。支撑填充图案在水平面中旋转。" + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "在最大分辨率设置中减小分辨率时,允许的最大偏移量。如果增加该值,打印作业的准确性将降低,G-code 将减小。" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code 风格" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "控制模型轮廓上的各个角是否影响缝隙的位置。 “无”意味着各个角不影响缝隙位置。 “隐藏缝隙”会使缝隙更可能出现在内侧角上。 “外露缝隙”会使缝隙更可能出现在外侧角上。 “隐藏或外露缝隙”会使缝隙更可能出现在内侧或外侧角上。" + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "忽略小 Z 间隙" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "当模型具有小的垂直间隙时,可能会花费大约 5% 的额外计算时间来生成这些狭窄空间中的顶部和底部皮肤。 这种情况下,禁用该设置。" + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "用于打印体积的温度。如果该值为 0,将不会调整打印体积温度。" + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "当从支撑移动到支撑直线时,省略撤回。启用这个设置可以节省打印时间,但是可以在支撑结构中产生出色的字符串。" + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "最大 Z 速度" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "打印平台移动的最大速度。 将该值设为零会使打印为最大 Z 速度采用固件默认值。" + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "支撑结构间在 X/Y 方向的最大距离。 当分离结构之间的距离小于此值时,这些结构将合并为一个。" + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "最小直径" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "将由专门的支撑塔支撑的小区域 X/Y 轴方向的最小直径。" + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "圆形装填塔" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "使装填塔成圆形。" + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "流量补偿:挤出的材料量乘以此值。" + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "平滑螺旋轮廓以减少 Z 缝的可见性(Z 缝应在打印品上几乎看不到,但在层视图中仍然可见)。 请注意,平滑操作将倾向于模糊精细的表面细节。" + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "实验性功能: 让底部的支撑区域小于悬垂处的支撑区域。" + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "已启用的挤出机数目" @@ -6163,7 +6642,6 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ "Gcode commands to be executed at the very start - separated by \n" #~ "." #~ msgstr "" - #~ "在开始后执行的 G-code 命令 - 以 \n" #~ " 分行" @@ -6176,7 +6654,6 @@ msgstr "在将模型从文件中载入时应用在模型上的转换矩阵。" #~ "Gcode commands to be executed at the very end - separated by \n" #~ "." #~ msgstr "" - #~ "在结束前执行的 G-code 命令 - 以 \n" #~ " 分行" @@ -6233,7 +6710,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 old mode 100755 new mode 100644 index efd4202ffb..d82ada3caa --- 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.1\n" -"Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0200\n" -"PO-Revision-Date: 2019-05-24 21:46+0800\n" +"Project-Id-Version: Cura 4.3\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-05 13:13+0100\n" +"PO-Revision-Date: 2019-11-10 21:31+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 2.2.3\n" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:27 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsAction.py:30 msgctxt "@action" msgid "Machine Settings" msgstr "印表機設定" @@ -40,13 +40,13 @@ msgctxt "@item:inlistbox" msgid "G-code File" msgstr "G-code 檔案" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:67 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:66 msgctxt "@error:not supported" msgid "GCodeWriter does not support non-text mode." msgstr "G-code 寫入器不支援非文字模式。" -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:73 -#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:89 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:72 +#: /home/ruben/Projects/Cura/plugins/GCodeWriter/GCodeWriter.py:88 msgctxt "@warning:status" msgid "Please prepare G-code before exporting." msgstr "匯出前請先將 G-code 準備好。" @@ -56,7 +56,7 @@ msgctxt "@info:title" msgid "3D Model Assistant" msgstr "3D 模型助手" -#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:90 +#: /home/ruben/Projects/Cura/plugins/ModelChecker/ModelChecker.py:92 #, python-brace-format msgctxt "@info:status" msgid "" @@ -75,56 +75,45 @@ msgctxt "@action" msgid "Update Firmware" msgstr "更新韌體" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:23 -msgctxt "@item:inmenu" -msgid "Flatten active settings" -msgstr "合併有效設定" +#: /home/ruben/Projects/Cura/plugins/AMFReader/__init__.py:15 +msgctxt "@item:inlistbox" +msgid "AMF File" +msgstr "AMF 檔案" -#: /home/ruben/Projects/Cura/plugins/ProfileFlattener/ProfileFlattener.py:35 -msgctxt "@info:status" -msgid "Profile has been flattened & activated." -msgstr "列印參數已被合併並啟用。" - -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:37 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:42 msgctxt "@item:inmenu" msgid "USB printing" msgstr "USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:38 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:43 msgctxt "@action:button Preceded by 'Ready to'." msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:39 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:44 msgctxt "@info:tooltip" msgid "Print via USB" msgstr "透過 USB 連線列印" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:75 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:80 msgctxt "@info:status" msgid "Connected via USB" msgstr "透過 USB 連接" -#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:100 +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:105 msgctxt "@label" msgid "A USB print is in progress, closing Cura will stop this print. Are you sure?" msgstr "USB 列印正在進行中,關閉 Cura 將停止此列印工作。你確定要繼續嗎?" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/install/X3GWriter/__init__.py:15 -#: /home/ruben/Projects/Cura/plugins/X3GWriter/__init__.py:15 -msgctxt "X3G Writer File Description" -msgid "X3G File" -msgstr "X3G 檔案" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "A print is still in progress. Cura cannot start another print via USB until the previous print has completed." +msgstr "列印仍在進行中。列印完成前,Cura 無法透過 USB 開始另一次列印。" -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:16 -msgctxt "X3g Writer Plugin Description" -msgid "Writes X3g to files" -msgstr "將 X3g 寫入檔案" - -#: /home/ruben/Projects/Cura/plugins/X3GWriter/build/GPX-prefix/src/GPX/slicerplugins/cura15.06/X3gWriter/__init__.py:21 -msgctxt "X3g Writer File Description" -msgid "X3g File" -msgstr "X3g 檔案" +#: /home/ruben/Projects/Cura/plugins/USBPrinting/USBPrinterOutputDevice.py:127 +msgctxt "@message" +msgid "Print in Progress" +msgstr "列印正在進行中" #: /home/ruben/Projects/Cura/plugins/GCodeGzWriter/__init__.py:17 #: /home/ruben/Projects/Cura/plugins/GCodeGzReader/__init__.py:17 @@ -160,7 +149,7 @@ msgid "Save to Removable Drive {0}" msgstr "儲存到行動裝置 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:64 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:106 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/MeshFormatHandler.py:107 msgctxt "@info:status" msgid "There are no file formats available to write with!" msgstr "沒有可供寫入的檔案格式!" @@ -197,10 +186,9 @@ msgid "Could not save to removable drive {0}: {1}" msgstr "無法儲存到行動裝置 {0}:{1}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:137 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDeviceManager.py:188 -#: /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:1620 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:139 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:146 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1668 msgctxt "@info:title" msgid "Error" msgstr "錯誤" @@ -229,9 +217,9 @@ msgstr "卸載行動裝置 {0}" #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:151 #: /home/ruben/Projects/Cura/plugins/RemovableDriveOutputDevice/RemovableDriveOutputDevice.py:163 -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1610 -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1710 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1658 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1758 msgctxt "@info:title" msgid "Warning" msgstr "警告" @@ -258,347 +246,164 @@ msgctxt "@item:intext" msgid "Removable Drive" msgstr "行動裝置" -#: /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: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:95 -msgctxt "@info:status" -msgid "Connected over the network." -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:108 -msgctxt "@info:title" -msgid "Authentication status" -msgstr "認証狀態" - -#: /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: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:112 -msgctxt "@info:tooltip" -msgid "Re-send the access request" -msgstr "重新發送存取請求" - -#: /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: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: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: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:208 -msgctxt "@label" -msgid "Unable to start a new print job." -msgstr "無法開始新的列印作業。" - -#: /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: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: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: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:259 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:171 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:185 -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:266 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:189 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:206 -msgctxt "@info:status" -msgid "Sending data to printer" -msgstr "正在向印表機發送資料" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:267 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:191 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:208 -msgctxt "@info:title" -msgid "Sending Data" -msgstr "發送資料中" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/LegacyUM3OutputDevice.py:268 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:209 -#: /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: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: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:272 -msgctxt "@action:button" -msgid "Cancel" -msgstr "取消" - -#: /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: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: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: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:555 -msgctxt "@window:title" -msgid "Sync with your printer" -msgstr "與你的印表機同步" - -#: /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: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:96 -msgctxt "@info:status" -msgid "Connected over the network" -msgstr "透過網路連接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:284 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:369 -msgctxt "@info:status" -msgid "Print job was successfully sent to the printer." -msgstr "列印作業已成功傳送到印表機。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:286 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:370 -msgctxt "@info:title" -msgid "Data Sent" -msgstr "資料傳送" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:287 -msgctxt "@action:button" -msgid "View in Monitor" -msgstr "使用監控觀看" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:399 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:317 -#, 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:401 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:321 -#, 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:402 -#: /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:583 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:617 -msgctxt "@label:material" -msgid "Empty" -msgstr "空的" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:584 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/ClusterUM3OutputDevice.py:618 -msgctxt "@label:material" -msgid "Unknown" -msgstr "未知" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:174 -msgctxt "@action:button" -msgid "Print via Cloud" -msgstr "透過雲端服務列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:175 -msgctxt "@properties:tooltip" -msgid "Print via Cloud" -msgstr "透過雲端服務列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:176 -msgctxt "@info:status" -msgid "Connected via Cloud" -msgstr "透過雲端服務連接" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:186 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:358 -msgctxt "@info:title" -msgid "Cloud error" -msgstr "雲端服務錯誤" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:203 -msgctxt "@info:status" -msgid "Could not export print job." -msgstr "雲端服務未匯出列印作業。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:357 -msgctxt "@info:text" -msgid "Could not upload the data to the printer." -msgstr "雲端服務未上傳資料到印表機。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:51 -msgctxt "@info:status" -msgid "tomorrow" -msgstr "明天" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/Utils.py:54 -msgctxt "@info:status" -msgid "today" -msgstr "今天" - -#: /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 "Uploading via Ultimaker Cloud" -msgstr "透過 Ultimaker Cloud 上傳" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:624 -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:630 -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:631 -msgctxt "@action" -msgid "Don't ask me again for this printer." -msgstr "對此印表機不要再次詢問。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:634 -msgctxt "@action" -msgid "Get started" -msgstr "開始" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:640 -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:646 -msgctxt "@info:status" -msgid "Connected!" -msgstr "已連線!" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UM3OutputDevicePlugin.py:648 -msgctxt "@action" -msgid "Review your connection" -msgstr "檢查您的連線" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/DiscoverUM3Action.py:30 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/UltimakerNetworkedPrinterAction.py:26 msgctxt "@action" msgid "Connect via Network" msgstr "透過網路連接" -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/__init__.py:16 -msgctxt "@item:inmenu" -msgid "Cura Settings Guide" -msgstr "Cura 設定指南" +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:57 +msgctxt "@action:button Preceded by 'Ready to'." +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:58 +msgctxt "@properties:tooltip" +msgid "Print over network" +msgstr "網路連線列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Network/LocalClusterOutputDevice.py:59 +msgctxt "@info:status" +msgid "Connected over the network" +msgstr "透過網路連接" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:15 +msgctxt "@info:status" +msgid "Please wait until the current job has been sent." +msgstr "請等待目前作業傳送完成。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadBlockedMessage.py:16 +msgctxt "@info:title" +msgid "Print error" +msgstr "列印錯誤" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:21 +msgctxt "@info:title" +msgid "New cloud printers found" +msgstr "找到新的雲端印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:22 +msgctxt "@info:message" +msgid "New printers have been found connected to your account, you can find them in your list of discovered printers." +msgstr "新找到的印表機已連接到你的帳戶,你可以在已發現的印表機清單中找到它們。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudPrinterDetectedMessage.py:27 +msgctxt "@info:option_text" +msgid "Do not show this message again" +msgstr "不要再顯示這個訊息" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:27 +#, python-brace-format +msgctxt "@info:status" +msgid "You are attempting to connect to {0} but it is not the host of a group. You can visit the web page to configure it as a group host." +msgstr "你正在嘗試連接到 {0},但它不是印表機群組的管理者。你可以透過網頁將其設定為印表機群組的管理者。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:30 +msgctxt "@info:title" +msgid "Not a group host" +msgstr "不是印表機群組管理者" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/NotClusterHostMessage.py:35 +msgctxt "@action" +msgid "Configure group" +msgstr "設定印表機群組" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:27 +msgctxt "@info:status" +msgid "Send and monitor print jobs from anywhere using your Ultimaker account." +msgstr "利用你的 Ultimaker 帳號在任何地方傳送和監控列印作業。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:33 +msgctxt "@info:status Ultimaker Cloud should not be translated." +msgid "Connect to Ultimaker Cloud" +msgstr "連接到 Ultimaker Cloud" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/CloudFlowMessage.py:36 +msgctxt "@action" +msgid "Get started" +msgstr "開始" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:14 +msgctxt "@info:status" +msgid "Sending Print Job" +msgstr "正在傳送列印作業" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadProgressMessage.py:15 +msgctxt "@info:status" +msgid "Uploading print job to printer." +msgstr "正在上傳列印作業到印表機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:15 +msgctxt "@info:status" +msgid "Print job was successfully sent to the printer." +msgstr "列印作業已成功傳送到印表機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadSuccessMessage.py:16 +msgctxt "@info:title" +msgid "Data Sent" +msgstr "資料傳送" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:18 +msgctxt "@info:status" +msgid "You are attempting to connect to a printer that is not running Ultimaker Connect. Please update the printer to the latest firmware." +msgstr "你正在嘗試連接到一台未安裝 Ultimaker Connect 的印表機。請將印表機更新至最新版本的韌體。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/LegacyDeviceNoLongerSupportedMessage.py:21 +msgctxt "@info:title" +msgid "Update your printer" +msgstr "更新你印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:24 +#, python-brace-format +msgctxt "@info:status" +msgid "Cura has detected material profiles that were not yet installed on the host printer of group {0}." +msgstr "Cura 偵測到群組 {0} 的管理主機上未安裝的耗材參數。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/MaterialSyncMessage.py:26 +msgctxt "@info:title" +msgid "Sending materials to printer" +msgstr "向印表機傳送耗材參數中" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:15 +msgctxt "@info:text" +msgid "Could not upload the data to the printer." +msgstr "雲端服務未上傳資料到印表機。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Messages/PrintJobUploadErrorMessage.py:16 +msgctxt "@info:title" +msgid "Network error" +msgstr "網路錯誤" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:27 +msgctxt "@info:status" +msgid "tomorrow" +msgstr "明天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Utils.py:30 +msgctxt "@info:status" +msgid "today" +msgstr "今天" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:138 +msgctxt "@action:button" +msgid "Print via Cloud" +msgstr "透過雲端服務列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:139 +msgctxt "@properties:tooltip" +msgid "Print via Cloud" +msgstr "透過雲端服務列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/src/Cloud/CloudOutputDevice.py:140 +msgctxt "@info:status" +msgid "Connected via Cloud" +msgstr "透過雲端服務連接" #: /home/ruben/Projects/Cura/plugins/MonitorStage/__init__.py:14 msgctxt "@item:inmenu" msgid "Monitor" msgstr "監控" -#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:118 +#: /home/ruben/Projects/Cura/plugins/FirmwareUpdateChecker/FirmwareUpdateCheckerJob.py:125 msgctxt "@info" msgid "Could not access update information." msgstr "無法存取更新資訊。" @@ -626,12 +431,12 @@ msgctxt "@item:inlistbox" msgid "Layer view" msgstr "分層檢視" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:114 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:117 msgctxt "@info:status" msgid "Cura does not accurately display layers when Wire Printing is enabled" msgstr "當鐵絲網列印(Wire Printing)功能開啟時,Cura 將無法準確地顯示列印層(Layers)" -#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:115 +#: /home/ruben/Projects/Cura/plugins/SimulationView/SimulationView.py:118 msgctxt "@info:title" msgid "Simulation View" msgstr "模擬檢視" @@ -686,6 +491,36 @@ msgctxt "@item:inlistbox" msgid "GIF Image" msgstr "GIF 圖片" +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:15 +msgctxt "@item:inlistbox 'Open' is part of the name of this file format." +msgid "Open Compressed Triangle Mesh" +msgstr "Open Compressed Triangle Mesh" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:19 +msgctxt "@item:inlistbox" +msgid "COLLADA Digital Asset Exchange" +msgstr "COLLADA Digital Asset Exchange" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:23 +msgctxt "@item:inlistbox" +msgid "glTF Binary" +msgstr "glTF Binary" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:27 +msgctxt "@item:inlistbox" +msgid "glTF Embedded JSON" +msgstr "glTF Embedded JSON" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:36 +msgctxt "@item:inlistbox" +msgid "Stanford Triangle Format" +msgstr "Stanford Triangle Format" + +#: /home/ruben/Projects/Cura/plugins/TrimeshReader/__init__.py:40 +msgctxt "@item:inlistbox" +msgid "Compressed COLLADA Digital Asset Exchange" +msgstr "Compressed COLLADA Digital Asset Exchange" + #: /home/ruben/Projects/Cura/plugins/CuraEngineBackend/CuraEngineBackend.py:331 msgctxt "@info:status" msgid "Unable to slice with the current material as it is incompatible with the selected machine or configuration." @@ -750,12 +585,12 @@ msgctxt "@info:tooltip" msgid "Configure Per Model Settings" msgstr "設定對每個模型的單獨設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:175 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:186 msgctxt "@title:tab" msgid "Recommended" msgstr "推薦" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:177 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.py:188 msgctxt "@title:tab" msgid "Custom" msgstr "自訂選項" @@ -766,19 +601,19 @@ msgctxt "@item:inlistbox" msgid "3MF File" msgstr "3MF 檔案" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:191 -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:772 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:198 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:651 msgctxt "@label" msgid "Nozzle" msgstr "噴頭" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:470 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:496 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Project file {0} contains an unknown machine type {1}. Cannot import the machine. Models will be imported instead." msgstr "專案檔案 {0} 包含未知的機器類型 {1}。機器無法被匯入,但模型將被匯入。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:473 +#: /home/ruben/Projects/Cura/plugins/3MFReader/ThreeMFWorkspaceReader.py:499 msgctxt "@info:title" msgid "Open Project File" msgstr "開啟專案檔案" @@ -793,18 +628,18 @@ msgctxt "@item:inlistbox" msgid "G File" msgstr "G 檔案" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:328 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:335 msgctxt "@info:status" msgid "Parsing G-code" msgstr "正在解析 G-code" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:330 -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:483 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:337 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:491 msgctxt "@info:title" msgid "G-code Details" msgstr "G-code 細項設定" -#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:481 +#: /home/ruben/Projects/Cura/plugins/GCodeReader/FlavorParser.py:489 msgctxt "@info:generic" msgid "Make sure the g-code is suitable for your printer and printer configuration before sending the file to it. The g-code representation may not be accurate." msgstr "發送檔案之前,請確保 G-code 適用於目前印表機和印表機設定。目前 G-code 檔案可能不準確。" @@ -858,16 +693,6 @@ msgctxt "@item:inlistbox" msgid "Cura Profile" msgstr "Cura 列印參數" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:12 -msgctxt "@item:inmenu" -msgid "Profile Assistant" -msgstr "參數助手" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/__init__.py:18 -msgctxt "@item:inlistbox" -msgid "Profile Assistant" -msgstr "參數助手" - #: /home/ruben/Projects/Cura/plugins/3MFWriter/__init__.py:26 msgctxt "@item:inlistbox" msgid "3MF file" @@ -888,7 +713,6 @@ msgctxt "@item:inmenu" msgid "Preview" msgstr "預覽" -#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UM2UpgradeSelection.py:19 #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOUpgradeSelection.py:18 msgctxt "@action" msgid "Select upgrades" @@ -904,141 +728,148 @@ msgctxt "@info:title" msgid "Login failed" msgstr "登入失敗" -#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:33 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:36 msgctxt "@info:not supported profile" msgid "Not supported" msgstr "不支援" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:203 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:121 +#: /home/ruben/Projects/Cura/cura/Settings/cura_empty_instance_containers.py:55 +msgctxt "@info:No intent profile selected" +msgid "Default" +msgstr "預設值" + +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:196 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:125 msgctxt "@title:window" msgid "File Already Exists" msgstr "檔案已經存在" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:204 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:122 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:197 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:126 #, python-brace-format msgctxt "@label Don't translate the XML tag !" msgid "The file {0} already exists. Are you sure you want to overwrite it?" -msgstr "檔案 {0} 已存在。你確定要覆蓋掉它嗎?" +msgstr "檔案 {0} 已存在。你確定要覆蓋掉它嗎?" -#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:427 #: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:430 +#: /home/ruben/Projects/Cura/cura/Settings/ContainerManager.py:433 msgctxt "@info:status" msgid "Invalid file URL:" msgstr "無效的檔案網址:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:924 -#, 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:780 +msgctxt "@info:message Followed by a list of settings." +msgid "Settings have been changed to match the current availability of extruders:" +msgstr "設定已被更改為符合目前擠出機:" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:926 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:782 msgctxt "@info:title" msgid "Settings updated" msgstr "設定更新" -#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1468 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1334 msgctxt "@info:title" msgid "Extruder(s) Disabled" msgstr "擠出機已停用" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:131 +#: /home/ruben/Projects/Cura/cura/Settings/MachineManager.py:1457 +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:99 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:86 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:182 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml:223 +msgctxt "@label" +msgid "Unknown" +msgstr "未知" + +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:137 #, python-brace-format msgctxt "@info:status Don't translate the XML tags or !" msgid "Failed to export profile to {0}: {1}" msgstr "無法將列印參數匯出至 {0}{1}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:138 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to export profile to {0}: Writer plugin reported failure." msgstr "無法將列印參數匯出至 {0}:寫入器外掛報告故障。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:143 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:149 #, python-brace-format msgctxt "@info:status Don't translate the XML tag !" msgid "Exported profile to {0}" msgstr "列印參數已匯出至:{0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:144 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:150 msgctxt "@info:title" msgid "Export succeeded" msgstr "匯出成功" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:170 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:177 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" 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:181 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Can't import profile from {0} before a printer is added." msgstr "在加入印表機前,無法從 {0} 匯入列印參數。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:190 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:198 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "No custom profile to import in file {0}" msgstr "檔案 {0} 內沒有自訂列印參數可匯入" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:194 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:202 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "Failed to import profile from {0}:" msgstr "從 {0} 匯入列印參數失敗:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:218 -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:228 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:226 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:236 #, python-brace-format msgctxt "@info:status Don't translate the XML tags !" msgid "This profile {0} contains incorrect data, could not import it." msgstr "列印參數 {0} 含有不正確的資料,無法匯入。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:241 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:325 #, python-brace-format -msgctxt "@info:status Don't translate the XML tags !" -msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." -msgstr "列印參數 {0} 內定義的機器({1})與你目前的機器({2})不匹配, 無法匯入。" - -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:313 -#, python-brace-format -msgctxt "@info:status Don't translate the XML tags or !" +msgctxt "@info:status Don't translate the XML tag !" msgid "Failed to import profile from {0}:" msgstr "從 {0} 匯入列印參數失敗:" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:316 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:328 #, python-brace-format msgctxt "@info:status" msgid "Successfully imported profile {0}" msgstr "已成功匯入列印參數 {0}" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:319 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:331 #, python-brace-format msgctxt "@info:status" msgid "File {0} does not contain any valid profile." msgstr "檔案 {0} 內未含有效的列印參數。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:322 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:334 #, python-brace-format msgctxt "@info:status" msgid "Profile {0} has an unknown file type or is corrupted." msgstr "列印參數 {0} 檔案類型未知或已損壞。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:357 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:369 msgctxt "@label" msgid "Custom profile" msgstr "自訂列印參數" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:373 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:385 msgctxt "@info:status" msgid "Profile is missing a quality type." msgstr "列印參數缺少列印品質類型定義。" -#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:387 +#: /home/ruben/Projects/Cura/cura/Settings/CuraContainerRegistry.py:399 #, python-brace-format msgctxt "@info:status" msgid "Could not find a quality type {0} for the current configuration." @@ -1104,19 +935,18 @@ msgctxt "@tooltip" msgid "Other" msgstr "其它" -#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:306 +#: /home/ruben/Projects/Cura/cura/UI/PrintInformation.py:302 #, python-brace-format msgctxt "@label" msgid "Pre-sliced file {0}" msgstr "預切片檔案 {0}" #: /home/ruben/Projects/Cura/cura/UI/WelcomePagesModel.py:56 -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:62 msgctxt "@action:button" msgid "Next" msgstr "下一步" -#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:73 +#: /home/ruben/Projects/Cura/cura/UI/ObjectsModel.py:62 #, python-brace-format msgctxt "@label" msgid "Group #{group_nr}" @@ -1124,73 +954,120 @@ msgstr "群組 #{group_nr}" #: /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:120 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:168 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:124 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:169 msgctxt "@action:button" msgid "Close" msgstr "關閉" #: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:17 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:91 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:46 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:67 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:48 msgctxt "@action:button" msgid "Add" msgstr "增加" +#: /home/ruben/Projects/Cura/cura/UI/AddPrinterPagesModel.py:18 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxProgressButton.qml:19 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxConfirmUninstallResetDialog.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:352 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:42 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:58 +#: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:149 +#: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:188 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:406 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:294 +msgctxt "@action:button" +msgid "Cancel" +msgstr "取消" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:36 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:320 +msgctxt "@label" +msgid "Default" +msgstr "預設值" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:39 +msgctxt "@label" +msgid "Visual" +msgstr "外觀" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:40 +msgctxt "@text" +msgid "The visual profile is designed to print visual prototypes and models with the intent of high visual and surface quality." +msgstr "外觀參數是設計來列印較高品質形狀和表面的視覺性原型和模型。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:43 +msgctxt "@label" +msgid "Engineering" +msgstr "工程" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:44 +msgctxt "@text" +msgid "The engineering profile is designed to print functional prototypes and end-use parts with the intent of better accuracy and for closer tolerances." +msgstr "工程參數是設計來列印較高精度和較小公差的功能性原型和實際使用零件。" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:47 +msgctxt "@label" +msgid "Draft" +msgstr "草稿" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/IntentCategoryModel.py:48 +msgctxt "@text" +msgid "The draft profile is designed to print initial prototypes and concept validation with the intent of significant print time reduction." +msgstr "草稿參數是設計來縮短時間,快速列印初始原型和概念驗證。" + #: /home/ruben/Projects/Cura/cura/Machines/Models/ExtrudersModel.py:208 msgctxt "@menuitem" msgid "Not overridden" msgstr "不覆寫" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:109 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:357 +msgctxt "@label" +msgid "Custom profiles" +msgstr "自訂列印參數" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:391 #, python-brace-format msgctxt "@item:inlistbox" msgid "All Supported Types ({0})" msgstr "所有支援的類型 ({0})" -#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:110 +#: /home/ruben/Projects/Cura/cura/Machines/Models/QualityManagementModel.py:392 msgctxt "@item:inlistbox" msgid "All Files (*)" msgstr "所有檔案 (*)" -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:78 -#: /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:269 -msgctxt "@label" -msgid "Unknown" -msgstr "未知" - -#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:102 -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:104 -msgctxt "@label" -msgid "Available networked printers" -msgstr "可用的網路印表機" - -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:689 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:213 msgctxt "@label" msgid "Custom Material" msgstr "自訂耗材" -#: /home/ruben/Projects/Cura/cura/Machines/MaterialManager.py:690 -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:203 +#: /home/ruben/Projects/Cura/cura/Machines/Models/MaterialManagementModel.py:214 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:205 msgctxt "@label" msgid "Custom" msgstr "自訂" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:81 +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:116 +msgctxt "@label" +msgid "The printer(s) below cannot be connected because they are part of a group" +msgstr "下列印表機因為是群組的一部份導致無法連接" + +#: /home/ruben/Projects/Cura/cura/Machines/Models/DiscoveredPrintersModel.py:118 +msgctxt "@label" +msgid "Available networked printers" +msgstr "可用的網路印表機" + +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:90 msgctxt "@info:status" msgid "The build volume height has been reduced due to the value of the \"Print Sequence\" setting to prevent the gantry from colliding with printed models." msgstr "由於「列印序列」設定的值,成形列印範圍高度已被減少,以防止龍門與列印模型相衝突。" -#: /home/ruben/Projects/Cura/cura/BuildVolume.py:83 +#: /home/ruben/Projects/Cura/cura/BuildVolume.py:92 msgctxt "@info:title" msgid "Build Volume" msgstr "列印範圍" @@ -1215,39 +1092,39 @@ msgctxt "@message" msgid "Could not read response." msgstr "雲端沒有讀取回應。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:197 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationService.py:201 msgctxt "@info" msgid "Unable to reach the Ultimaker account server." msgstr "無法連上 Ultimaker 帳號伺服器。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:66 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:70 msgctxt "@message" msgid "Please give the required permissions when authorizing this application." msgstr "核准此應用程式時,請給予所需的權限。" -#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:73 +#: /home/ruben/Projects/Cura/cura/OAuth2/AuthorizationRequestHandler.py:77 msgctxt "@message" msgid "Something unexpected happened when trying to log in, please try again." msgstr "嘗試登入時出現意外狀況,請再試一次。" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:27 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:29 msgctxt "@info:status" msgid "Multiplying and placing objects" msgstr "正在複製並放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:28 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:30 msgctxt "@info:title" msgid "Placing Objects" msgstr "正在放置模型" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsJob.py:103 #: /home/ruben/Projects/Cura/cura/Arranging/ArrangeObjectsAllBuildPlatesJob.py:149 msgctxt "@info:status" msgid "Unable to find a location within the build volume for all objects" msgstr "無法在列印範圍內放下全部物件" -#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:100 +#: /home/ruben/Projects/Cura/cura/MultiplyObjectsJob.py:108 msgctxt "@info:title" msgid "Placing Object" msgstr "擺放物件中" @@ -1396,53 +1273,58 @@ 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:503 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:513 msgctxt "@info:progress" msgid "Loading machines..." msgstr "正在載入印表機..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:817 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:520 +msgctxt "@info:progress" +msgid "Setting up preferences..." +msgstr "正在設定偏好設定..." + +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:824 msgctxt "@info:progress" msgid "Setting up scene..." msgstr "正在設定場景..." -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:853 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:859 msgctxt "@info:progress" msgid "Loading interface..." msgstr "正在載入介面…" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1131 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1150 #, python-format msgctxt "@info 'width', 'depth' and 'height' are variable names that must NOT be translated; just translate the format of ##x##x## mm." msgid "%(width).1f x %(depth).1f x %(height).1f mm" msgstr "%(width).1f x %(depth).1f x %(height).1f mm" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1609 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1657 #, python-brace-format msgctxt "@info:status" msgid "Only one G-code file can be loaded at a time. Skipped importing {0}" msgstr "一次只能載入一個 G-code 檔案。{0} 已跳過匯入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1619 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1667 #, python-brace-format msgctxt "@info:status" msgid "Can't open any other file if G-code is loading. Skipped importing {0}" msgstr "如果載入 G-code,則無法開啟其他任何檔案。{0} 已跳過匯入" -#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1709 +#: /home/ruben/Projects/Cura/cura/CuraApplication.py:1757 msgctxt "@info:status" msgid "The selected model was too small to load." msgstr "選擇的模型太小無法載入。" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:58 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:56 msgctxt "@title:label" msgid "Printer Settings" msgstr "印表機設定" @@ -1455,15 +1337,15 @@ msgstr "X (寬度)" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:74 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:88 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:102 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:190 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:208 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:226 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:246 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:264 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:203 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:223 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:243 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:265 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:285 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:79 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:93 #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:109 -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:123 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:124 msgctxt "@label" msgid "mm" msgstr "mm" @@ -1495,50 +1377,55 @@ msgstr "熱床" #: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:149 msgctxt "@label" +msgid "Heated build volume" +msgstr "熱箱" + +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:161 +msgctxt "@label" msgid "G-code flavor" msgstr "G-code 類型" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:185 msgctxt "@title:label" msgid "Printhead Settings" msgstr "列印頭設定" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:186 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:199 msgctxt "@label" msgid "X min" msgstr "X 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:204 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:219 msgctxt "@label" msgid "Y min" msgstr "Y 最小值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:222 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:239 msgctxt "@label" msgid "X max" msgstr "X 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:242 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:261 msgctxt "@label" msgid "Y max" msgstr "Y 最大值" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:260 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:281 msgctxt "@label" msgid "Gantry Height" msgstr "吊車高度" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:274 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:295 msgctxt "@label" msgid "Number of Extruders" msgstr "擠出機數目" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:333 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:355 msgctxt "@title:label" msgid "Start G-code" msgstr "起始 G-code" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:347 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml:366 msgctxt "@title:label" msgid "End G-code" msgstr "結束 G-code" @@ -1568,22 +1455,22 @@ msgctxt "@label" msgid "Nozzle offset X" msgstr "噴頭偏移 X" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:119 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:120 msgctxt "@label" msgid "Nozzle offset Y" msgstr "噴頭偏移 Y" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:133 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:135 msgctxt "@label" msgid "Cooling Fan Number" msgstr "冷卻風扇數量" -#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:160 +#: /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/MachineSettingsExtruderTab.qml:174 +#: /home/ruben/Projects/Cura/plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml:176 msgctxt "@title:label" msgid "Extruder End G-code" msgstr "擠出機結束 G-code" @@ -1594,7 +1481,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:45 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml:46 msgctxt "@action:button" msgid "Installed" msgstr "已安裝" @@ -1602,23 +1489,23 @@ msgstr "已安裝" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxErrorPage.qml:16 msgctxt "@info" msgid "Could not connect to the Cura Package database. Please check your connection." -msgstr "無法連上 Cura 軟體包資料庫。請檢查你的網路連線。" +msgstr "無法連上 Cura 套件資料庫。請檢查你的網路連線。" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/SmallRatingWidget.qml:27 msgctxt "@label" msgid "ratings" msgstr "評分" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:38 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:32 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:30 msgctxt "@title:tab" msgid "Plugins" msgstr "外掛" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:70 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml:77 #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxHeader.qml:44 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:66 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:417 msgctxt "@title:tab" msgid "Materials" msgstr "耗材" @@ -1628,49 +1515,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/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/ToolboxDetailTileActions.qml:55 +#: /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:79 +#: /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:95 +#: /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:96 +#: /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:97 +#: /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" @@ -1719,29 +1606,29 @@ msgstr "你需要先登入才能進行評分" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/RatingWidget.qml:54 msgctxt "@label" msgid "You need to install the package before you can rate" -msgstr "你需要先安裝軟體包才能進行評分" +msgstr "你需要先安裝套件才能進行評分" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:19 msgctxt "@info" msgid "You will need to restart Cura before changes in packages have effect." -msgstr "需重新啟動 Cura,軟體包的更動才能生效。" +msgstr "需重新啟動 Cura,套件的更動才能生效。" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxFooter.qml:45 msgctxt "@info:button" msgid "Quit Cura" msgstr "結束 Cura" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Contributions" msgstr "社群貢獻" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:34 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:31 msgctxt "@label" msgid "Community Plugins" msgstr "社群外掛" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:43 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml:40 msgctxt "@label" msgid "Generic Materials" msgstr "通用耗材" @@ -1802,27 +1689,47 @@ msgctxt "@label" msgid "Featured" msgstr "精選" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:66 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:34 msgctxt "@label" msgid "Compatibility" msgstr "相容性" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:203 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:124 +msgctxt "@label:table_header" +msgid "Machine" +msgstr "機器" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:137 +msgctxt "@label:table_header" +msgid "Build Plate" +msgstr "列印平台" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:143 +msgctxt "@label:table_header" +msgid "Support" +msgstr "支撐" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:149 +msgctxt "@label:table_header" +msgid "Quality" +msgstr "品質" + +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:170 msgctxt "@action:label" msgid "Technical Data Sheet" msgstr "技術資料表" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:212 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:179 msgctxt "@action:label" msgid "Safety Data Sheet" msgstr "安全資料表" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:221 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:188 msgctxt "@action:label" msgid "Printing Guidelines" msgstr "列印指南" -#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:230 +#: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxCompatibilityChart.qml:197 msgctxt "@action:label" msgid "Website" msgstr "網站" @@ -1830,7 +1737,7 @@ msgstr "網站" #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml:16 msgctxt "@info" msgid "Fetching packages..." -msgstr "取得軟體包..." +msgstr "取得套件..." #: /home/ruben/Projects/Cura/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml:91 msgctxt "@label" @@ -1922,70 +1829,76 @@ msgctxt "@label" msgid "Firmware update failed due to missing firmware." msgstr "由於韌體遺失,導致韌體更新失敗。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:144 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:185 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:155 +msgctxt "@label link to Connect and Cloud interfaces" +msgid "Manage printer" +msgstr "管理印表機" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:192 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:183 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:153 msgctxt "@label" msgid "Glass" msgstr "玻璃" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:209 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:253 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:256 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:514 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:248 msgctxt "@info" -msgid "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:242 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:289 msgctxt "@info" msgid "The webcam is not available because you are monitoring a cloud printer." msgstr "由於你正在監控一台雲端印表機,因此無法使用網路攝影機。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:302 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:348 msgctxt "@label:status" msgid "Loading..." msgstr "正在載入..." -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:306 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:352 msgctxt "@label:status" msgid "Unavailable" msgstr "無法使用" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:310 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:356 msgctxt "@label:status" msgid "Unreachable" msgstr "無法連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:314 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:360 msgctxt "@label:status" msgid "Idle" msgstr "閒置中" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:401 msgctxt "@label" msgid "Untitled" msgstr "無標題" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:376 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:422 msgctxt "@label" msgid "Anonymous" msgstr "匿名" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:403 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:449 msgctxt "@label:status" msgid "Requires configuration changes" msgstr "需要修改設定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:441 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterCard.qml:487 msgctxt "@action:button" msgid "Details" msgstr "細項" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:132 msgctxt "@label" msgid "Unavailable printer" msgstr "無法使用的印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobCard.qml:134 msgctxt "@label" msgid "First available" msgstr "可用的第一個" @@ -1995,212 +1908,195 @@ msgctxt "@label" msgid "Queued" msgstr "已排入隊列" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:68 +#: /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:103 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:100 +msgctxt "@label" +msgid "There are no print jobs in the queue. Slice and send a job to add one." +msgstr "目前沒有列印作業在隊列中。可透過切片並傳送列印作來增加一個。" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:115 msgctxt "@label" msgid "Print jobs" msgstr "列印作業" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:118 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:131 msgctxt "@label" msgid "Total print time" msgstr "總列印時間" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:133 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:147 msgctxt "@label" msgid "Waiting for" msgstr "等待" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:217 -msgctxt "@info" -msgid "All jobs are printed." -msgstr "所有列印作業已完成。" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorQueue.qml:252 -msgctxt "@label link to connect manager" -msgid "View print history" -msgstr "檢視列印歷史記錄" - -#: /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: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:69 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:45 msgctxt "@title:window" msgid "Connect to Networked Printer" msgstr "連接到網路印表機" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:81 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 msgctxt "@label" -msgid "" -"To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" -"\n" -"Select your printer from the list below:" -msgstr "" -"要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。\n" -"\n" -"從以下清單中選擇你的印表機:" +msgid "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer." +msgstr "要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:101 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:57 +msgctxt "@label" +msgid "Select your printer from the list below:" +msgstr "從下列清單中選擇你的印表機:" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:77 msgctxt "@action:button" msgid "Edit" msgstr "編輯" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:112 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:128 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:52 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:117 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:88 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:55 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:138 msgctxt "@action:button" msgid "Remove" msgstr "移除" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:120 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:96 msgctxt "@action:button" msgid "Refresh" msgstr "刷新" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:215 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:176 msgctxt "@label" msgid "If your printer is not listed, read the network printing troubleshooting guide" msgstr "如果你的印表機未被列出,請閱讀網路列印故障排除指南" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:244 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:205 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:258 msgctxt "@label" msgid "Type" msgstr "類型" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:225 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:274 msgctxt "@label" msgid "Firmware version" msgstr "韌體版本" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:239 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:290 msgctxt "@label" msgid "Address" msgstr "位址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:321 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:263 msgctxt "@label" msgid "This printer is not set up to host a group of printers." msgstr "此印表機未被設定為管理印表機群組。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:325 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:267 msgctxt "@label" msgid "This printer is the host for a group of %1 printers." msgstr "此印表機為 %1 印表機群組的管理者。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:336 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:278 msgctxt "@label" msgid "The printer at this address has not yet responded." msgstr "該網路位址的印表機尚無回應。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:341 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:74 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:283 msgctxt "@action:button" msgid "Connect" msgstr "連接" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:354 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:296 msgctxt "@title:window" msgid "Invalid IP address" msgstr "無效的 IP 位址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:355 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:297 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:146 msgctxt "@text" msgid "Please enter a valid IP address." msgstr "請輸入有效的 IP 位址 。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:366 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:308 msgctxt "@title:window" msgid "Printer Address" msgstr "印表機網路位址" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:389 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:331 #: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddPrinterByIpContent.qml:102 msgctxt "@label" -msgid "Enter the IP address or hostname of your printer on the network." -msgstr "輸入印表機在網路上的 IP 位址或主機名稱。" +msgid "Enter the IP address of your printer on the network." +msgstr "輸入印表機的 IP 位址。" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:419 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/DiscoverUM3Action.qml:361 #: /home/ruben/Projects/Cura/plugins/SliceInfoPlugin/MoreInfoWindow.qml:138 #: /home/ruben/Projects/Cura/plugins/ImageReader/ConfigUI.qml:181 msgctxt "@action:button" msgid "OK" msgstr "確定" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:73 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:85 +#: /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:75 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:77 +#: /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:79 -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:81 +#: /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:83 +#: /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:87 +#: /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:89 +#: /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:91 +#: /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:93 +#: /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:95 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrintJobProgressBar.qml:100 msgctxt "@label:status" msgid "Finishes %1 at %2" msgstr "在 %2 完成 %1" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:44 -msgctxt "@action:button" -msgid "Print" -msgstr "列印" - -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:47 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:11 msgctxt "@title:window" msgid "Print over network" msgstr "網路連線列印" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:79 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:52 +msgctxt "@action:button" +msgid "Print" +msgstr "列印" + +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/PrintWindow.qml:80 msgctxt "@label" msgid "Printer selection" msgstr "印表機選擇" @@ -2289,67 +2185,59 @@ msgctxt "@action:button" msgid "Override" msgstr "覆寫" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:65 +#: /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:69 +#: /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:79 +#: /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:82 +#: /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:85 +#: /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:88 +#: /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:95 +#: /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:136 +#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorConfigOverrideDialog.qml:156 msgctxt "@label" msgid "Aluminum" msgstr "鋁" -#: /home/ruben/Projects/Cura/plugins/UM3NetworkPrinting/resources/qml/UM3InfoComponents.qml:75 -msgctxt "@info:tooltip" -msgid "Connect to a printer" -msgstr "連接到印表機" - -#: /home/ruben/Projects/Cura/plugins/SettingsGuide/resources/qml/SettingsGuide.qml:17 -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:117 msgctxt "@info" @@ -2558,72 +2446,71 @@ msgctxt "@action:label" msgid "Smoothing" msgstr "平滑" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:37 -msgctxt "@label" -msgid "Mesh Type" -msgstr "網格類型" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:68 -msgctxt "@label" -msgid "Normal model" -msgstr "普通模型" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:75 -msgctxt "@label" -msgid "Print as support" -msgstr "做為支撐" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:83 -msgctxt "@label" -msgid "Don't support overlap with other models" -msgstr "與模型重疊處不建立支撐" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:91 -msgctxt "@label" -msgid "Modify settings for overlap with other models" -msgstr "修改與模型重疊處的設定" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:99 -msgctxt "@label" -msgid "Modify settings for infill of other models" -msgstr "修改其他模型的填充設定" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:346 -msgctxt "@action:button" -msgid "Select settings" -msgstr "選擇設定" - -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:388 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:13 msgctxt "@title:window" msgid "Select Settings to Customize for this model" msgstr "選擇對此模型的自訂設定" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:431 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:56 #: /home/ruben/Projects/Cura/resources/qml/Preferences/SettingVisibilityPage.qml:94 msgctxt "@label:textbox" msgid "Filter..." msgstr "篩選…" -#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:445 +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/SettingPickDialog.qml:70 msgctxt "@label:checkbox" msgid "Show all" msgstr "顯示全部" +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:44 +msgctxt "@label" +msgid "Mesh Type" +msgstr "網格類型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:85 +msgctxt "@label" +msgid "Normal model" +msgstr "普通模型" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:97 +msgctxt "@label" +msgid "Print as support" +msgstr "做為支撐" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:109 +msgctxt "@label" +msgid "Modify settings for overlaps" +msgstr "修改重疊處設定" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:121 +msgctxt "@label" +msgid "Don't support overlaps" +msgstr "重疊處不建立支撐" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:145 +msgctxt "@action:checkbox" +msgid "Infill only" +msgstr "只有填充" + +#: /home/ruben/Projects/Cura/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml:368 +msgctxt "@action:button" +msgid "Select settings" +msgstr "選擇設定" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:14 msgctxt "@title:window" msgid "Open Project" msgstr "開啟專案" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:58 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Update/override existing profile" msgid "Update existing" msgstr "更新已有設定" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:59 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 -msgctxt "@action:ComboBox option" +msgctxt "@action:ComboBox Save settings in a new profile" msgid "Create new" -msgstr "新建" +msgstr "新建設定" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:70 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:73 @@ -2648,6 +2535,11 @@ msgctxt "@action:ComboBox option" msgid "Update" msgstr "更新" +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:116 +msgctxt "@action:ComboBox option" +msgid "Create new" +msgstr "新建" + #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:143 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:106 msgctxt "@action:label" @@ -2661,7 +2553,7 @@ msgid "Printer Group" msgstr "印表機群組" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:180 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:220 msgctxt "@action:label" msgid "Profile settings" msgstr "列印參數設定" @@ -2672,73 +2564,79 @@ msgid "How should the conflict in the profile be resolved?" msgstr "如何解决列印參數中的設定衝突?" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:216 -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:308 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:323 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:121 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:239 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:244 msgctxt "@action:label" msgid "Name" msgstr "名稱" #: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:231 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:223 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +msgctxt "@action:label" +msgid "Intent" +msgstr "意圖" + +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 msgctxt "@action:label" msgid "Not in profile" msgstr "不在列印參數中" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:236 -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:228 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:251 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:233 msgctxt "@action:label" msgid "%1 override" msgid_plural "%1 overrides" msgstr[0] "%1 覆寫" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:247 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:262 msgctxt "@action:label" msgid "Derivative from" msgstr "衍生自" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:252 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:267 msgctxt "@action:label" msgid "%1, %2 override" msgid_plural "%1, %2 overrides" msgstr[0] "%1, %2 覆寫" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:268 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:283 msgctxt "@action:label" msgid "Material settings" msgstr "耗材設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:284 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:299 msgctxt "@info:tooltip" msgid "How should the conflict in the material be resolved?" msgstr "如何解决耗材的設定衝突?" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:327 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:342 msgctxt "@action:label" msgid "Setting visibility" msgstr "參數顯示設定" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:336 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:351 msgctxt "@action:label" msgid "Mode" msgstr "模式" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:352 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:367 msgctxt "@action:label" msgid "Visible settings:" msgstr "顯示設定:" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:357 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:372 msgctxt "@action:label" msgid "%1 out of %2" msgstr "%1 / %2" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:383 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:398 msgctxt "@action:warning" msgid "Loading a project will clear all models on the build plate." msgstr "載入專案時將清除列印平台上的所有模型。" -#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:401 +#: /home/ruben/Projects/Cura/plugins/3MFReader/WorkspaceDialog.qml:416 msgctxt "@action:button" msgid "Open" msgstr "開啟" @@ -2845,48 +2743,6 @@ msgctxt "@checkbox:description" msgid "Automatically create a backup each day that Cura is started." msgstr "每天啟動 Cura 時自動建立備份。" -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorMainSettingsSelector.qml:75 -msgctxt "@label" -msgid "Not supported" -msgstr "不支援" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorTabControls.qml:35 -msgctxt "@action:button" -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 -msgctxt "@action:button" -msgid "Export" -msgstr "匯出" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageCategoryView.qml:169 -msgctxt "@label" -msgid "Tip" -msgstr "提示" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPage.qml:156 -msgctxt "@label" -msgid "Print experiment" -msgstr "列印實驗" - -#: /home/ruben/Projects/Cura/plugins/CuraPrintProfileCreator/components/ProfileCreatorPageValidation.qml:25 -msgctxt "@label" -msgid "Checklist" -msgstr "檢查清單" - -#: /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:44 -msgctxt "@label" -msgid "Olsson Block" -msgstr "Olsson Block" - #: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.qml:30 msgctxt "@title" msgid "Build Plate Leveling" @@ -2972,170 +2828,176 @@ 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:72 msgctxt "@title" msgid "Information" msgstr "資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 msgctxt "@title:window" msgid "Confirm Diameter Change" msgstr "直徑更改確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:102 msgctxt "@label (%1 is a number)" msgid "The new filament diameter is set to %1 mm, which is not compatible with the current extruder. Do you wish to continue?" msgstr "新的耗材直徑設定為 %1 mm,這與目前的擠出機不相容。你要繼續嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:133 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:128 msgctxt "@label" msgid "Display Name" msgstr "顯示名稱" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:138 msgctxt "@label" msgid "Brand" msgstr "品牌" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:148 msgctxt "@label" msgid "Material Type" msgstr "耗材類型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:163 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:158 msgctxt "@label" msgid "Color" msgstr "顏色" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:213 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:208 msgctxt "@label" msgid "Properties" msgstr "屬性" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:215 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:210 msgctxt "@label" msgid "Density" msgstr "密度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:230 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:225 msgctxt "@label" msgid "Diameter" msgstr "直徑" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:264 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:259 msgctxt "@label" msgid "Filament Cost" msgstr "耗材成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:281 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:276 msgctxt "@label" msgid "Filament weight" msgstr "耗材重量" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:299 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:294 msgctxt "@label" msgid "Filament length" msgstr "耗材長度" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:303 msgctxt "@label" msgid "Cost per Meter" msgstr "每公尺成本" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:322 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:317 msgctxt "@label" msgid "This material is linked to %1 and shares some of its properties." msgstr "此耗材與 %1 相關聯,並共享其部份屬性。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:324 msgctxt "@label" msgid "Unlink Material" msgstr "解除聯結耗材" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:340 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:335 msgctxt "@label" msgid "Description" msgstr "描述" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:353 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:348 msgctxt "@label" msgid "Adhesion Information" msgstr "附著資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:379 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsView.qml:374 #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:19 msgctxt "@label" msgid "Print settings" msgstr "列印設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:84 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:39 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:72 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:108 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:40 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:84 msgctxt "@action:button" msgid "Activate" msgstr "啟用" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:101 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:126 msgctxt "@action:button" msgid "Create" msgstr "建立" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:114 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:140 msgctxt "@action:button" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:141 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:170 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:167 msgctxt "@action:button" msgid "Import" msgstr "匯入" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:203 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:184 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:179 +msgctxt "@action:button" +msgid "Export" +msgstr "匯出" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:233 msgctxt "@action:label" msgid "Printer" msgstr "印表機" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:262 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:246 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:297 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:274 msgctxt "@title:window" msgid "Confirm Remove" msgstr "移除確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:263 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:247 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:300 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:275 msgctxt "@label (%1 is object name)" msgid "Are you sure you wish to remove %1? This cannot be undone!" msgstr "你確定要移除 %1 嗎?這動作無法復原!" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:277 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:285 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:314 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:322 msgctxt "@title:window" msgid "Import Material" msgstr "匯入耗材設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:286 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:323 msgctxt "@info:status Don't translate the XML tags or !" msgid "Could not import material %1: %2" msgstr "無法匯入耗材 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:327 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully imported material %1" msgstr "成功匯入耗材 %1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:308 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:316 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:345 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:353 msgctxt "@title:window" msgid "Export Material" msgstr "匯出耗材設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:357 msgctxt "@info:status Don't translate the XML tags and !" msgid "Failed to export material to %1: %2" msgstr "無法匯出耗材至 %1%2" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:326 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/Materials/MaterialsPage.qml:363 msgctxt "@info:status Don't translate the XML tag !" msgid "Successfully exported material to %1" msgstr "成功匯出耗材至:%1" @@ -3150,414 +3012,422 @@ msgctxt "@label:textbox" msgid "Check all" msgstr "全選" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:48 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 msgctxt "@info:status" msgid "Calculated" msgstr "已計算" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:61 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 msgctxt "@title:column" msgid "Setting" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:82 msgctxt "@title:column" msgid "Profile" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:75 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:89 msgctxt "@title:column" msgid "Current" msgstr "目前" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:83 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfileTab.qml:97 msgctxt "@title:column" msgid "Unit" msgstr "單位" #: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:15 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:406 +#: /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:132 msgctxt "@label" msgid "Interface" msgstr "介面" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:143 msgctxt "@label" msgid "Language:" msgstr "語言:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:210 msgctxt "@label" msgid "Currency:" msgstr "貨幣:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:223 msgctxt "@label" msgid "Theme:" msgstr "主題:" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:273 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:279 msgctxt "@label" msgid "You will need to restart the application for these changes to have effect." msgstr "需重新啟動 Cura,新的設定才能生效。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:290 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:296 msgctxt "@info:tooltip" msgid "Slice automatically when changing settings." msgstr "當設定變更時自動進行切片。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:298 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:304 msgctxt "@option:check" msgid "Slice automatically" msgstr "自動切片" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:312 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:318 msgctxt "@label" msgid "Viewport behavior" msgstr "顯示區設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:320 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:326 msgctxt "@info:tooltip" msgid "Highlight unsupported areas of the model in red. Without support these areas will not print properly." msgstr "以紅色凸顯模型缺少支撐的區域。如果沒有支撐這些區域將無法正常列印。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:329 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:335 msgctxt "@option:check" msgid "Display overhang" msgstr "顯示突出部分" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:336 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:343 msgctxt "@info:tooltip" msgid "Moves the camera so the model is in the center of the view when a model is selected" msgstr "當模型被選中時,視角將自動調整到最合適的觀察位置(模型處於正中央)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:348 msgctxt "@action:button" msgid "Center camera when item is selected" msgstr "當專案被選中時,自動置中視角" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:350 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:358 msgctxt "@info:tooltip" msgid "Should the default zoom behavior of cura be inverted?" msgstr "需要讓 Cura 的預設縮放操作反轉嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:355 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:363 msgctxt "@action:button" msgid "Invert the direction of camera zoom." msgstr "反轉視角縮放方向。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:365 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 msgctxt "@info:tooltip" msgid "Should zooming move in the direction of the mouse?" msgstr "是否跟隨滑鼠方向進行縮放?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:370 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:379 +msgctxt "@info:tooltip" +msgid "Zooming towards the mouse is not supported in the orthographic perspective." +msgstr "正交透視不支援游標縮放功能。" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:384 msgctxt "@action:button" msgid "Zoom toward mouse direction" msgstr "跟隨滑鼠方向縮放" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:380 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:410 msgctxt "@info:tooltip" msgid "Should models on the platform be moved so that they no longer intersect?" msgstr "需要移動平台上的模型,使它們不再交錯嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:385 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:415 msgctxt "@option:check" msgid "Ensure models are kept apart" msgstr "確保每個模型都保持分離" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:394 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:424 msgctxt "@info:tooltip" msgid "Should models on the platform be moved down to touch the build plate?" msgstr "要將模型下降到碰觸列印平台嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:399 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:429 msgctxt "@option:check" msgid "Automatically drop models to the build plate" msgstr "自動下降模型到列印平台" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:411 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:441 msgctxt "@info:tooltip" msgid "Show caution message in g-code reader." msgstr "在 g-code 讀取器中顯示警告訊息。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:420 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:450 msgctxt "@option:check" msgid "Caution message in g-code reader" msgstr "G-code 讀取器中的警告訊息" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:428 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:458 msgctxt "@info:tooltip" msgid "Should layer be forced into compatibility mode?" msgstr "分層檢視要強制進入相容模式嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:433 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:463 msgctxt "@option:check" msgid "Force layer view compatibility mode (restart required)" msgstr "強制分層檢視相容模式(需要重新啟動)" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:449 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:473 +msgctxt "@info:tooltip" +msgid "Should Cura open at the location it was closed?" +msgstr "Cura 應該開啟在前次關閉時的位置嗎?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:478 +msgctxt "@option:check" +msgid "Restore window position on start" +msgstr "開啟時復原視窗位置" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:488 +msgctxt "@info:tooltip" +msgid "What type of camera rendering should be used?" +msgstr "使用哪種類型的攝影機渲染?" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:495 +msgctxt "@window:text" +msgid "Camera rendering:" +msgstr "攝影機渲染:" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +msgid "Perspective" +msgstr "透視" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:507 +msgid "Orthographic" +msgstr "正交" + +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 msgctxt "@label" msgid "Opening and saving files" msgstr "開啟並儲存檔案" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:456 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:545 msgctxt "@info:tooltip" msgid "Should models be scaled to the build volume if they are too large?" msgstr "當模型的尺寸過大時,是否將模型自動縮小至列印範圍嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:461 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:550 msgctxt "@option:check" msgid "Scale large models" msgstr "縮小過大模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:471 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:560 msgctxt "@info:tooltip" msgid "An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?" msgstr "部份模型採用較大的單位(例如:公尺),導致模型變得非常小,要將這些模型放大嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:476 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:565 msgctxt "@option:check" msgid "Scale extremely small models" msgstr "放大過小模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:486 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:575 msgctxt "@info:tooltip" msgid "Should models be selected after they are loaded?" msgstr "模型載入後要設為被選擇的狀態嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:491 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:580 msgctxt "@option:check" msgid "Select models when loaded" msgstr "模型載入後選擇模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:501 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 msgctxt "@info:tooltip" msgid "Should a prefix based on the printer name be added to the print job name automatically?" msgstr "是否自動將印表機名稱作為列印作業名稱的前綴?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:506 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:595 msgctxt "@option:check" msgid "Add machine prefix to job name" msgstr "將印表機名稱前綴添加到列印作業名稱中" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:516 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:605 msgctxt "@info:tooltip" msgid "Should a summary be shown when saving a project file?" msgstr "儲存專案檔案時是否顯示摘要?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:520 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:609 msgctxt "@option:check" msgid "Show summary dialog when saving project" msgstr "儲存專案時顯示摘要對話框" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:530 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 msgctxt "@info:tooltip" msgid "Default behavior when opening a project file" msgstr "開啟專案檔案時的預設行為" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:538 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:627 msgctxt "@window:text" msgid "Default behavior when opening a project file: " msgstr "開啟專案檔案時的預設行為: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:552 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:641 msgctxt "@option:openProject" msgid "Always ask me this" msgstr "每次都向我確認" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:553 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:642 msgctxt "@option:openProject" msgid "Always open as a project" msgstr "總是作為一個專案開啟" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:554 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:643 msgctxt "@option:openProject" msgid "Always import models" msgstr "總是匯入模型" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:590 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:679 msgctxt "@info:tooltip" msgid "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again." msgstr "當你對列印參數進行更改然後切換到其他列印參數時,將顯示一個對話框詢問你是否要保留修改。你也可以選擇預設不顯示該對話框。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:599 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:688 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:52 msgctxt "@label" msgid "Profiles" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:604 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:693 msgctxt "@window:text" msgid "Default behavior for changed setting values when switching to a different profile: " msgstr "當切換到另一組列印參數時,對於被修改過的設定的預設行為: " -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:618 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:707 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml:157 msgctxt "@option:discardOrKeep" msgid "Always ask me this" msgstr "總是詢問" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:619 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 msgctxt "@option:discardOrKeep" msgid "Always discard changed settings" msgstr "總是放棄修改過的設定" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:620 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:709 msgctxt "@option:discardOrKeep" msgid "Always transfer changed settings to new profile" msgstr "總是將修改過的設定轉移至新的列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:654 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:743 msgctxt "@label" msgid "Privacy" msgstr "隱私權" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:661 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:750 msgctxt "@info:tooltip" msgid "Should Cura check for updates when the program is started?" msgstr "當 Cura 啟動時,是否自動檢查更新?" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:666 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:755 msgctxt "@option:check" msgid "Check for updates on start" msgstr "啟動時檢查更新" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:676 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:765 msgctxt "@info:tooltip" msgid "Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored." msgstr "你願意將關於你的列印資料以匿名形式發送到 Ultimaker 嗎?注意:我們不會記錄或發送任何模型、IP 地址或其他私人資料。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:770 msgctxt "@option:check" msgid "Send (anonymous) print information" msgstr "(匿名)發送列印資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:690 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:779 msgctxt "@action:button" msgid "More information" msgstr "更多資訊" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:708 -#: /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 -msgctxt "@info:tooltip" -msgid "Use multi build plate functionality" -msgstr "使用多列印平台功能" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/GeneralPage.qml:720 -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:411 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 msgctxt "@title:tab" msgid "Printers" msgstr "印表機" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:59 -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:129 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/MachinesPage.qml:63 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:152 msgctxt "@action:button" msgid "Rename" msgstr "重命名" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:36 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:415 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:34 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:419 msgctxt "@title:tab" msgid "Profiles" msgstr "列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:87 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:104 msgctxt "@label" msgid "Create" msgstr "建立" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:102 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:121 msgctxt "@label" msgid "Duplicate" msgstr "複製" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:202 msgctxt "@title:window" msgid "Create Profile" msgstr "建立列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:204 msgctxt "@info" msgid "Please provide a name for this profile." msgstr "請為此參數提供一個名字。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:232 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:260 msgctxt "@title:window" msgid "Duplicate Profile" msgstr "複製列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:263 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:291 msgctxt "@title:window" msgid "Rename Profile" msgstr "重命名列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:276 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:304 msgctxt "@title:window" msgid "Import Profile" msgstr "匯入列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:302 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:333 msgctxt "@title:window" msgid "Export Profile" msgstr "匯出列印參數" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:357 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:396 msgctxt "@label %1 is printer name" msgid "Printer: %1" msgstr "印表機:%1" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -msgctxt "@label" -msgid "Default profiles" -msgstr "預設參數" - -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:413 -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:554 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:561 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:257 msgctxt "@action:button" msgid "Discard current changes" msgstr "捨棄目前更改" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:514 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:580 msgctxt "@action:label" msgid "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below." msgstr "此列印參數使用印表機指定的預設值,因此在下面的清單中沒有此設定項。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:521 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:588 msgctxt "@action:label" msgid "Your current settings match the selected profile." msgstr "你目前的設定與選定的列印參數相匹配。" -#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:540 +#: /home/ruben/Projects/Cura/resources/qml/Preferences/ProfilesPage.qml:606 msgctxt "@title:tab" msgid "Global Settings" msgstr "全局設定" -#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:89 +#: /home/ruben/Projects/Cura/resources/qml/MainWindow/MainWindowHeader.qml:90 msgctxt "@action:button" msgid "Marketplace" msgstr "市集" @@ -3617,36 +3487,36 @@ msgstr "無標題" #: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:68 msgctxt "@label:textbox" -msgid "search settings" +msgid "Search settings" msgstr "搜尋設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:465 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:462 msgctxt "@action:menu" msgid "Copy value to all extruders" msgstr "將設定值複製到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:474 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:471 msgctxt "@action:menu" msgid "Copy all changed values to all extruders" msgstr "複製所有改變的設定值到所有擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:511 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:508 msgctxt "@action:menu" msgid "Hide this setting" msgstr "隱藏此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:529 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:521 msgctxt "@action:menu" msgid "Don't show this setting" msgstr "不再顯示此設定" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:533 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:525 msgctxt "@action:menu" msgid "Keep this setting visible" msgstr "保持此設定顯示" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:557 -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:425 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingView.qml:544 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:434 msgctxt "@action:menu" msgid "Configure setting visibility..." msgstr "參數顯示設定..." @@ -3662,32 +3532,32 @@ msgstr "" "\n" "點擊以顯這些設定。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:67 +#: /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:72 +#: /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:77 +#: /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:172 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:187 msgctxt "@label" msgid "This setting is always shared between all extruders. Changing it here will change the value for all extruders." msgstr "這個設定是所有擠出機共用的。修改它會同時更動到所有擠出機的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:176 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:191 msgctxt "@label" msgid "The value is resolved from per-extruder values " msgstr "這個數值是由每個擠出機的設定值解析出來的 " -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:214 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:230 msgctxt "@label" msgid "" "This setting has a value that is different from the profile.\n" @@ -3698,7 +3568,7 @@ msgstr "" "\n" "單擊以復原列印參數的值。" -#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:308 +#: /home/ruben/Projects/Cura/resources/qml/Settings/SettingItem.qml:329 msgctxt "@label" msgid "" "This setting is normally calculated, but it currently has an absolute value set.\n" @@ -3709,12 +3579,18 @@ msgstr "" "\n" "點擊以恢復計算得出的數值。" +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/NoIntentIcon.qml:31 +msgctxt "@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')" +msgid "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead" +msgid_plural "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead" +msgstr[0] "沒有擠出機 %2 用的 %1 參數。將使用預設參數" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:144 msgctxt "@button" msgid "Recommended" msgstr "推薦" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorContents.qml:158 msgctxt "@button" msgid "Custom" msgstr "自訂選項" @@ -3739,36 +3615,21 @@ msgctxt "@label" msgid "Generate structures to support parts of the model which have overhangs. Without these structures, such parts would collapse during printing." msgstr "在模型的突出部分產生支撐結構。若不這樣做,這些部分在列印時將倒塌。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedAdhesionSelector.qml: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 "允許列印邊緣或木筏。這將在你的物件周圍或下方添加一個容易切斷的平面區域。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:175 -msgctxt "@label" -msgid "Layer Height" -msgstr "層高" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:206 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:81 msgctxt "@tooltip" msgid "You have modified some profile settings. If you want to change these go to custom mode." msgstr "你修改過部份列印參數設定。如果你想改變這些設定,請切換到自訂模式。" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/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 "品質參數無法用於目前的耗材和噴頭設定。請修改這些設定以啟用此品質參數。" - -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml:449 -msgctxt "@tooltip" -msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" -msgstr "目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" - #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:13 msgctxt "@label:Should be short" msgid "On" @@ -3779,12 +3640,17 @@ msgctxt "@label:Should be short" msgid "Off" msgstr "關閉" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:27 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml:33 +msgctxt "@label" +msgid "Experimental" +msgstr "實驗功能" + +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:47 msgctxt "@label" msgid "Profile" msgstr "參數" -#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml:94 +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml:172 msgctxt "@tooltip" msgid "" "Some setting/override values are different from the values stored in the profile.\n" @@ -3795,6 +3661,11 @@ msgstr "" "\n" "點擊開啟列印參數管理器。" +#: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml:160 +msgctxt "@label:header" +msgid "Custom profiles" +msgstr "自訂列印參數" + #: /home/ruben/Projects/Cura/resources/qml/PrintSetupSelector/PrintSetupSelector.qml:21 msgctxt "@label shown when we load a Gcode file" msgid "Print setup disabled. G-code file can not be modified." @@ -3830,59 +3701,59 @@ 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 鍵傳送命令。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:38 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:41 msgctxt "@label" msgid "Extruder" msgstr "擠出機" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:68 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:71 msgctxt "@tooltip" msgid "The target temperature of the hotend. The hotend will heat up or cool down towards this temperature. If this is 0, the hotend heating is turned off." msgstr "加熱頭的目標溫度。加熱頭將加熱或冷卻至此溫度。若設定為 0,則關閉加熱頭的加熱。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:100 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:103 msgctxt "@tooltip" msgid "The current temperature of this hotend." msgstr "此加熱頭的目前溫度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:174 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:177 msgctxt "@tooltip of temperature input" msgid "The temperature to pre-heat the hotend to." msgstr "加熱頭預熱溫度。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:338 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:332 msgctxt "@button Cancel pre-heating" msgid "Cancel" msgstr "取消" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:341 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:344 #: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/HeatedBedBox.qml:335 msgctxt "@button" msgid "Pre-heat" msgstr "預熱" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:367 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:370 msgctxt "@tooltip of pre-heat" msgid "Heat the hotend in advance before printing. You can continue adjusting your print while it is heating, and you won't have to wait for the hotend to heat up when you're ready to print." msgstr "列印前預先加熱。你可以在加熱時繼續調整你的列印,當你準備好列印時就不需等待加熱頭升溫。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:403 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:406 msgctxt "@tooltip" msgid "The colour of the material in this extruder." msgstr "該擠出機中耗材的顏色。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:435 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:438 msgctxt "@tooltip" msgid "The material in this extruder." msgstr "該擠出機中的耗材。" -#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:467 +#: /home/ruben/Projects/Cura/resources/qml/PrinterOutput/ExtruderBox.qml:470 msgctxt "@tooltip" msgid "The nozzle inserted in this extruder." msgstr "該擠出機所使用的噴頭。" @@ -3922,12 +3793,12 @@ msgctxt "@label:category menu label" msgid "Material" msgstr "耗材" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:42 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:46 msgctxt "@label:category menu label" msgid "Favorites" msgstr "常用" -#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:66 +#: /home/ruben/Projects/Cura/resources/qml/Menus/MaterialMenu.qml:71 msgctxt "@label:category menu label" msgid "Generic" msgstr "通用" @@ -3947,42 +3818,47 @@ msgctxt "@title:menu menubar:settings" msgid "&Printer" msgstr "印表機(&P)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:27 msgctxt "@title:menu" msgid "&Material" msgstr "耗材(&M)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:41 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:36 msgctxt "@action:inmenu" msgid "Set as Active Extruder" msgstr "設為主要擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:47 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:42 msgctxt "@action:inmenu" msgid "Enable Extruder" msgstr "啟用擠出機" -#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:54 +#: /home/ruben/Projects/Cura/resources/qml/Menus/SettingsMenu.qml:49 msgctxt "@action:inmenu" msgid "Disable Extruder" msgstr "關閉擠出機" -#: /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:71 -msgctxt "@title:settings" -msgid "&Profile" -msgstr "列印參數(&P)" - #: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml:19 msgctxt "@action:inmenu menubar:view" msgid "&Camera position" msgstr "視角位置(&C)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ViewMenu.qml: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)" @@ -4002,17 +3878,17 @@ msgctxt "@action:inmenu" msgid "Manage Setting Visibility..." msgstr "管理參數顯示..." -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:32 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:33 msgctxt "@title:menu menubar:file" msgid "&Save..." msgstr "儲存(&S)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:53 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:54 msgctxt "@title:menu menubar:file" msgid "&Export..." msgstr "匯出(&E)" -#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:64 +#: /home/ruben/Projects/Cura/resources/qml/Menus/FileMenu.qml:65 msgctxt "@action:inmenu menubar:file" msgid "Export Selection..." msgstr "匯出選擇…" @@ -4039,12 +3915,12 @@ msgctxt "@header" msgid "Configurations" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:110 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:112 msgctxt "@label" msgid "Select configuration" msgstr "選擇設定" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:221 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml:223 msgctxt "@label" msgid "Configurations" msgstr "設定" @@ -4074,12 +3950,12 @@ msgctxt "@label" msgid "Enabled" msgstr "已啟用" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:250 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:251 msgctxt "@label" msgid "Material" msgstr "耗材" -#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:375 +#: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml:378 msgctxt "@label" msgid "Use glue for better adhesion with this material combination." msgstr "在此耗材組合下,使用膠水以獲得較佳的附著。" @@ -4087,7 +3963,7 @@ msgstr "在此耗材組合下,使用膠水以獲得較佳的附著。" #: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:128 msgctxt "@label" msgid "This configuration is not available because %1 is not recognized. Please visit %2 to download the correct material profile." -msgstr "由於無法識別 %1,因此無法使用此設定。 請連上 %2 下載正確的耗材參數設定。" +msgstr "由於無法識別 %1,因此無法使用此設定。 請連上 %2 下載正確的耗材參數設定。" #: /home/ruben/Projects/Cura/resources/qml/Menus/ConfigurationMenu/ConfigurationItem.qml:129 msgctxt "@label" @@ -4099,22 +3975,22 @@ 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 "預計剩餘時間" @@ -4124,6 +4000,11 @@ msgctxt "@label" msgid "View type" msgstr "檢示類型" +#: /home/ruben/Projects/Cura/resources/qml/ObjectSelector.qml:59 +msgctxt "@label" +msgid "Object list" +msgstr "物件清單" + #: /home/ruben/Projects/Cura/resources/qml/Account/UserOperations.qml:22 msgctxt "@label The argument is a username." msgid "Hi %1" @@ -4175,32 +4056,37 @@ msgctxt "@label" msgid "No cost estimation available" msgstr "沒有成本估算" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/OutputProcessWidget.qml:126 +#: /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 "無法切片" -#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:97 +#: /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:98 +#: /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:112 +#: /home/ruben/Projects/Cura/resources/qml/ActionPanel/SliceProcessWidget.qml:118 msgctxt "@button" msgid "Cancel" msgstr "取消" @@ -4235,230 +4121,235 @@ msgctxt "@label" msgid "Preset printers" msgstr "預設印表機" -#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:162 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/PrinterSelector/MachineSelector.qml:182 msgctxt "@button" msgid "Manage printers" msgstr "管理印表機" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:80 +#: /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:87 +#: /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:94 +#: /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:104 +#: /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:114 +#: /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:122 +#: /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:129 +#: /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:136 +#: /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:143 +#: /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:150 +#: /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:157 +#: /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:164 +#: /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:170 +#: /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:177 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 msgctxt "@action:inmenu" msgid "Manage Materials..." msgstr "管理耗材…" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:186 +#: /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:194 +#: /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:206 +#: /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:212 +#: /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:220 +#: /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:228 +#: /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:236 +#: /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:242 +#: /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:249 +#: /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:259 +#: /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:268 +#: /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:277 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:286 msgctxt "@action:inmenu" msgid "Delete Model" msgstr "刪除模型" -#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:285 +#: /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:291 +#: /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:311 +#: /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:321 +#: /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:331 +#: /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:338 +#: /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:348 +#: /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:358 +#: /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:367 +#: /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:374 +#: /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:382 +#: /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:389 +#: /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:396 +#: /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:403 +#: /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:411 +#: /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:418 +#: /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:432 +#: /home/ruben/Projects/Cura/resources/qml/Actions.qml:441 msgctxt "@action:menu" msgid "&Marketplace" msgstr "市集(&M)" @@ -4471,51 +4362,51 @@ msgstr "Ultimaker Cura" #: /home/ruben/Projects/Cura/resources/qml/Cura.qml:232 msgctxt "@label" msgid "This package will be installed after restarting." -msgstr "此軟體包將在重新啟動後安裝。" +msgstr "此套件將在重新啟動後安裝。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:409 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:413 msgctxt "@title:tab" msgid "Settings" msgstr "設定" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:535 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:538 msgctxt "@title:window" msgid "Closing Cura" msgstr "關閉 Cura 中" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:536 -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:548 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:539 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:551 msgctxt "@label" msgid "Are you sure you want to exit Cura?" msgstr "你確定要結束 Cura 嗎?" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:580 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:589 #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:19 msgctxt "@title:window" msgid "Open file(s)" msgstr "開啟檔案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:681 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:695 msgctxt "@window:title" msgid "Install Package" -msgstr "安裝軟體包" +msgstr "安裝套件" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:689 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:703 msgctxt "@title:window" msgid "Open File(s)" msgstr "開啟檔案" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:692 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:706 msgctxt "@text:window" msgid "We have found one or more G-Code files within the files you have selected. You can only open one G-Code file at a time. If you want to open a G-Code file, please just select only one." msgstr "我們已經在你選擇的檔案中找到一個或多個 G-Code 檔案。你一次只能開啟一個 G-Code 檔案。若需開啟 G-Code 檔案,請僅選擇一個。" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:795 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:809 msgctxt "@title:window" msgid "Add Printer" msgstr "新增印表機" -#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:803 +#: /home/ruben/Projects/Cura/resources/qml/Cura.qml:817 msgctxt "@title:window" msgid "What's New" msgstr "新功能" @@ -4585,17 +4476,17 @@ msgctxt "@title:window" msgid "About Cura" msgstr "關於 Cura" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:56 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:57 msgctxt "@label" msgid "version: %1" msgstr "版本:%1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:71 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:72 msgctxt "@label" msgid "End-to-end solution for fused filament 3D printing." msgstr "熔絲 3D 列印技術的的端對端解決方案。" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:84 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:85 msgctxt "@info:credit" msgid "" "Cura is developed by Ultimaker B.V. in cooperation with the community.\n" @@ -4604,122 +4495,122 @@ msgstr "" "Cura 由 Ultimaker B.V. 與社區合作開發。\n" "Cura 使用以下開源專案:" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:134 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 msgctxt "@label" msgid "Graphical user interface" msgstr "圖形用戶介面" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:135 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 msgctxt "@label" msgid "Application framework" msgstr "應用框架" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:136 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 msgctxt "@label" msgid "G-code generator" msgstr "G-code 產生器" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:137 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:138 msgctxt "@label" msgid "Interprocess communication library" msgstr "進程間通訊交互使用庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:139 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 msgctxt "@label" msgid "Programming language" msgstr "編程語言" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:140 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 msgctxt "@label" msgid "GUI framework" msgstr "GUI 框架" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:141 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 msgctxt "@label" msgid "GUI framework bindings" msgstr "GUI 框架綁定" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:142 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 msgctxt "@label" msgid "C/C++ Binding library" msgstr "C / C++ 綁定庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:143 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 msgctxt "@label" msgid "Data interchange format" msgstr "資料交換格式" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:144 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 msgctxt "@label" msgid "Support library for scientific computing" msgstr "科學計算函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:145 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 msgctxt "@label" msgid "Support library for faster math" msgstr "高速運算函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:146 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 msgctxt "@label" msgid "Support library for handling STL files" msgstr "用於處理 STL 檔案的函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:147 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 msgctxt "@label" msgid "Support library for handling planar objects" msgstr "用於處理平面物件的函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:148 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 msgctxt "@label" msgid "Support library for handling triangular meshes" msgstr "用於處理三角形網格的函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:149 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 msgctxt "@label" msgid "Support library for analysis of complex networks" msgstr "用於分析複雜網路的函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:150 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 msgctxt "@label" msgid "Support library for handling 3MF files" msgstr "用於處理 3MF 檔案的函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:151 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 msgctxt "@label" msgid "Support library for file metadata and streaming" msgstr "用於檔案 metadata 和串流的函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:152 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 msgctxt "@label" msgid "Serial communication library" msgstr "串口通訊函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:153 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 msgctxt "@label" msgid "ZeroConf discovery library" msgstr "ZeroConf 發現函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:154 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 msgctxt "@label" msgid "Polygon clipping library" msgstr "多邊形剪輯函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:155 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:156 msgctxt "@Label" msgid "Python HTTP library" msgstr "Python HTTP 函式庫" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:157 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 msgctxt "@label" msgid "Font" msgstr "字體" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:158 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 msgctxt "@label" msgid "SVG icons" msgstr "SVG 圖標" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:159 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/AboutDialog.qml:160 msgctxt "@label" msgid "Linux cross-distribution application deployment" msgstr "Linux cross-distribution 應用程式部署" @@ -4727,7 +4618,7 @@ msgstr "Linux cross-distribution 應用程式部署" #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:64 msgctxt "@text:window" msgid "We have found one or more project file(s) within the files you have selected. You can open only one project file at a time. We suggest to only import models from those files. Would you like to proceed?" -msgstr "我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" +msgstr "我們已經在你所選擇的檔案中找到一個或多個專案檔案,但一次只能開啟一個專案檔案。我們建議只從那些檔案中匯入模型而不開啟專案。你要繼續操作嗎?" #: /home/ruben/Projects/Cura/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml:99 msgctxt "@action:button" @@ -4739,32 +4630,27 @@ msgctxt "@title:window" msgid "Save Project" msgstr "儲存專案" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:138 -msgctxt "@action:label" -msgid "Build plate" -msgstr "列印平台" - -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:172 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:177 msgctxt "@action:label" msgid "Extruder %1" msgstr "擠出機 %1" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:187 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:192 msgctxt "@action:label" msgid "%1 & material" msgstr "%1 & 耗材" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:189 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:194 msgctxt "@action:label" msgid "Material" msgstr "耗材" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:261 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:283 msgctxt "@action:label" msgid "Don't show project summary on save again" msgstr "儲存時不再顯示專案摘要" -#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:280 +#: /home/ruben/Projects/Cura/resources/qml/Dialogs/WorkspaceSummaryDialog.qml:302 msgctxt "@action:button" msgid "Save" msgstr "儲存" @@ -4940,12 +4826,12 @@ msgctxt "@label" msgid "Troubleshooting" msgstr "故障排除" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:204 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:211 msgctxt "@label" msgid "Printer name" msgstr "印表機名稱" -#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:217 +#: /home/ruben/Projects/Cura/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml:224 msgctxt "@text" msgid "Please give your printer a name" msgstr "請為你的印表機取一個名稱" @@ -5004,20 +4890,30 @@ msgctxt "@button" msgid "Get started" 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/ViewOrientationControls.qml:27 +msgctxt "@info:tooltip" +msgid "3D View" +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/ViewOrientationControls.qml:40 +msgctxt "@info:tooltip" +msgid "Front View" +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/ViewOrientationControls.qml:53 +msgctxt "@info:tooltip" +msgid "Top View" +msgstr "上視圖" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:66 +msgctxt "@info:tooltip" +msgid "Left View" +msgstr "左視圖" + +#: /home/ruben/Projects/Cura/resources/qml/ViewOrientationControls.qml:79 +msgctxt "@info:tooltip" +msgid "Right View" +msgstr "右視圖" #: MachineSettingsAction/plugin.json msgctxt "description" @@ -5032,7 +4928,7 @@ msgstr "印表機設定操作" #: Toolbox/plugin.json msgctxt "description" msgid "Find, manage and install new Cura packages." -msgstr "查詢,管理和安裝新的 Cura 軟體包。" +msgstr "查詢,管理和安裝新的 Cura 套件。" #: Toolbox/plugin.json msgctxt "name" @@ -5079,16 +4975,6 @@ msgctxt "name" msgid "Model Checker" msgstr "模器檢查器" -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "description" -msgid "Dump the contents of all settings to a HTML file." -msgstr "將所有設定內容轉儲至 HTML 檔案。" - -#: cura-god-mode-plugin/src/GodMode/plugin.json -msgctxt "name" -msgid "God Mode" -msgstr "上帝模式" - #: FirmwareUpdater/plugin.json msgctxt "description" msgid "Provides a machine actions for updating firmware." @@ -5099,15 +4985,15 @@ msgctxt "name" msgid "Firmware Updater" msgstr "韌體更新器" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "description" -msgid "Create a flattened quality changes profile." -msgstr "建立一個撫平的品質修改參數。" +msgid "Provides support for reading AMF files." +msgstr "提供對讀取 AMF 格式檔案的支援。" -#: ProfileFlattener/plugin.json +#: AMFReader/plugin.json msgctxt "name" -msgid "Profile Flattener" -msgstr "參數撫平器" +msgid "AMF Reader" +msgstr "AMF 讀取器" #: USBPrinting/plugin.json msgctxt "description" @@ -5119,16 +5005,6 @@ msgctxt "name" msgid "USB printing" msgstr "USB 連線列印" -#: X3GWriter/build/plugin.json -msgctxt "description" -msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." -msgstr "允許將切片結果儲存為 X3G 檔案,以支援讀取此格式的印表機(Malyan,Makerbot 和其他以 Sailfish 為原型的印表機)。" - -#: X3GWriter/build/plugin.json -msgctxt "name" -msgid "X3GWriter" -msgstr "X3G 寫入器" - #: GCodeGzWriter/plugin.json msgctxt "description" msgid "Writes g-code to a compressed archive." @@ -5171,23 +5047,13 @@ msgstr "行動裝置輸出設備外掛" #: UM3NetworkPrinting/plugin.json msgctxt "description" -msgid "Manages network connections to Ultimaker 3 printers." -msgstr "管理與 Ultimaker 3 印表機的網絡連線。" +msgid "Manages network connections to Ultimaker networked printers." +msgstr "管理與 Ultimaker 網絡印表機的網絡連線。" #: UM3NetworkPrinting/plugin.json msgctxt "name" -msgid "UM3 Network Connection" -msgstr "UM3 網路連線" - -#: 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 "設定指南" +msgid "Ultimaker Network Connection" +msgstr "Ultimaker 網絡連線" #: MonitorStage/plugin.json msgctxt "description" @@ -5319,6 +5185,16 @@ msgctxt "name" msgid "Version Upgrade 3.3 to 3.4" msgstr "升級版本 3.3 到 3.4" +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.3 to Cura 4.4." +msgstr "將設定從 Cura 4.3 版本升級至 4.4 版本。" + +#: VersionUpgrade/VersionUpgrade43to44/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.3 to 4.4" +msgstr "升級版本 4.3 到 4.4" + #: VersionUpgrade/VersionUpgrade25to26/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.5 to Cura 2.6." @@ -5379,6 +5255,16 @@ msgctxt "name" msgid "Version Upgrade 3.0 to 3.1" msgstr "升級版本 3.0 到 3.1" +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.1 to Cura 4.2." +msgstr "將設定從 Cura 4.1 版本升級至 4.2 版本。" + +#: VersionUpgrade/VersionUpgrade41to42/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.1 to 4.2" +msgstr "升級版本 4.1 到 4.2" + #: VersionUpgrade/VersionUpgrade26to27/plugin.json msgctxt "description" msgid "Upgrades configurations from Cura 2.6 to Cura 2.7." @@ -5409,6 +5295,16 @@ msgctxt "name" msgid "Version Upgrade 2.2 to 2.4" msgstr "升級版本 2.2 到 2.4" +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "description" +msgid "Upgrades configurations from Cura 4.2 to Cura 4.3." +msgstr "將設定從 Cura 4.2 版本升級至 4.3 版本。" + +#: VersionUpgrade/VersionUpgrade42to43/plugin.json +msgctxt "name" +msgid "Version Upgrade 4.2 to 4.3" +msgstr "升級版本 4.2 到 4.3" + #: ImageReader/plugin.json msgctxt "description" msgid "Enables ability to generate printable geometry from 2D image files." @@ -5419,6 +5315,16 @@ msgctxt "name" msgid "Image Reader" msgstr "圖片讀取器" +#: TrimeshReader/plugin.json +msgctxt "description" +msgid "Provides support for reading model files." +msgstr "提供讀取模型檔案的支援。" + +#: TrimeshReader/plugin.json +msgctxt "name" +msgid "Trimesh Reader" +msgstr "Trimesh 讀取器" + #: CuraEngineBackend/plugin.json msgctxt "description" msgid "Provides the link to the CuraEngine slicing backend." @@ -5449,16 +5355,6 @@ msgctxt "name" msgid "3MF Reader" msgstr "3MF 讀取器" -#: SVGToolpathReader/build/plugin.json -msgctxt "description" -msgid "Reads SVG files as toolpaths, for debugging printer movements." -msgstr "讀取 SVG 檔案做為工具路徑,用於印表機移動的除錯。" - -#: SVGToolpathReader/build/plugin.json -msgctxt "name" -msgid "SVG Toolpath Reader" -msgstr "SVG 工具路徑讀取器" - #: SolidView/plugin.json msgctxt "description" msgid "Provides a normal solid mesh view." @@ -5499,16 +5395,6 @@ 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." @@ -5549,6 +5435,449 @@ msgctxt "name" msgid "Cura Profile Reader" msgstr "Cura 列印參數讀取器" +#~ msgctxt "@item:inmenu" +#~ msgid "Flatten active settings" +#~ msgstr "合併有效設定" + +#~ msgctxt "@info:status" +#~ msgid "Profile has been flattened & activated." +#~ msgstr "列印參數已被合併並啟用。" + +#~ msgctxt "X3g Writer Plugin Description" +#~ msgid "Writes X3g to files" +#~ msgstr "將 X3g 寫入檔案" + +#~ msgctxt "X3g Writer File Description" +#~ msgid "X3g File" +#~ msgstr "X3g 檔案" + +#~ msgctxt "X3G Writer File Description" +#~ msgid "X3G File" +#~ msgstr "X3G 檔案" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Open Compressed Triangle Mesh" +#~ msgstr "Open Compressed Triangle Mesh" + +#~ msgctxt "@item:inmenu" +#~ msgid "Profile Assistant" +#~ msgstr "參數助手" + +#~ msgctxt "@item:inlistbox" +#~ msgid "Profile Assistant" +#~ msgstr "參數助手" + +#~ msgctxt "@action:button" +#~ msgid "Retry" +#~ msgstr "重試" + +#~ msgctxt "@label:table_header" +#~ msgid "Print Core" +#~ msgstr "Print Core" + +#~ msgctxt "@label" +#~ msgid "Don't support overlap with other models" +#~ msgstr "與模型重疊處不建立支撐" + +#~ msgctxt "@label" +#~ msgid "Modify settings for overlap with other models" +#~ msgstr "修改與模型重疊處的設定" + +#~ msgctxt "@label" +#~ msgid "Modify settings for infill of other models" +#~ msgstr "修改其他模型的填充設定" + +#~ msgctxt "@action:ComboBox option" +#~ msgid "Update existing" +#~ msgstr "更新已有設定" + +#~ msgctxt "@label" +#~ msgid "Not supported" +#~ msgstr "不支援" + +#~ msgctxt "@action:button" +#~ msgid "Previous" +#~ msgstr "前一個" + +#~ msgctxt "@label" +#~ msgid "Tip" +#~ msgstr "提示" + +#~ msgctxt "@label" +#~ msgid "Print experiment" +#~ msgstr "列印實驗" + +#~ msgctxt "@label" +#~ msgid "Checklist" +#~ msgstr "檢查清單" + +#~ msgctxt "@label" +#~ msgid "Please select any upgrades made to this Ultimaker 2." +#~ msgstr "請選擇適用於 Ultimaker 2 的更新檔案。" + +#~ msgctxt "@label" +#~ msgid "Olsson Block" +#~ msgstr "Olsson Block" + +#~ msgctxt "@window:text" +#~ msgid "Camera rendering: " +#~ msgstr "攝影機渲染:" + +#~ msgctxt "@info:tooltip" +#~ msgid "Use multi build plate functionality" +#~ msgstr "使用多列印平台功能" + +#~ msgctxt "@option:check" +#~ msgid "Use multi build plate functionality (restart required)" +#~ msgstr "使用多列印平台功能(需重啟軟體)" + +#~ msgctxt "@label" +#~ msgid "Default profiles" +#~ msgstr "預設參數" + +#~ msgctxt "@label:textbox" +#~ msgid "search settings" +#~ msgstr "搜尋設定" + +#~ msgctxt "@label" +#~ msgid "Layer Height" +#~ msgstr "層高" + +#~ msgctxt "@tooltip" +#~ msgid "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile." +#~ msgstr "品質參數無法用於目前的耗材和噴頭設定。請修改這些設定以啟用此品質參數。" + +#~ msgctxt "@tooltip" +#~ msgid "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab" +#~ msgstr "目前正使用自訂列印參數。若要使用品質滑動條,在自訂分頁中選擇預設的列印參數" + +#~ msgctxt "@title:menu" +#~ msgid "&Build plate" +#~ msgstr "列印平台(&B)" + +#~ msgctxt "@title:settings" +#~ msgid "&Profile" +#~ msgstr "列印參數(&P)" + +#~ msgctxt "@action:label" +#~ msgid "Build plate" +#~ msgstr "列印平台" + +#~ msgctxt "description" +#~ msgid "Dump the contents of all settings to a HTML file." +#~ msgstr "將所有設定內容轉儲至 HTML 檔案。" + +#~ msgctxt "name" +#~ msgid "God Mode" +#~ msgstr "上帝模式" + +#~ msgctxt "description" +#~ msgid "Create a flattened quality changes profile." +#~ msgstr "建立一個撫平的品質修改參數。" + +#~ msgctxt "name" +#~ msgid "Profile Flattener" +#~ msgstr "參數撫平器" + +#~ msgctxt "description" +#~ msgid "Allows material manufacturers to create new material and quality profiles using a drop-in UI." +#~ msgstr "允許耗材製造商使用下拉式 UI 建立新的耗材和品質設定參數。" + +#~ msgctxt "name" +#~ msgid "Print Profile Assistant" +#~ msgstr "列印參數設定助手" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network." +#~ msgstr "已透過網路連接。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. Please approve the access request on the printer." +#~ msgstr "已透過網路連接。請在印表機上接受存取請求。" + +#~ msgctxt "@info:status" +#~ msgid "Connected over the network. No access to control the printer." +#~ msgstr "已透過網路連接,但沒有印表機的控制權限。" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer requested. Please approve the request on the printer" +#~ msgstr "已發送印表機存取請求,請在印表機上批准該請求" + +#~ msgctxt "@info:title" +#~ msgid "Authentication status" +#~ msgstr "認証狀態" + +#~ msgctxt "@info:title" +#~ msgid "Authentication Status" +#~ msgstr "認証狀態" + +#~ msgctxt "@info:tooltip" +#~ msgid "Re-send the access request" +#~ msgstr "重新發送存取請求" + +#~ msgctxt "@info:status" +#~ msgid "Access to the printer accepted" +#~ msgstr "印表機接受了存取請求" + +#~ msgctxt "@info:status" +#~ msgid "No access to print with this printer. Unable to send print job." +#~ msgstr "無法使用本印表機進行列印,無法發送列印作業。" + +#~ msgctxt "@action:button" +#~ msgid "Request Access" +#~ msgstr "請求存取" + +#~ msgctxt "@info:tooltip" +#~ msgid "Send access request to the printer" +#~ msgstr "向印表機發送存取請求" + +#~ msgctxt "@label" +#~ msgid "Unable to start a new print job." +#~ msgstr "無法開始新的列印作業。" + +#~ msgctxt "@label" +#~ msgid "There is an issue with the configuration of your Ultimaker, which makes it impossible to start the print. Please resolve this issues before continuing." +#~ msgstr "Ultimaker 的設定有問題導致無法開始列印。請在繼續之前解決這個問題。" + +#~ msgctxt "@window:title" +#~ msgid "Mismatched configuration" +#~ msgstr "設定不匹配" + +#~ msgctxt "@label" +#~ msgid "Are you sure you wish to print with the selected configuration?" +#~ msgstr "你確定要使用所選設定進行列印嗎?" + +#~ msgctxt "@label" +#~ msgid "There is a mismatch between the configuration or calibration of the printer and Cura. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "印表機的設定或校正與 Cura 之間不匹配。為了獲得最佳列印效果,請使用印表機的 PrintCores 和耗材設定進行切片。" + +#~ msgctxt "@info:status" +#~ msgid "Sending new jobs (temporarily) blocked, still sending the previous print job." +#~ msgstr "前一列印作業傳送中,暫停傳送新列印作業。" + +#~ msgctxt "@info:status" +#~ msgid "Sending data to printer" +#~ msgstr "正在向印表機發送資料" + +#~ msgctxt "@info:title" +#~ msgid "Sending Data" +#~ msgstr "發送資料中" + +#~ msgctxt "@info:status" +#~ msgid "No Printcore loaded in slot {slot_number}" +#~ msgstr "Slot {slot_number} 中沒有載入 Printcore" + +#~ msgctxt "@info:status" +#~ msgid "No material loaded in slot {slot_number}" +#~ msgstr "Slot {slot_number} 中沒有載入耗材" + +#~ msgctxt "@label" +#~ msgid "Different PrintCore (Cura: {cura_printcore_name}, Printer: {remote_printcore_name}) selected for extruder {extruder_id}" +#~ msgstr "擠出機 {extruder_id} 選擇了不同的 PrintCore(Cura:{cura_printcore_name},印表機:{remote_printcore_name})" + +#~ msgctxt "@label" +#~ msgid "Different material (Cura: {0}, Printer: {1}) selected for extruder {2}" +#~ msgstr "擠出機 {2} 選擇了不同的耗材(Cura:{0},印表機:{1})" + +#~ msgctxt "@window:title" +#~ msgid "Sync with your printer" +#~ msgstr "與你的印表機同步" + +#~ msgctxt "@label" +#~ msgid "Would you like to use your current printer configuration in Cura?" +#~ msgstr "你想在 Cura 中使用目前的印表機設定嗎?" + +#~ msgctxt "@label" +#~ msgid "The PrintCores and/or materials on your printer differ from those within your current project. For the best result, always slice for the PrintCores and materials that are inserted in your printer." +#~ msgstr "印表機上的 PrintCores 和/或耗材與目前專案中的不同。為獲得最佳列印效果,請使用目前印表機的 PrintCores 和耗材設定進行切片。" + +#~ msgctxt "@action:button" +#~ msgid "View in Monitor" +#~ msgstr "使用監控觀看" + +#~ msgctxt "@info:status" +#~ msgid "Printer '{printer_name}' has finished printing '{job_name}'." +#~ msgstr "印表機 '{printer_name}' 已完成列印 '{job_name}'。" + +#~ msgctxt "@info:status" +#~ msgid "The print job '{job_name}' was finished." +#~ msgstr "列印作業 '{job_name}' 已完成。" + +#~ msgctxt "@info:status" +#~ msgid "Print finished" +#~ msgstr "列印已完成" + +#~ msgctxt "@label:material" +#~ msgid "Empty" +#~ msgstr "空的" + +#~ msgctxt "@label:material" +#~ msgid "Unknown" +#~ msgstr "未知" + +#~ msgctxt "@info:title" +#~ msgid "Cloud error" +#~ msgstr "雲端服務錯誤" + +#~ msgctxt "@info:status" +#~ msgid "Could not export print job." +#~ msgstr "雲端服務未匯出列印作業。" + +#~ msgctxt "@info:description" +#~ msgid "There was an error connecting to the cloud." +#~ msgstr "連接到雲端服務時發生錯誤。" + +#~ msgctxt "@info:status" +#~ msgid "Uploading via Ultimaker Cloud" +#~ msgstr "透過 Ultimaker Cloud 上傳" + +#~ msgctxt "@info:status Ultimaker Cloud is a brand name and shouldn't be translated." +#~ msgid "Connect to Ultimaker Cloud" +#~ msgstr "連接到 Ultimaker Cloud" + +#~ msgctxt "@action" +#~ msgid "Don't ask me again for this printer." +#~ msgstr "對此印表機不要再次詢問。" + +#~ msgctxt "@info:status" +#~ msgid "You can now send and monitor print jobs from anywhere using your Ultimaker account." +#~ msgstr "現在你可以利用你的 Ultimaker 帳號在任何地方傳送和監控列印作業。" + +#~ msgctxt "@info:status" +#~ msgid "Connected!" +#~ msgstr "已連線!" + +#~ msgctxt "@action" +#~ msgid "Review your connection" +#~ msgstr "檢查您的連線" + +#~ msgctxt "@info:status Don't translate the XML tags !" +#~ msgid "The machine defined in profile {0} ({1}) doesn't match with your current machine ({2}), could not import it." +#~ msgstr "列印參數 {0} 內定義的機器({1})與你目前的機器({2})不匹配, 無法匯入。" + +#~ msgctxt "@info:status Don't translate the XML tags or !" +#~ msgid "Failed to import profile from {0}:" +#~ msgstr "從 {0} 匯入列印參數失敗:" + +#~ msgctxt "@window:title" +#~ msgid "Existing Connection" +#~ msgstr "目前連線中" + +#~ msgctxt "@message:text" +#~ msgid "This printer/group is already added to Cura. Please select another printer/group." +#~ msgstr "此印表機/群組已加入 Cura。請選擇另一個印表機/群組。" + +#~ msgctxt "@label" +#~ msgid "Enter the IP address or hostname of your printer on the network." +#~ msgstr "輸入印表機在網路上的 IP 位址或主機名稱。" + +#~ msgctxt "@info:tooltip" +#~ msgid "Connect to a printer" +#~ msgstr "連接到印表機" + +#~ msgctxt "@title" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定指南" + +#~ msgctxt "@info:tooltip" +#~ msgid "Zooming towards the mouse is not supported in the orthogonal perspective." +#~ msgstr "正交透視不支援游標縮放功能。" + +#~ msgid "Orthogonal" +#~ msgstr "正交" + +#~ msgctxt "description" +#~ msgid "Manages network connections to Ultimaker 3 printers." +#~ msgstr "管理與 Ultimaker 3 印表機的網絡連線。" + +#~ msgctxt "name" +#~ msgid "UM3 Network Connection" +#~ msgstr "UM3 網路連線" + +#~ msgctxt "description" +#~ msgid "Provides extra information and explanations about settings in Cura, with images and animations." +#~ msgstr "提供關於 Cura 設定額外的圖片動畫資訊和說明。" + +#~ msgctxt "name" +#~ msgid "Settings Guide" +#~ msgstr "設定指南" + +#~ msgctxt "@item:inmenu" +#~ msgid "Cura Settings Guide" +#~ msgstr "Cura 設定指南" + +#~ msgctxt "@info:generic" +#~ msgid "Settings have been changed to match the current availability of extruders: [%s]" +#~ msgstr "設定已改為與目前擠出機性能相匹配:[%s]" + +#~ msgctxt "@title:groupbox" +#~ msgid "User description" +#~ msgstr "使用者描述" + +#~ msgctxt "@info" +#~ msgid "These options are not available because you are monitoring a cloud printer." +#~ msgstr "由於你正在監控一台雲端印表機,因此無法使用這些選項。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "Go to Cura Connect" +#~ msgstr "前往 Cura Connect" + +#~ msgctxt "@info" +#~ msgid "All jobs are printed." +#~ msgstr "所有列印作業已完成。" + +#~ msgctxt "@label link to connect manager" +#~ msgid "View print history" +#~ msgstr "檢視列印歷史記錄" + +#~ msgctxt "@label" +#~ msgid "" +#~ "To print directly to your printer over the network, please make sure your printer is connected to the network using a network cable or by connecting your printer to your WIFI network. If you don't connect Cura with your printer, you can still use a USB drive to transfer g-code files to your printer.\n" +#~ "\n" +#~ "Select your printer from the list below:" +#~ msgstr "" +#~ "要透過網路列印,請確認你的印表機已透過網路線或 WIFI 連接到網路。若你無法讓 Cura 與印表機連線,你仍然可以使用 USB 裝置將 G-code 檔案傳輸到印表機。\n" +#~ "\n" +#~ "從以下清單中選擇你的印表機:" + +#~ msgctxt "@info" +#~ msgid "" +#~ "Please make sure your printer has a connection:\n" +#~ "- Check if the printer is turned on.\n" +#~ "- Check if the printer is connected to the network." +#~ msgstr "" +#~ "請確認你的印表機有連接:\n" +#~ "- 檢查印表機是否已打開。\n" +#~ "- 檢查印表機是否已連接到網路。" + +#~ msgctxt "@option:check" +#~ msgid "See only current build plate" +#~ msgstr "只顯示目前的列印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange to all build plates" +#~ msgstr "擺放到所有的列印平台" + +#~ msgctxt "@action:button" +#~ msgid "Arrange current build plate" +#~ msgstr "擺放到目前的列印平台" + +#~ msgctxt "description" +#~ msgid "Allows saving the resulting slice as an X3G file, to support printers that read this format (Malyan, Makerbot and other Sailfish-based printers)." +#~ msgstr "允許將切片結果儲存為 X3G 檔案,以支援讀取此格式的印表機(Malyan,Makerbot 和其他以 Sailfish 為原型的印表機)。" + +#~ msgctxt "name" +#~ msgid "X3GWriter" +#~ msgstr "X3G 寫入器" + +#~ msgctxt "description" +#~ msgid "Reads SVG files as toolpaths, for debugging printer movements." +#~ msgstr "讀取 SVG 檔案做為工具路徑,用於印表機移動的除錯。" + +#~ msgctxt "name" +#~ msgid "SVG Toolpath Reader" +#~ msgstr "SVG 工具路徑讀取器" + #~ msgctxt "@item:inmenu" #~ msgid "Changelog" #~ msgstr "更新日誌" @@ -6026,7 +6355,7 @@ msgstr "Cura 列印參數讀取器" #~ msgctxt "@action:menu" #~ msgid "Browse packages..." -#~ msgstr "瀏覽軟體包..." +#~ msgstr "瀏覽套件..." #~ msgctxt "@action:inmenu menubar:view" #~ msgid "Expand/Collapse Sidebar" @@ -6258,7 +6587,7 @@ msgstr "Cura 列印參數讀取器" #~ msgctxt "@label" #~ msgid "This printer is the host for a group of %1 Ultimaker 3 printers." -#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機。" +#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機。" #~ msgctxt "@label: arg 1 is group name" #~ msgid "%1 is not set up to host a group of connected Ultimaker 3 printers" @@ -7257,7 +7586,7 @@ msgstr "Cura 列印參數讀取器" #~ msgctxt "@label" #~ msgid "This printer is the host for a group of %1 connected Ultimaker 3 printers" -#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機" +#~ msgstr "這台印表機是 %1 台 Ultimaker 3 印表機群組的主機" #~ msgctxt "@label" #~ msgid "Completed on: " diff --git a/resources/i18n/zh_TW/fdmextruder.def.json.po b/resources/i18n/zh_TW/fdmextruder.def.json.po index f13a220a91..a3e4614bcd 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.1\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" "PO-Revision-Date: 2019-03-03 14:09+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" diff --git a/resources/i18n/zh_TW/fdmprinter.def.json.po b/resources/i18n/zh_TW/fdmprinter.def.json.po old mode 100755 new mode 100644 index 67d72621be..9a8da3fa81 --- 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.1\n" +"Project-Id-Version: Cura 4.3\n" "Report-Msgid-Bugs-To: r.dulek@ultimaker.com\n" -"POT-Creation-Date: 2019-05-14 12:48+0000\n" -"PO-Revision-Date: 2019-05-28 10:26+0200\n" +"POT-Creation-Date: 2019-11-05 13:13+0000\n" +"PO-Revision-Date: 2019-11-13 23:45+0800\n" "Last-Translator: Zhang Heh Ji \n" "Language-Team: Zhang Heh Ji \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.2.3\n" +"X-Generator: Poedit 2.2.4\n" #: fdmprinter.def.json msgctxt "machine_settings label" @@ -215,6 +215,16 @@ msgctxt "machine_heated_bed description" msgid "Whether the machine has a heated build plate present." msgstr "機器是否有熱床。" +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume label" +msgid "Has Build Volume Temperature Stabilization" +msgstr "具有列印空間溫度穩定性" + +#: fdmprinter.def.json +msgctxt "machine_heated_build_volume description" +msgid "Whether the machine is able to stabilize the build volume temperature." +msgstr "機器是否能夠穩定列印空間溫度。" + #: fdmprinter.def.json msgctxt "machine_center_is_zero label" msgid "Is Center Origin" @@ -337,7 +347,7 @@ msgstr "擠出機必須保持不活動以便噴頭冷卻的最短時間。擠出 #: fdmprinter.def.json msgctxt "machine_gcode_flavor label" -msgid "G-code Flavour" +msgid "G-code Flavor" msgstr "G-code 類型" #: fdmprinter.def.json @@ -1020,6 +1030,16 @@ msgctxt "bottom_layers description" msgid "The number of bottom layers. When calculated by the bottom thickness, this value is rounded to a whole number." msgstr "底部列印層數,當由底部厚度來計算時層數時,會四捨五入為一個整數值。" +#: fdmprinter.def.json +msgctxt "initial_bottom_layers label" +msgid "Initial Bottom Layers" +msgstr "起始底部層數" + +#: fdmprinter.def.json +msgctxt "initial_bottom_layers description" +msgid "The number of initial bottom layers, from the build-plate upwards. When calculated by the bottom thickness, this value is rounded to a whole number." +msgstr "從列印平台列印的起始底部列印層數,當由底部厚度來計算時層數時,會四捨五入為一個整數值。" + #: fdmprinter.def.json msgctxt "top_bottom_pattern label" msgid "Top/Bottom Pattern" @@ -1270,6 +1290,56 @@ msgctxt "z_seam_type option sharpest_corner" msgid "Sharpest Corner" msgstr "最尖銳的轉角" +#: fdmprinter.def.json +msgctxt "z_seam_position label" +msgid "Z Seam Position" +msgstr "Z 接縫位置" + +#: fdmprinter.def.json +msgctxt "z_seam_position description" +msgid "The position near where to start printing each part in a layer." +msgstr "每一層開始列印位置要靠近哪個方向。" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backleft" +msgid "Back Left" +msgstr "左後方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option back" +msgid "Back" +msgstr "後方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option backright" +msgid "Back Right" +msgstr "右後方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option right" +msgid "Right" +msgstr "右方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontright" +msgid "Front Right" +msgstr "右前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option front" +msgid "Front" +msgstr "前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option frontleft" +msgid "Front Left" +msgstr "左前方" + +#: fdmprinter.def.json +msgctxt "z_seam_position option left" +msgid "Left" +msgstr "左方" + #: fdmprinter.def.json msgctxt "z_seam_x label" msgid "Z Seam X" @@ -1297,8 +1367,8 @@ msgstr "接縫偏好設定" #: fdmprinter.def.json msgctxt "z_seam_corner description" -msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." -msgstr "控制接縫是否受模型輪廓上的角影響。'無'表示轉角不影響接縫位置。'隱藏接縫'表示使用盡可能使用凹角做為接縫位置。'暴露接縫'表示盡可能使用凸角做為接縫位置。'隱藏或暴露接縫'則同時使用凹角和凸角做為接縫位置。" +msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner. Smart Hiding allows both inside and outside corners, but chooses inside corners more frequently, if appropriate." +msgstr "控制模型輪廓上的轉角是否影響接縫的位置。「無」表示轉角不影響接縫位置。「隱藏接縫」讓接縫盡量出現在凹角。「暴露接縫」讓接縫盡量出現在凸角。「隱藏或暴露接縫」讓接縫盡量出現在凹角或凸角。「智慧隱藏」允許使用凹角或凸角,但如果狀況合適,會盡可能地選擇凹角。" #: fdmprinter.def.json msgctxt "z_seam_corner option z_seam_corner_none" @@ -1320,6 +1390,11 @@ msgctxt "z_seam_corner option z_seam_corner_any" msgid "Hide or Expose Seam" msgstr "隱藏或暴露接縫" +#: fdmprinter.def.json +msgctxt "z_seam_corner option z_seam_corner_weighted" +msgid "Smart Hiding" +msgstr "智慧隱藏" + #: fdmprinter.def.json msgctxt "z_seam_relative label" msgid "Z Seam Relative" @@ -1332,13 +1407,13 @@ msgstr "啟用時,Z 接縫座標為相對於各個部分中心的值。關閉 #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic label" -msgid "Ignore Small Z Gaps" -msgstr "忽略 Z 方向的小間隙" +msgid "No Skin in Z Gaps" +msgstr "Z 間隙無表層" #: fdmprinter.def.json msgctxt "skin_no_small_gaps_heuristic description" -msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." -msgstr "當模型具有微小的垂直間隙時,為了在這些間隙上產生頂部、底部等表面,會花費大約5%的額外的計算時間。勾選這個項目可以節省時間,但是間隙會消失,若要保留這些間隙,不要勾選這個項目。" +msgid "When the model has small vertical gaps of only a few layers, there should normally be skin around those layers in the narrow space. Enable this setting to not generate skin if the vertical gap is very small. This improves printing time and slicing time, but technically leaves infill exposed to the air." +msgstr "當模型具有僅幾層的小垂直間隙時,通常在那些層周圍的狹窄空間中應該存在表層。如果垂直間隙非常小,啟用此設定會停止自動產生表層。這樣可以縮短列印時間和切片時間,但技術上會使填充暴露出來。" #: fdmprinter.def.json msgctxt "skin_outline_count label" @@ -1357,8 +1432,8 @@ msgstr "啟用燙平" #: fdmprinter.def.json msgctxt "ironing_enabled description" -msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." -msgstr "再一次經過頂部表面,但不擠出耗材。這是為了進一步融化頂部的塑料,打造更平滑的表面。" +msgid "Go over the top surface one additional time, but this time extruding very little material. This is meant to melt the plastic on top further, creating a smoother surface. The pressure in the nozzle chamber is kept high so that the creases in the surface are filled with material." +msgstr "噴頭額外跑過上表層一次,但這次擠出的材料非常少。這是為了進一步融化頂部的塑料,創造更平滑的表面。噴頭中的壓力會保持很高,將表面中的細縫中填滿材料。" #: fdmprinter.def.json msgctxt "ironing_only_highest_layer label" @@ -1450,6 +1525,26 @@ msgctxt "jerk_ironing description" msgid "The maximum instantaneous velocity change while performing ironing." msgstr "執行燙平時的最大瞬時速度變化。" +#: fdmprinter.def.json +msgctxt "skin_overlap label" +msgid "Skin Overlap Percentage" +msgstr "表層重疊百分比" + +#: fdmprinter.def.json +msgctxt "skin_overlap description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "以表層線寬和最內壁線寬的百分比,調整內壁和表層中心線(的端點)之間的重疊量。輕微的重疊可以讓牆壁牢固地連接到表層。但要注意在表層和內壁線寬度相等的情形下, 超過 50% 的百分比可能導致表層越過內壁, 因為此時擠出機噴嘴的位置可能已經超過了內壁線條的中間。" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm label" +msgid "Skin Overlap" +msgstr "表層重疊" + +#: fdmprinter.def.json +msgctxt "skin_overlap_mm description" +msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." +msgstr "調整內壁和表層中心線(的端點)之間的重疊量。輕微的重疊可以讓牆壁牢固地連接到表層。但要注意在表層和內壁線寬度相等的情形下, 超過線寬一半的值可能導致表層越過內壁, 因為此時擠出機噴嘴的位置可能已經超過了內壁線條的中間。" + #: fdmprinter.def.json msgctxt "infill label" msgid "Infill" @@ -1615,6 +1710,16 @@ msgctxt "infill_offset_y description" msgid "The infill pattern is moved this distance along the Y axis." msgstr "填充樣式在 Y 軸方向平移此距離。" +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location label" +msgid "Randomize Infill Start" +msgstr "隨機填充起始位置" + +#: fdmprinter.def.json +msgctxt "infill_randomize_start_location description" +msgid "Randomize which infill line is printed first. This prevents one segment becoming the strongest, but it does so at the cost of an additional travel move." +msgstr "隨機選擇第一條填充線列印。 這可以防止強度集中在某一個部分,但會花費額外的空跑。" + #: fdmprinter.def.json msgctxt "infill_multiplier label" msgid "Infill Line Multiplier" @@ -1669,26 +1774,6 @@ msgctxt "infill_overlap_mm description" msgid "The amount of overlap between the infill and the walls. A slight overlap allows the walls to connect firmly to the infill." msgstr "填充和牆壁之間的重疊量。稍微重疊可讓各個壁與填充牢固連接。" -#: fdmprinter.def.json -msgctxt "skin_overlap label" -msgid "Skin Overlap Percentage" -msgstr "表層重疊百分比" - -#: fdmprinter.def.json -msgctxt "skin_overlap description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines, as a percentage of the line widths of the skin lines and the innermost wall. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any percentage over 50% may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "以表層線寬和最內壁線寬的百分比,調整內壁和表層中心線(的端點)之間的重疊量。輕微的重疊可以讓牆壁牢固地連接到表層。但要注意在表層和內壁線寬度相等的情形下, 超過 50% 的百分比可能導致表層越過內壁, 因為此時擠出機噴嘴的位置可能已經超過了內壁線條的中間。" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm label" -msgid "Skin Overlap" -msgstr "表層重疊" - -#: fdmprinter.def.json -msgctxt "skin_overlap_mm description" -msgid "Adjust the amount of overlap between the walls and (the endpoints of) the skin-centerlines. A slight overlap allows the walls to connect firmly to the skin. Note that, given an equal skin and wall line-width, any value over half the width of the wall may already cause any skin to go past the wall, because at that point the position of the nozzle of the skin-extruder may already reach past the middle of the wall." -msgstr "調整內壁和表層中心線(的端點)之間的重疊量。輕微的重疊可以讓牆壁牢固地連接到表層。但要注意在表層和內壁線寬度相等的情形下, 超過線寬一半的值可能導致表層越過內壁, 因為此時擠出機噴嘴的位置可能已經超過了內壁線條的中間。" - #: fdmprinter.def.json msgctxt "infill_wipe_dist label" msgid "Infill Wipe Distance" @@ -1876,8 +1961,8 @@ msgstr "列印空間溫度" #: fdmprinter.def.json 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,就不會加熱列印空間。" +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" @@ -1989,6 +2074,86 @@ msgctxt "material_shrinkage_percentage description" msgid "Shrinkage ratio in percentage." msgstr "收縮率百分比。" +#: fdmprinter.def.json +msgctxt "material_crystallinity label" +msgid "Crystalline Material" +msgstr "晶狀耗材" + +#: fdmprinter.def.json +msgctxt "material_crystallinity description" +msgid "Is this material the type that breaks off cleanly when heated (crystalline), or is it the type that produces long intertwined polymer chains (non-crystalline)?" +msgstr "這種耗材高溫時是脆斷的類型(晶狀),還是拉絲的類型(非晶狀)?" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position label" +msgid "Anti-ooze Retracted Position" +msgstr "防滲漏回抽位置" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retracted_position description" +msgid "How far the material needs to be retracted before it stops oozing." +msgstr "停止滲漏要回抽耗材多長的距離。" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed label" +msgid "Anti-ooze Retraction Speed" +msgstr "防滲漏回抽速度" + +#: fdmprinter.def.json +msgctxt "material_anti_ooze_retraction_speed description" +msgid "How fast the material needs to be retracted during a filament switch to prevent oozing." +msgstr "在耗材切換回抽時,需要多快的速度來防止滲漏。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position label" +msgid "Break Preparation Retracted Position" +msgstr "回抽切斷前位置" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_retracted_position description" +msgid "How far the filament can be stretched before it breaks, while heated." +msgstr "在加熱時,耗材在脆斷前可以拉伸多長的距離。" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed label" +msgid "Break Preparation Retraction Speed" +msgstr "回抽切斷前速度" + +#: fdmprinter.def.json +msgctxt "material_break_preparation_speed description" +msgid "How fast the filament needs to be retracted just before breaking it off in a retraction." +msgstr "回抽切斷前,耗材回抽的速度。" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position label" +msgid "Break Retracted Position" +msgstr "回抽切斷位置" + +#: fdmprinter.def.json +msgctxt "material_break_retracted_position description" +msgid "How far to retract the filament in order to break it cleanly." +msgstr "要讓耗材脆斷需要回抽長的距離。" + +#: fdmprinter.def.json +msgctxt "material_break_speed label" +msgid "Break Retraction Speed" +msgstr "回抽切斷速度" + +#: fdmprinter.def.json +msgctxt "material_break_speed description" +msgid "The speed at which to retract the filament in order to break it cleanly." +msgstr "要讓耗材脆斷要回抽多快。" + +#: fdmprinter.def.json +msgctxt "material_break_temperature label" +msgid "Break Temperature" +msgstr "切斷溫度" + +#: fdmprinter.def.json +msgctxt "material_break_temperature description" +msgid "The temperature at which the filament is broken for a clean break." +msgstr "要讓耗材脆斷所需的溫度。" + #: fdmprinter.def.json msgctxt "material_flow label" msgid "Flow" @@ -1999,6 +2164,126 @@ msgctxt "material_flow description" msgid "Flow compensation: the amount of material extruded is multiplied by this value." msgstr "流量補償:擠出的耗材量乘以此值。" +#: fdmprinter.def.json +msgctxt "wall_material_flow label" +msgid "Wall Flow" +msgstr "牆壁流量" + +#: fdmprinter.def.json +msgctxt "wall_material_flow description" +msgid "Flow compensation on wall lines." +msgstr "牆壁線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow label" +msgid "Outer Wall Flow" +msgstr "外壁流量" + +#: fdmprinter.def.json +msgctxt "wall_0_material_flow description" +msgid "Flow compensation on the outermost wall line." +msgstr "外壁線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow label" +msgid "Inner Wall(s) Flow" +msgstr "內壁流量" + +#: fdmprinter.def.json +msgctxt "wall_x_material_flow description" +msgid "Flow compensation on wall lines for all wall lines except the outermost one." +msgstr "最外層牆壁以外的牆壁線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "skin_material_flow label" +msgid "Top/Bottom Flow" +msgstr "頂部/底部流量" + +#: fdmprinter.def.json +msgctxt "skin_material_flow description" +msgid "Flow compensation on top/bottom lines." +msgstr "頂部/底部線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow label" +msgid "Top Surface Skin Flow" +msgstr "頂部表層流量" + +#: fdmprinter.def.json +msgctxt "roofing_material_flow description" +msgid "Flow compensation on lines of the areas at the top of the print." +msgstr "頂部區域線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "infill_material_flow label" +msgid "Infill Flow" +msgstr "填充流量" + +#: fdmprinter.def.json +msgctxt "infill_material_flow description" +msgid "Flow compensation on infill lines." +msgstr "填充線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow label" +msgid "Skirt/Brim Flow" +msgstr "外圍/邊緣流量" + +#: fdmprinter.def.json +msgctxt "skirt_brim_material_flow description" +msgid "Flow compensation on skirt or brim lines." +msgstr "外圍/邊緣線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_material_flow label" +msgid "Support Flow" +msgstr "支撐流量" + +#: fdmprinter.def.json +msgctxt "support_material_flow description" +msgid "Flow compensation on support structure lines." +msgstr "支撐結構線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow label" +msgid "Support Interface Flow" +msgstr "支撐介面流量" + +#: fdmprinter.def.json +msgctxt "support_interface_material_flow description" +msgid "Flow compensation on lines of support roof or floor." +msgstr "支撐頂板或底板線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow label" +msgid "Support Roof Flow" +msgstr "支撐頂板流量" + +#: fdmprinter.def.json +msgctxt "support_roof_material_flow description" +msgid "Flow compensation on support roof lines." +msgstr "支撐頂板線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow label" +msgid "Support Floor Flow" +msgstr "支撐底板流量" + +#: fdmprinter.def.json +msgctxt "support_bottom_material_flow description" +msgid "Flow compensation on support floor lines." +msgstr "支撐底板線條的流量補償。" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow label" +msgid "Prime Tower Flow" +msgstr "換料塔流量" + +#: fdmprinter.def.json +msgctxt "prime_tower_flow description" +msgid "Flow compensation on prime tower lines." +msgstr "換料塔線條的流量補償。" + #: fdmprinter.def.json msgctxt "material_flow_layer_0 label" msgid "Initial Layer Flow" @@ -2116,7 +2401,7 @@ msgstr "限制支撐回抽" #: fdmprinter.def.json msgctxt "limit_support_retractions description" -msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excessive stringing within the support structure." msgstr "當從支撐直線移動到另一支撐時,省略回抽。啟用此功能可節省列印時間,但會導致支撐內部有較多的牽絲。" #: fdmprinter.def.json @@ -2169,6 +2454,16 @@ msgctxt "switch_extruder_prime_speed description" msgid "The speed at which the filament is pushed back after a nozzle switch retraction." msgstr "噴頭切換回抽後耗材被推回的速度。" +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount label" +msgid "Nozzle Switch Extra Prime Amount" +msgstr "噴頭切換額外裝填量" + +#: fdmprinter.def.json +msgctxt "switch_extruder_extra_prime_amount description" +msgid "Extra material to prime after nozzle switching." +msgstr "噴頭切換後額外裝填的耗材量。" + #: fdmprinter.def.json msgctxt "speed label" msgid "Speed" @@ -2360,14 +2655,14 @@ msgid "The speed at which the skirt and brim are printed. Normally this is done msgstr "列印外圍和邊緣的速度。一般情况是以起始層速度列印這些部分,但有時候你可能想要以不同速度來列印外圍或邊緣。" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override label" -msgid "Maximum Z Speed" -msgstr "最大 Z 軸速度" +msgctxt "speed_z_hop label" +msgid "Z Hop Speed" +msgstr "Z 抬升速度" #: fdmprinter.def.json -msgctxt "max_feedrate_z_override description" -msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." -msgstr "列印平台移動的最大速度。將該值設為零會使列印為最大 Z 速度採用韌體預設值。" +msgctxt "speed_z_hop description" +msgid "The speed at which the vertical Z movement is made for Z Hops. This is typically lower than the print speed since the build plate or machine's gantry is harder to move." +msgstr "Z 抬升時 Z 軸垂直移動的速度。這通常低於列印速度,因為列印平台或機器的吊車較難移動。" #: fdmprinter.def.json msgctxt "speed_slowdown_layers label" @@ -2869,16 +3164,6 @@ msgctxt "travel_avoid_distance description" msgid "The distance between the nozzle and already printed parts when avoiding during travel moves." msgstr "噴頭和已列印部分之間在空跑時避開的距離。" -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position label" -msgid "Start Layers with the Same Part" -msgstr "在相同的位置列印新層" - -#: fdmprinter.def.json -msgctxt "start_layers_at_same_position description" -msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." -msgstr "每一層都在相同點附近開始列印,這樣在列印新的一層時,就不需要列印前一層結束時的那一小段區域。在突出部分和小零件有良好的效果,但會增加列印時間。" - #: fdmprinter.def.json msgctxt "layer_start_x label" msgid "Layer Start X" @@ -3285,14 +3570,14 @@ msgid "Distance between the printed initial layer support structure lines. This msgstr "支撐結構起始層線條之間的距離。該設定通過支撐密度計算。" #: fdmprinter.def.json -msgctxt "support_infill_angle label" -msgid "Support Infill Line Direction" +msgctxt "support_infill_angles label" +msgid "Support Infill Line Directions" msgstr "支撐填充線條方向" #: fdmprinter.def.json -msgctxt "support_infill_angle description" -msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." -msgstr "支撐填充樣式的方向。 支撐填充樣式的旋轉方向是在水平面上旋轉。" +msgctxt "support_infill_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angle 0 degrees." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度 0 度。" #: fdmprinter.def.json msgctxt "support_brim_enable label" @@ -3421,8 +3706,8 @@ msgstr "支撐結合距離" #: fdmprinter.def.json msgctxt "support_join_distance description" -msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." -msgstr "支撐結構間在 X/Y 方向的最大距離。當分離結構之間的距離小於此值時,這些結構將合併為一個。" +msgid "The maximum distance between support structures in the X/Y directions. When separate structures are closer together than this value, the structures merge into one." +msgstr "支撐結構間在 X/Y 方向的最大距離。當結構與結構靠近到小於此值時,這些結構將合併為一個。" #: fdmprinter.def.json msgctxt "support_offset label" @@ -3706,8 +3991,8 @@ msgstr "最小支撐介面面積" #: fdmprinter.def.json msgctxt "minimum_interface_area description" -msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." -msgstr "支撐介面區域的最小面積大小。面積小於此值的區域將不會產生支撐介面。" +msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撐介面區域的最小面積大小。面積小於此值的區域將列印一般支撐。" #: fdmprinter.def.json msgctxt "minimum_roof_area label" @@ -3716,8 +4001,8 @@ msgstr "最小支撐頂板面積" #: fdmprinter.def.json msgctxt "minimum_roof_area description" -msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "支撐頂板區域的最小面積大小。面積小於此值的區域將不會產生支撐頂板。" +msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撐頂板區域的最小面積大小。面積小於此值的區域將列印一般支撐。" #: fdmprinter.def.json msgctxt "minimum_bottom_area label" @@ -3726,8 +4011,8 @@ msgstr "最小支撐底板面積" #: fdmprinter.def.json msgctxt "minimum_bottom_area description" -msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." -msgstr "支撐底板區域的最小面積大小。面積小於此值的區域將不會產生支撐底板。" +msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will be printed as normal support." +msgstr "支撐底板區域的最小面積大小。面積小於此值的區域將列印一般支撐。" #: fdmprinter.def.json msgctxt "support_interface_offset label" @@ -3759,6 +4044,36 @@ msgctxt "support_bottom_offset description" msgid "Amount of offset applied to the floors of the support." msgstr "套用到支撐底板多邊形的偏移量。" +#: fdmprinter.def.json +msgctxt "support_interface_angles label" +msgid "Support Interface Line Directions" +msgstr "支撐介面線條方向" + +#: fdmprinter.def.json +msgctxt "support_interface_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度(預設 90 度,若介面較厚則以 45 度和 135 度交替)。" + +#: fdmprinter.def.json +msgctxt "support_roof_angles label" +msgid "Support Roof Line Directions" +msgstr "支撐頂板線條方向" + +#: fdmprinter.def.json +msgctxt "support_roof_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度(預設 90 度,若介面較厚則以 45 度和 135 度交替)。" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles label" +msgid "Support Floor Line Directions" +msgstr "支撐底板線條方向" + +#: fdmprinter.def.json +msgctxt "support_bottom_angles description" +msgid "A list of integer line directions to use. Elements from the list are used sequentially as the layers progress and when the end of the list is reached, it starts at the beginning again. The list items are separated by commas and the whole list is contained in square brackets. Default is an empty list which means use the default angles (alternates between 45 and 135 degrees if interfaces are quite thick or 90 degrees)." +msgstr "要使用的線條方向清單。清單中的項目隨著列印層增加順序使用,當到達清單的末端時,會再從頭開始。清單項目以逗號分隔,整個清單以中括號括住。預設值為空的清單,表示使用預設角度(預設 90 度,若介面較厚則以 45 度和 135 度交替)。" + #: fdmprinter.def.json msgctxt "support_fan_enable label" msgid "Fan Speed Override" @@ -3800,14 +4115,14 @@ msgid "The diameter of a special tower." msgstr "特殊塔的直徑。" #: fdmprinter.def.json -msgctxt "support_minimal_diameter label" -msgid "Minimum Diameter" -msgstr "最小直徑" +msgctxt "support_tower_maximum_supported_diameter label" +msgid "Maximum Tower-Supported Diameter" +msgstr "最大塔型支撐直徑" #: fdmprinter.def.json -msgctxt "support_minimal_diameter description" -msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." -msgstr "小區域中支撐塔的 X/Y 軸方向最小直徑。" +msgctxt "support_tower_maximum_supported_diameter description" +msgid "Maximum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +msgstr "塔型支撐使用的區域在 X/Y 方向的最大直徑。" #: fdmprinter.def.json msgctxt "support_tower_roof_angle label" @@ -4303,16 +4618,6 @@ msgctxt "prime_tower_enable description" msgid "Print a tower next to the print which serves to prime the material after each nozzle switch." msgstr "在列印件旁邊印一個塔,用在每次切換噴頭後填充耗材。" -#: fdmprinter.def.json -msgctxt "prime_tower_circular label" -msgid "Circular Prime Tower" -msgstr "圓型換料塔" - -#: fdmprinter.def.json -msgctxt "prime_tower_circular description" -msgid "Make the prime tower as a circular shape." -msgstr "將換料塔印成圓型。" - #: fdmprinter.def.json msgctxt "prime_tower_size label" msgid "Prime Tower Size" @@ -4353,16 +4658,6 @@ msgctxt "prime_tower_position_y description" msgid "The y coordinate of the position of the prime tower." msgstr "換料塔位置的 Y 座標。" -#: fdmprinter.def.json -msgctxt "prime_tower_flow label" -msgid "Prime Tower Flow" -msgstr "換料塔流量" - -#: fdmprinter.def.json -msgctxt "prime_tower_flow description" -msgid "Flow compensation: the amount of material extruded is multiplied by this value." -msgstr "流量補償:擠出的耗材量乘以此值。" - #: fdmprinter.def.json msgctxt "prime_tower_wipe_enabled label" msgid "Wipe Inactive Nozzle on Prime Tower" @@ -4503,6 +4798,36 @@ msgctxt "remove_empty_first_layers description" msgid "Remove empty layers beneath the first printed layer if they are present. Disabling this setting can cause empty first layers if the Slicing Tolerance setting is set to Exclusive or Middle." msgstr "如果可列印的第一層下方有空的層,將其移除。假如「切片公差」設定為「排除」或「中間」,關閉此設定可能會導致空的第一層。" +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution label" +msgid "Maximum Resolution" +msgstr "最高解析度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_resolution description" +msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." +msgstr "切片後線段的最小尺寸。 如果你增加此設定值,網格的解析度將較低。 這允許印表機保持處理 G-code 的速度,並通過移除無法處理的網格細節來增加切片速度。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution label" +msgid "Maximum Travel Resolution" +msgstr "最大空跑解析度" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_travel_resolution description" +msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." +msgstr "切片後空跑線段的最小尺寸。如果你增加此設定值,空跑移動時的轉角較不圓滑。這允許印表機快速的處理 G-code,但可能造成噴頭迴避模型時較不精確。" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation label" +msgid "Maximum Deviation" +msgstr "最大偏差值" + +#: fdmprinter.def.json +msgctxt "meshfix_maximum_deviation description" +msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller. Maximum Deviation is a limit for Maximum Resolution, so if the two conflict the Maximum Deviation will always be held true." +msgstr "降低「最高解析度」設定時允許的最大偏差範圍。假如你增加這個設定值,列印精度會降低,但 G-code 會較小。最大偏差是最高解析度的限制,所以當兩者衝突時,會以最大偏差成立為優先。" + #: fdmprinter.def.json msgctxt "blackmagic label" msgid "Special Modes" @@ -4665,7 +4990,7 @@ msgstr "平滑螺旋輪廓" #: fdmprinter.def.json msgctxt "smooth_spiralized_contours description" -msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." msgstr "平滑螺旋輪廓可以減少 Z 縫的出現(Z 縫應在列印品上幾乎看不到,但在分層檢視中仍然可見)。請注意,平滑操作將傾向於模糊精細的表面細節。" #: fdmprinter.def.json @@ -4878,36 +5203,6 @@ msgctxt "minimum_polygon_circumference description" msgid "Polygons in sliced layers that have a circumference smaller than this amount will be filtered out. Lower values lead to higher resolution mesh at the cost of slicing time. It is meant mostly for high resolution SLA printers and very tiny 3D models with a lot of details." msgstr "切片層中周長小於此值的多邊形將被過濾掉。設定較低的值會花費較多的切片時間,以獲得較高解析度的網格。它主要用於高解析度的 SLA 印表機和具有大量細節的微小 3D 模型。" -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution label" -msgid "Maximum Resolution" -msgstr "最高解析度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_resolution description" -msgid "The minimum size of a line segment after slicing. If you increase this, the mesh will have a lower resolution. This may allow the printer to keep up with the speed it has to process g-code and will increase slice speed by removing details of the mesh that it can't process anyway." -msgstr "切片後線段的最小尺寸。 如果你增加此設定值,網格的解析度將較低。 這允許印表機保持處理 G-code 的速度,並通過移除無法處理的網格細節來增加切片速度。" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution label" -msgid "Maximum Travel Resolution" -msgstr "最大空跑解析度" - -#: fdmprinter.def.json -msgctxt "meshfix_maximum_travel_resolution description" -msgid "The minimum size of a travel line segment after slicing. If you increase this, the travel moves will have less smooth corners. This may allow the printer to keep up with the speed it has to process g-code, but it may cause model avoidance to become less accurate." -msgstr "切片後空跑線段的最小尺寸。如果你增加此設定值,空跑移動時的轉角較不圓滑。這允許印表機快速的處理 G-code,但可能造成噴頭迴避模型時較不精確。" - -#: fdmprinter.def.json -msgctxt "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" @@ -5048,16 +5343,6 @@ msgctxt "coasting_speed description" msgid "The speed by which to move during coasting, relative to the speed of the extrusion path. A value slightly under 100% is advised, since during the coasting move the pressure in the bowden tube drops." msgstr "滑行期間相對於擠出路徑的移動速度。建議採用略低於 100% 的值,因為在滑行移動期間喉管中的壓力會下降。" -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation label" -msgid "Alternate Skin Rotation" -msgstr "交替表層旋轉" - -#: fdmprinter.def.json -msgctxt "skin_alternate_rotation description" -msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." -msgstr "交替列印頂部/底部層的方向。通常它們只進行對角線列印。此設定添加純 X 和純 Y 方向。" - #: fdmprinter.def.json msgctxt "cross_infill_pocket_size label" msgid "Cross 3D Pocket Size" @@ -5165,8 +5450,8 @@ msgstr "啟用錐形支撐" #: fdmprinter.def.json msgctxt "support_conical_enabled description" -msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." -msgstr "實驗性功能: 讓底部的支撐區域小於突出部分的支撐區域。" +msgid "Make support areas smaller at the bottom than at the overhang." +msgstr "讓底部的支撐區域小於突出部分的支撐區域。" #: fdmprinter.def.json msgctxt "support_conical_angle label" @@ -5230,23 +5515,23 @@ msgstr "在每個線條部分改變的隨機點之間的平均距離。注意, #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset label" -msgid "Flow rate compensation max extrusion offset" -msgstr "流量補償的最大擠出偏移量" +msgid "Flow Rate Compensation Max Extrusion Offset" +msgstr "流速補償的最大擠出偏移量" #: fdmprinter.def.json msgctxt "flow_rate_max_extrusion_offset description" -msgid "The maximum distance in mm to compensate." -msgstr "最大補償距離(以毫米為單位)。" +msgid "The maximum distance in mm to move the filament to compensate for changes in flow rate." +msgstr "流速補償時耗材可移動的最大距離(以毫米為單位)。" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor label" -msgid "Flow rate compensation factor" -msgstr "流量補償因子" +msgid "Flow Rate Compensation Factor" +msgstr "流速補償係數" #: fdmprinter.def.json msgctxt "flow_rate_extrusion_offset_factor description" -msgid "The multiplication factor for the flow rate -> distance translation." -msgstr "流量倍率 -> 移動距離。" +msgid "How far to move the filament in order to compensate for changes in flow rate, as a percentage of how far the filament would move in one second of extrusion." +msgstr "為了補償流速變化,耗材所移動的距離,以耗材一秒內擠出距離的百分比表示。" #: fdmprinter.def.json msgctxt "wireframe_enabled label" @@ -5539,13 +5824,13 @@ msgstr "下一列印層與前一列印層的層高差。" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold label" -msgid "Adaptive Layers Threshold" -msgstr "適應性層高門檻值" +msgid "Adaptive Layers Topography Size" +msgstr "適應性層高地形尺寸" #: fdmprinter.def.json msgctxt "adaptive_layer_height_threshold description" -msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." -msgstr "決定是否使用較小層高的門檻值。此值會與一層中最陡坡度的 tan 值做比較。" +msgid "Target horizontal distance between two adjacent layers. Reducing this setting causes thinner layers to be used to bring the edges of the layers closer together." +msgstr "兩個相鄰層之間的目標水平距離。 減少此設定將導致使用較薄的層高以使各層的邊緣更靠近。" #: fdmprinter.def.json msgctxt "wall_overhang_angle label" @@ -5554,8 +5839,8 @@ msgstr "突出牆壁角度" #: fdmprinter.def.json msgctxt "wall_overhang_angle description" -msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." -msgstr "牆壁突出的角度大於此值時,將使用突出牆壁的設定列印。當此值設定為 90 時,所有牆壁都不會被當作突出牆壁。" +msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging. Overhang that gets supported by support will not be treated as overhang either." +msgstr "牆壁突出的角度大於此值時,將使用突出牆壁的設定列印。當此值設定為 90 時,所有牆壁都不會被當作突出牆壁。被支撐的突出牆壁也將不不會被當作突出牆壁。" #: fdmprinter.def.json msgctxt "wall_overhang_speed_factor label" @@ -5907,6 +6192,46 @@ msgctxt "wipe_move_distance description" msgid "The distance to move the head back and forth across the brush." msgstr "將噴頭來回移動經過刷子的距離。" +#: fdmprinter.def.json +msgctxt "small_hole_max_size label" +msgid "Small Hole Max Size" +msgstr "細部模式最大直徑" + +#: fdmprinter.def.json +msgctxt "small_hole_max_size description" +msgid "Holes and part outlines with a diameter smaller than this will be printed using Small Feature Speed." +msgstr "小於此直徑的孔洞和零件輪廓,使用細部模式速度列印。" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length label" +msgid "Small Feature Max Length" +msgstr "細部模式最大長度" + +#: fdmprinter.def.json +msgctxt "small_feature_max_length description" +msgid "Feature outlines that are shorter than this length will be printed using Small Feature Speed." +msgstr "輪廓長度小於此值時,使用細部模式速度列印。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor label" +msgid "Small Feature Speed" +msgstr "細部模式速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor description" +msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "細部模式將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 label" +msgid "Small Feature Initial Layer Speed" +msgstr "細部模式起始層速度" + +#: fdmprinter.def.json +msgctxt "small_feature_speed_factor_0 description" +msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhesion and accuracy." +msgstr "第一層的細部模式將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + #: fdmprinter.def.json msgctxt "command_line_settings label" msgid "Command Line Settings" @@ -5967,6 +6292,150 @@ msgctxt "mesh_rotation_matrix description" msgid "Transformation matrix to be applied to the model when loading it from file." msgstr "在將模型從檔案中載入時套用在模型上的轉換矩陣。" +#~ msgctxt "minimum_interface_area description" +#~ msgid "Minimum area size for support interface polygons. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撐介面區域的最小面積大小。面積小於此值的區域將不會產生支撐介面。" + +#~ msgctxt "minimum_roof_area description" +#~ msgid "Minimum area size for the roofs of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撐頂板區域的最小面積大小。面積小於此值的區域將不會產生支撐頂板。" + +#~ msgctxt "minimum_bottom_area description" +#~ msgid "Minimum area size for the floors of the support. Polygons which have an area smaller than this value will not be generated." +#~ msgstr "支撐底板區域的最小面積大小。面積小於此值的區域將不會產生支撐底板。" + +#~ msgctxt "skin_alternate_rotation label" +#~ msgid "Alternate Skin Rotation" +#~ msgstr "交替表層旋轉" + +#~ msgctxt "skin_alternate_rotation description" +#~ msgid "Alternate the direction in which the top/bottom layers are printed. Normally they are printed diagonally only. This setting adds the X-only and Y-only directions." +#~ msgstr "交替列印頂部/底部層的方向。通常它們只進行對角線列印。此設定添加純 X 和純 Y 方向。" + +#~ msgctxt "flow_rate_max_extrusion_offset label" +#~ msgid "Flow rate compensation max extrusion offset" +#~ msgstr "流量補償的最大擠出偏移量" + +#~ msgctxt "flow_rate_max_extrusion_offset description" +#~ msgid "The maximum distance in mm to compensate." +#~ msgstr "最大補償距離(以毫米為單位)。" + +#~ msgctxt "flow_rate_extrusion_offset_factor label" +#~ msgid "Flow rate compensation factor" +#~ msgstr "流量補償因子" + +#~ msgctxt "flow_rate_extrusion_offset_factor description" +#~ msgid "The multiplication factor for the flow rate -> distance translation." +#~ msgstr "流量倍率 -> 移動距離。" + +#~ msgctxt "adaptive_layer_height_threshold label" +#~ msgid "Adaptive Layers Threshold" +#~ msgstr "適應性層高門檻值" + +#~ msgctxt "adaptive_layer_height_threshold description" +#~ msgid "Threshold whether to use a smaller layer or not. This number is compared to the tan of the steepest slope in a layer." +#~ msgstr "決定是否使用較小層高的門檻值。此值會與一層中最陡坡度的 tan 值做比較。" + +#~ msgctxt "wall_overhang_angle description" +#~ msgid "Walls that overhang more than this angle will be printed using overhanging wall settings. When the value is 90, no walls will be treated as overhanging." +#~ msgstr "牆壁突出的角度大於此值時,將使用突出牆壁的設定列印。當此值設定為 90 時,所有牆壁都不會被當作突出牆壁。" + +#~ msgctxt "small_feature_speed_factor description" +#~ msgid "Small features will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "細部模式將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + +#~ msgctxt "small_feature_speed_factor_0 label" +#~ msgid "First Layer Speed" +#~ msgstr "第一層速度" + +#~ msgctxt "small_feature_speed_factor_0 description" +#~ msgid "Small features on the first layer will be printed at this percentage of their normal print speed. Slower printing can help with adhestion and accuracy." +#~ msgstr "細部模式第一層將以正常列印速度的此百分比值列印。 較慢的列印有助於黏合和精度。" + +#~ msgctxt "ironing_enabled description" +#~ msgid "Go over the top surface one additional time, but without extruding material. This is meant to melt the plastic on top further, creating a smoother surface." +#~ msgstr "再一次經過頂部表面,但不擠出耗材。這是為了進一步融化頂部的塑料,打造更平滑的表面。" + +#~ msgctxt "start_layers_at_same_position label" +#~ msgid "Start Layers with the Same Part" +#~ msgstr "在相同的位置列印新層" + +#~ msgctxt "start_layers_at_same_position description" +#~ msgid "In each layer start with printing the object near the same point, so that we don't start a new layer with printing the piece which the previous layer ended with. This makes for better overhangs and small parts, but increases printing time." +#~ msgstr "每一層都在相同點附近開始列印,這樣在列印新的一層時,就不需要列印前一層結束時的那一小段區域。在突出部分和小零件有良好的效果,但會增加列印時間。" + +#~ msgctxt "support_infill_angles description" +#~ msgid "Orientation of the infill pattern for supports. The support infill pattern is rotated in the horizontal plane." +#~ msgstr "支撐填充樣式的方向。 支撐填充樣式的旋轉方向是在水平面上旋轉。" + +#~ msgctxt "meshfix_maximum_deviation description" +#~ msgid "The maximum deviation allowed when reducing the resolution for the Maximum Resolution setting. If you increase this, the print will be less accurate, but the g-code will be smaller." +#~ msgstr "「最高解析度」設定在降低解析度時允許的最大偏差。如果增加此值,列印精度會較差但 G-code 會較小。" + +#~ msgctxt "machine_gcode_flavor label" +#~ msgid "G-code Flavour" +#~ msgstr "G-code 類型" + +#~ msgctxt "z_seam_corner description" +#~ msgid "Control whether corners on the model outline influence the position of the seam. None means that corners have no influence on the seam position. Hide Seam makes the seam more likely to occur on an inside corner. Expose Seam makes the seam more likely to occur on an outside corner. Hide or Expose Seam makes the seam more likely to occur at an inside or outside corner." +#~ msgstr "控制接縫是否受模型輪廓上的角影響。'無'表示轉角不影響接縫位置。'隱藏接縫'表示使用盡可能使用凹角做為接縫位置。'暴露接縫'表示盡可能使用凸角做為接縫位置。'隱藏或暴露接縫'則同時使用凹角和凸角做為接縫位置。" + +#~ msgctxt "skin_no_small_gaps_heuristic label" +#~ msgid "Ignore Small Z Gaps" +#~ msgstr "忽略 Z 方向的小間隙" + +#~ msgctxt "skin_no_small_gaps_heuristic description" +#~ msgid "When the model has small vertical gaps, about 5% extra computation time can be spent on generating top and bottom skin in these narrow spaces. In such case, disable the setting." +#~ msgstr "當模型具有微小的垂直間隙時,為了在這些間隙上產生頂部、底部等表面,會花費大約5%的額外的計算時間。勾選這個項目可以節省時間,但是間隙會消失,若要保留這些間隙,不要勾選這個項目。" + +#~ msgctxt "build_volume_temperature description" +#~ msgid "The temperature used for build volume. If this is 0, the build volume temperature will not be adjusted." +#~ msgstr "設定列印空間的溫度。如果設定為 0,就不會加熱列印空間。" + +#~ msgctxt "limit_support_retractions description" +#~ msgid "Omit retraction when moving from support to support in a straight line. Enabling this setting saves print time, but can lead to excesive stringing within the support structure." +#~ msgstr "當從支撐直線移動到另一支撐時,省略回抽。啟用此功能可節省列印時間,但會導致支撐內部有較多的牽絲。" + +#~ msgctxt "max_feedrate_z_override label" +#~ msgid "Maximum Z Speed" +#~ msgstr "最大 Z 軸速度" + +#~ msgctxt "max_feedrate_z_override description" +#~ msgid "The maximum speed with which the build plate is moved. Setting this to zero causes the print to use the firmware defaults for the maximum z speed." +#~ msgstr "列印平台移動的最大速度。將該值設為零會使列印為最大 Z 速度採用韌體預設值。" + +#~ msgctxt "support_join_distance description" +#~ msgid "The maximum distance between support structures in the X/Y directions. When seperate structures are closer together than this value, the structures merge into one." +#~ msgstr "支撐結構間在 X/Y 方向的最大距離。當分離結構之間的距離小於此值時,這些結構將合併為一個。" + +#~ msgctxt "support_minimal_diameter label" +#~ msgid "Minimum Diameter" +#~ msgstr "最小直徑" + +#~ msgctxt "support_minimal_diameter description" +#~ msgid "Minimum diameter in the X/Y directions of a small area which is to be supported by a specialized support tower." +#~ msgstr "小區域中支撐塔的 X/Y 軸方向最小直徑。" + +#~ msgctxt "prime_tower_circular label" +#~ msgid "Circular Prime Tower" +#~ msgstr "圓型換料塔" + +#~ msgctxt "prime_tower_circular description" +#~ msgid "Make the prime tower as a circular shape." +#~ msgstr "將換料塔印成圓型。" + +#~ msgctxt "prime_tower_flow description" +#~ msgid "Flow compensation: the amount of material extruded is multiplied by this value." +#~ msgstr "流量補償:擠出的耗材量乘以此值。" + +#~ msgctxt "smooth_spiralized_contours description" +#~ msgid "Smooth the spiralized contours to reduce the visibility of the Z seam (the Z-seam should be barely visible on the print but will still be visible in the layer view). Note that smoothing will tend to blur fine surface details." +#~ msgstr "平滑螺旋輪廓可以減少 Z 縫的出現(Z 縫應在列印品上幾乎看不到,但在分層檢視中仍然可見)。請注意,平滑操作將傾向於模糊精細的表面細節。" + +#~ msgctxt "support_conical_enabled description" +#~ msgid "Experimental feature: Make support areas smaller at the bottom than at the overhang." +#~ msgstr "實驗性功能: 讓底部的支撐區域小於突出部分的支撐區域。" + #~ msgctxt "extruders_enabled_count label" #~ msgid "Number of Extruders that are enabled" #~ msgstr "已啟用擠出機的數量" diff --git a/resources/images/UltimakerS3backplate.png b/resources/images/UltimakerS3backplate.png new file mode 100644 index 0000000000..60897a30ec Binary files /dev/null and b/resources/images/UltimakerS3backplate.png differ diff --git a/resources/images/cura.png b/resources/images/cura.png index 4fef842ff4..2d6a75f571 100644 Binary files a/resources/images/cura.png and b/resources/images/cura.png differ diff --git a/resources/images/cura_enterprise.png b/resources/images/cura_enterprise.png new file mode 100644 index 0000000000..789e0ae215 Binary files /dev/null and b/resources/images/cura_enterprise.png differ diff --git a/resources/images/hellbot.png b/resources/images/hellbot.png new file mode 100644 index 0000000000..e39ac419dc Binary files /dev/null and b/resources/images/hellbot.png differ diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..7f2445d18e --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..a1d50aae0f --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..0f817ec515 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg new file mode 100644 index 0000000000..7cfc4d2248 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..26c5029924 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..61b24839c0 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..df562e7dd5 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..63aa092cf1 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..383f85c8c0 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..ecf95b0175 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..82fe5e807b --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..83f7004ecc --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..9ee22f9a8a --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..865c53e4e8 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..8fc12474f0 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..8f9be8a63d --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..36150f18a3 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..82b36cc9e3 --- /dev/null +++ b/resources/intent/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..1e7e808355 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..6aed5bf11a --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..acbccc4d08 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg new file mode 100644 index 0000000000..5d8095dbd4 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..a141830f80 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_abs +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..5f166c94f5 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_abs +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..558a14dd4b --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..d814866d39 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..6b60e07201 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..4d1a904d3f --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..b22b6ff4c2 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..b334b7f101 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg new file mode 100644 index 0000000000..d680a751a5 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print_Quick.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Quick +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = quick +quality_type = draft +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = =speed_print +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +speed_layer_0 = 20 +top_bottom_thickness = =wall_thickness +wall_thickness = =line_width * 2 +fill_perimeter_gaps = nowhere +infill_sparse_density = 15 +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +wall_line_width_x = =line_width diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg new file mode 100644 index 0000000000..57ab6a727e --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = fast +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg new file mode 100644 index 0000000000..26774b8162 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = fast +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg new file mode 100644 index 0000000000..a2968f5060 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_High_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = high +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg new file mode 100644 index 0000000000..a5f878bf4f --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality_Accurate.inst.cfg @@ -0,0 +1,34 @@ +[general] +version = 4 +name = Accurate +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +intent_category = engineering +quality_type = normal +material = generic_tough_pla +variant = AA 0.4 + +[values] +infill_line_width = =line_width +jerk_print = 30 +jerk_infill = =jerk_print +jerk_topbottom = =jerk_print +jerk_wall = =jerk_print +jerk_wall_0 = =jerk_wall +jerk_wall_x = =jerk_wall +jerk_layer_0 = 5 +line_width = =machine_nozzle_size +speed_print = 30 +speed_infill = =speed_print +speed_layer_0 = 20 +speed_topbottom = =speed_print +speed_wall = =speed_print +speed_wall_0 = =speed_wall +speed_wall_x = =speed_wall +top_bottom_thickness = =wall_thickness +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 +xy_offset = =- layer_height * 0.2 diff --git a/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg new file mode 100644 index 0000000000..01440a2a20 --- /dev/null +++ b/resources/intent/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Visual.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Visual +definition = ultimaker_s5 + +[metadata] +setting_version = 11 +type = intent +quality_type = normal +intent_category = visual +material = generic_tough_pla +variant = AA 0.4 + +[values] +speed_infill = 50 +wall_thickness = =wall_line_width * 3 +top_bottom_thickness = =wall_thickness diff --git a/resources/meshes/FelixPro2_platform.obj b/resources/meshes/FelixPro2_platform.obj new file mode 100644 index 0000000000..1d13cdd904 --- /dev/null +++ b/resources/meshes/FelixPro2_platform.obj @@ -0,0 +1,4485 @@ +# Blender v2.79 (sub 0) OBJ File: 'FelixPro2_platform.blend' +# www.blender.org +o Body1 +v 177.244446 31.941147 -22.999994 +v 177.244446 31.941143 -4.999995 +v 177.500000 30.000004 -22.999994 +v 177.500000 30.000000 -4.999995 +v 177.244446 28.058861 -22.999996 +v 177.244446 28.058857 -4.999995 +v 176.495193 26.250004 -22.999996 +v 176.495193 26.250000 -4.999996 +v 175.303299 24.696703 -22.999996 +v 175.303299 24.696699 -4.999996 +v 173.750000 23.504812 -22.999996 +v 173.750000 23.504808 -4.999996 +v 171.941147 22.755560 -22.999996 +v 171.941147 22.755556 -4.999996 +v 170.000000 22.500004 -22.999996 +v 170.000000 22.500000 -4.999996 +v 168.058853 22.755560 -22.999996 +v 168.058853 22.755556 -4.999996 +v 166.250000 23.504812 -22.999996 +v 166.250000 23.504808 -4.999996 +v 164.696701 24.696703 -22.999996 +v 164.696701 24.696699 -4.999996 +v 163.504807 26.250004 -22.999996 +v 163.504807 26.250000 -4.999996 +v 162.755554 28.058861 -22.999996 +v 162.755554 28.058857 -4.999995 +v 162.500000 30.000004 -22.999994 +v 162.500000 30.000000 -4.999995 +v 162.755554 31.941147 -22.999994 +v 162.755554 31.941143 -4.999995 +v 163.504807 33.750004 -22.999994 +v 163.504807 33.750000 -4.999994 +v 164.696701 35.303307 -22.999994 +v 164.696701 35.303303 -4.999994 +v 166.250000 36.495193 -22.999994 +v 166.250000 36.495190 -4.999994 +v 168.058853 37.244450 -22.999994 +v 168.058853 37.244446 -4.999994 +v 170.000000 37.500004 -22.999994 +v 170.000000 37.500000 -4.999994 +v 171.941147 37.244450 -22.999994 +v 171.941147 37.244446 -4.999994 +v 173.750000 36.495193 -22.999994 +v 173.750000 36.495190 -4.999994 +v 175.303299 35.303307 -22.999994 +v 175.303299 35.303303 -4.999994 +v 176.495193 33.750004 -22.999994 +v 176.495193 33.750000 -4.999994 +v 97.424881 121.941139 -22.999981 +v 97.424881 121.941139 -4.999980 +v 97.680435 120.000000 -22.999981 +v 97.680435 120.000000 -4.999980 +v 97.424881 118.058861 -22.999981 +v 97.424881 118.058861 -4.999981 +v 96.675629 116.250000 -22.999981 +v 96.675629 116.250000 -4.999981 +v 95.483734 114.696701 -22.999981 +v 95.483734 114.696701 -4.999981 +v 93.930435 113.504807 -22.999981 +v 93.930435 113.504807 -4.999981 +v 92.121582 112.755554 -22.999981 +v 92.121582 112.755554 -4.999981 +v 90.180435 112.500000 -22.999981 +v 90.180435 112.500000 -4.999982 +v 88.239296 112.755554 -22.999981 +v 88.239296 112.755554 -4.999981 +v 86.430435 113.504807 -22.999981 +v 86.430435 113.504807 -4.999981 +v 84.877136 114.696701 -22.999981 +v 84.877136 114.696701 -4.999981 +v 83.685249 116.250000 -22.999981 +v 83.685249 116.250000 -4.999981 +v 82.935989 118.058861 -22.999981 +v 82.935989 118.058861 -4.999981 +v 82.680435 120.000000 -22.999981 +v 82.680435 120.000000 -4.999980 +v 82.935989 121.941139 -22.999981 +v 82.935989 121.941139 -4.999980 +v 83.685249 123.750000 -22.999979 +v 83.685249 123.750000 -4.999980 +v 84.877136 125.303299 -22.999979 +v 84.877136 125.303299 -4.999979 +v 86.430435 126.495193 -22.999979 +v 86.430435 126.495193 -4.999979 +v 88.239296 127.244446 -22.999979 +v 88.239296 127.244446 -4.999979 +v 90.180435 127.500000 -22.999979 +v 90.180435 127.500000 -4.999979 +v 92.121582 127.244446 -22.999979 +v 92.121582 127.244446 -4.999979 +v 93.930435 126.495193 -22.999979 +v 93.930435 126.495193 -4.999979 +v 95.483734 125.303299 -22.999979 +v 95.483734 125.303299 -4.999979 +v 96.675629 123.750000 -22.999979 +v 96.675629 123.750000 -4.999980 +v 180.000000 20.000004 -22.999996 +v 160.000000 20.000004 -22.999996 +v 160.000000 49.896946 -22.999992 +v 105.938271 109.965530 -22.999983 +v 160.000000 190.103058 -22.999969 +v 173.750000 203.504807 -22.999968 +v 171.941147 202.755554 -22.999968 +v 175.303299 204.696701 -22.999968 +v 176.495193 206.250000 -22.999966 +v 177.244446 208.058853 -22.999966 +v 180.000000 220.000000 -22.999964 +v 102.087685 120.000000 -22.999981 +v 102.532974 116.372253 -22.999981 +v 103.842422 112.959900 -22.999981 +v 79.031021 109.965530 -22.999983 +v 76.935173 112.959900 -22.999981 +v 75.625732 116.372253 -22.999981 +v 75.180435 120.000000 -22.999981 +v 75.625732 123.627747 -22.999979 +v 76.935173 127.040100 -22.999979 +v 79.031021 130.034470 -22.999979 +v 105.938271 130.034470 -22.999979 +v 160.000000 220.000000 -22.999964 +v 103.842422 127.040100 -22.999979 +v 102.532974 123.627747 -22.999979 +v 162.500000 210.000000 -22.999966 +v 162.755554 211.941147 -22.999966 +v 170.000000 217.500000 -22.999964 +v 171.941147 217.244446 -22.999964 +v 173.750000 216.495193 -22.999966 +v 177.244446 211.941147 -22.999966 +v 177.500000 210.000000 -22.999966 +v 170.000000 202.500000 -22.999968 +v 168.058853 202.755554 -22.999968 +v 166.250000 203.504807 -22.999968 +v 164.696701 204.696701 -22.999968 +v 163.504807 206.250000 -22.999966 +v 162.755554 208.058853 -22.999966 +v 163.504807 213.750000 -22.999966 +v 164.696701 215.303299 -22.999966 +v 166.250000 216.495193 -22.999966 +v 168.058853 217.244446 -22.999964 +v 175.303299 215.303299 -22.999966 +v 176.495193 213.750000 -22.999966 +v 160.000000 220.000000 -29.999964 +v 134.000000 220.000000 -29.999964 +v 160.017288 220.019211 -30.195053 +v 134.000000 220.034073 -30.258783 +v 160.068512 220.076126 -30.382647 +v 134.000000 220.133972 -30.499964 +v 160.151672 220.168533 -30.555534 +v 134.000000 220.292892 -30.707071 +v 160.263611 220.292892 -30.707071 +v 160.399994 220.444427 -30.831434 +v 134.000000 220.500000 -30.865990 +v 160.555588 220.617310 -30.923843 +v 134.000000 220.741180 -30.965889 +v 160.724426 220.804916 -30.980749 +v 134.000000 221.000000 -30.999964 +v 160.899994 221.000000 -30.999964 +v 125.000000 229.000000 -29.999962 +v 125.034073 229.000000 -30.258781 +v 125.306671 226.670624 -29.999964 +v 125.339584 226.679443 -30.258783 +v 126.205772 224.500000 -29.999964 +v 126.235283 224.517044 -30.258783 +v 127.636040 222.636032 -29.999964 +v 127.660133 222.660126 -30.258783 +v 129.500000 221.205765 -29.999964 +v 129.517044 221.235275 -30.258783 +v 131.670624 220.306671 -29.999964 +v 131.679443 220.339584 -30.258783 +v 131.705307 220.436081 -30.499964 +v 131.746429 220.589584 -30.707071 +v 131.800034 220.789627 -30.865990 +v 131.862457 221.022598 -30.965889 +v 131.929443 221.272598 -30.999964 +v 125.133972 229.000000 -30.499962 +v 125.436073 226.705307 -30.499964 +v 126.321800 224.566986 -30.499964 +v 127.730774 222.730774 -30.499964 +v 129.566986 221.321793 -30.499964 +v 125.292892 229.000000 -30.707069 +v 125.589584 226.746429 -30.707071 +v 126.459427 224.646454 -30.707071 +v 127.843147 222.843140 -30.707071 +v 129.646454 221.459427 -30.707071 +v 125.500000 229.000000 -30.865988 +v 125.789627 226.800034 -30.865990 +v 126.638786 224.750000 -30.865990 +v 127.989594 222.989594 -30.865990 +v 129.750000 221.638779 -30.865990 +v 125.741180 229.000000 -30.965887 +v 126.022591 226.862457 -30.965889 +v 126.847656 224.870590 -30.965889 +v 128.160126 223.160126 -30.965889 +v 129.870590 221.847656 -30.965889 +v 126.000000 229.000000 -30.999962 +v 126.272591 226.929443 -30.999964 +v 127.071800 225.000000 -30.999964 +v 128.343140 223.343140 -30.999964 +v 130.000000 222.071793 -30.999964 +v 125.000000 251.000000 -29.999960 +v 125.034073 251.000000 -30.258780 +v 125.133972 251.000000 -30.499960 +v 125.292892 251.000000 -30.707067 +v 125.500000 251.000000 -30.865986 +v 125.741180 251.000000 -30.965885 +v 126.000000 251.000000 -30.999960 +v 134.000000 260.000000 -29.999958 +v 134.000000 259.965912 -30.258778 +v 131.670624 259.693329 -29.999958 +v 131.679443 259.660431 -30.258778 +v 129.500000 258.794220 -29.999958 +v 129.517044 258.764709 -30.258778 +v 127.636040 257.363953 -29.999958 +v 127.660133 257.339874 -30.258778 +v 126.205772 255.500000 -29.999958 +v 126.235283 255.482956 -30.258778 +v 125.306671 253.329376 -29.999958 +v 125.339584 253.320557 -30.258778 +v 125.436073 253.294693 -30.499958 +v 125.589584 253.253571 -30.707066 +v 125.789627 253.199966 -30.865984 +v 126.022591 253.137543 -30.965883 +v 126.272591 253.070557 -30.999958 +v 134.000000 259.866028 -30.499958 +v 131.705307 259.563934 -30.499958 +v 129.566986 258.678192 -30.499958 +v 127.730774 257.269226 -30.499958 +v 126.321800 255.433014 -30.499958 +v 134.000000 259.707092 -30.707066 +v 131.746429 259.410431 -30.707066 +v 129.646454 258.540588 -30.707066 +v 127.843147 257.156860 -30.707066 +v 126.459427 255.353546 -30.707066 +v 134.000000 259.500000 -30.865984 +v 131.800034 259.210358 -30.865984 +v 129.750000 258.361206 -30.865984 +v 127.989594 257.010406 -30.865984 +v 126.638786 255.250000 -30.865984 +v 134.000000 259.258820 -30.965883 +v 131.862457 258.977417 -30.965883 +v 129.870590 258.152344 -30.965883 +v 128.160126 256.839874 -30.965883 +v 126.847656 255.129410 -30.965883 +v 134.000000 259.000000 -30.999958 +v 131.929443 258.727417 -30.999958 +v 130.000000 257.928192 -30.999958 +v 128.343140 256.656860 -30.999958 +v 127.071800 255.000000 -30.999958 +v 186.000000 260.000000 -29.999958 +v 186.000000 259.965912 -30.258778 +v 186.000000 259.866028 -30.499958 +v 186.000000 259.707092 -30.707066 +v 186.000000 259.500000 -30.865984 +v 186.000000 259.258820 -30.965883 +v 186.000000 259.000000 -30.999958 +v 195.000000 251.000000 -29.999960 +v 194.965927 251.000000 -30.258780 +v 194.693329 253.329376 -29.999958 +v 194.660416 253.320557 -30.258778 +v 193.794235 255.500000 -29.999958 +v 193.764725 255.482956 -30.258778 +v 192.363968 257.363953 -29.999958 +v 192.339874 257.339874 -30.258778 +v 190.500000 258.794220 -29.999958 +v 190.482956 258.764709 -30.258778 +v 188.329376 259.693329 -29.999958 +v 188.320557 259.660431 -30.258778 +v 188.294693 259.563934 -30.499958 +v 188.253571 259.410431 -30.707066 +v 188.199966 259.210358 -30.865984 +v 188.137543 258.977417 -30.965883 +v 188.070557 258.727417 -30.999958 +v 194.866028 251.000000 -30.499960 +v 194.563919 253.294693 -30.499958 +v 193.678207 255.433014 -30.499958 +v 192.269226 257.269226 -30.499958 +v 190.433014 258.678192 -30.499958 +v 194.707108 251.000000 -30.707067 +v 194.410416 253.253571 -30.707066 +v 193.540573 255.353546 -30.707066 +v 192.156860 257.156860 -30.707066 +v 190.353546 258.540588 -30.707066 +v 194.500000 251.000000 -30.865986 +v 194.210373 253.199966 -30.865984 +v 193.361221 255.250000 -30.865984 +v 192.010406 257.010406 -30.865984 +v 190.250000 258.361206 -30.865984 +v 194.258820 251.000000 -30.965885 +v 193.977402 253.137543 -30.965883 +v 193.152344 255.129410 -30.965883 +v 191.839874 256.839874 -30.965883 +v 190.129410 258.152344 -30.965883 +v 194.000000 251.000000 -30.999960 +v 193.727402 253.070557 -30.999958 +v 192.928207 255.000000 -30.999958 +v 191.656860 256.656860 -30.999958 +v 190.000000 257.928192 -30.999958 +v 195.000000 229.000000 -29.999962 +v 194.965927 229.000000 -30.258781 +v 194.866028 229.000000 -30.499962 +v 194.707108 229.000000 -30.707069 +v 194.500000 229.000000 -30.865988 +v 194.258820 229.000000 -30.965887 +v 194.000000 229.000000 -30.999962 +v 186.000000 220.000000 -29.999964 +v 186.000000 220.034073 -30.258783 +v 188.329376 220.306671 -29.999964 +v 188.320557 220.339584 -30.258783 +v 190.500000 221.205765 -29.999964 +v 190.482956 221.235275 -30.258783 +v 192.363968 222.636032 -29.999964 +v 192.339874 222.660126 -30.258783 +v 193.794235 224.500000 -29.999964 +v 193.764725 224.517044 -30.258783 +v 194.693329 226.670624 -29.999964 +v 194.660416 226.679443 -30.258783 +v 194.563919 226.705307 -30.499964 +v 194.410416 226.746429 -30.707071 +v 194.210373 226.800034 -30.865990 +v 193.977402 226.862457 -30.965889 +v 193.727402 226.929443 -30.999964 +v 186.000000 220.133972 -30.499964 +v 188.294693 220.436081 -30.499964 +v 190.433014 221.321793 -30.499964 +v 192.269226 222.730774 -30.499964 +v 193.678207 224.566986 -30.499964 +v 186.000000 220.292892 -30.707071 +v 188.253571 220.589584 -30.707071 +v 190.353546 221.459427 -30.707071 +v 192.156860 222.843140 -30.707071 +v 193.540573 224.646454 -30.707071 +v 186.000000 220.500000 -30.865990 +v 188.199966 220.789627 -30.865990 +v 190.250000 221.638779 -30.865990 +v 192.010406 222.989594 -30.865990 +v 193.361221 224.750000 -30.865990 +v 186.000000 220.741180 -30.965889 +v 188.137543 221.022598 -30.965889 +v 190.129410 221.847656 -30.965889 +v 191.839874 223.160126 -30.965889 +v 193.152344 224.870590 -30.965889 +v 186.000000 221.000000 -30.999964 +v 188.070557 221.272598 -30.999964 +v 190.000000 222.071793 -30.999964 +v 191.656860 223.343140 -30.999964 +v 192.928207 225.000000 -30.999964 +v 180.000000 220.000000 -29.999964 +v 180.000000 220.034073 -30.258783 +v 180.000000 220.133972 -30.499964 +v 180.000000 220.292892 -30.707071 +v 180.000000 220.500000 -30.865990 +v 180.000000 220.741180 -30.965889 +v 180.000000 221.000000 -30.999964 +v 186.000000 220.000000 -13.999964 +v 188.329376 220.306671 -13.999964 +v 190.500000 221.205765 -13.999964 +v 192.363968 222.636032 -13.999964 +v 193.794235 224.500000 -13.999964 +v 194.693329 226.670624 -13.999963 +v 195.000000 229.000000 -13.999963 +v 195.000000 251.000000 -13.999959 +v 194.693329 253.329376 -13.999959 +v 193.794235 255.500000 -13.999958 +v 192.363968 257.363953 -13.999958 +v 190.500000 258.794220 -13.999958 +v 188.329376 259.693329 -13.999958 +v 186.000000 260.000000 -13.999958 +v 134.000000 260.000000 -13.999958 +v 131.670624 259.693329 -13.999958 +v 129.500000 258.794220 -13.999958 +v 127.636040 257.363953 -13.999958 +v 126.205772 255.500000 -13.999958 +v 125.306671 253.329376 -13.999959 +v 125.000000 251.000000 -13.999959 +v 125.000000 229.000000 -13.999963 +v 125.306671 226.670624 -13.999963 +v 126.205772 224.500000 -13.999964 +v 127.636040 222.636032 -13.999964 +v 129.500000 221.205765 -13.999964 +v 131.670624 220.306671 -13.999964 +v 134.000000 220.000000 -13.999964 +v 194.000000 251.000000 -12.999959 +v 194.000000 229.000000 -12.999963 +v 194.258820 251.000000 -13.034033 +v 194.258820 229.000000 -13.034037 +v 194.500000 251.000000 -13.133934 +v 194.500000 229.000000 -13.133938 +v 194.707108 251.000000 -13.292852 +v 194.707108 229.000000 -13.292856 +v 194.866028 251.000000 -13.499959 +v 194.866028 229.000000 -13.499963 +v 194.965927 251.000000 -13.741140 +v 194.965927 229.000000 -13.741144 +v 186.000000 259.965912 -13.741139 +v 188.320557 259.660431 -13.741139 +v 190.482956 258.764709 -13.741139 +v 192.339874 257.339874 -13.741139 +v 193.764725 255.482956 -13.741139 +v 194.660416 253.320557 -13.741140 +v 194.563919 253.294693 -13.499959 +v 194.410416 253.253571 -13.292852 +v 194.210373 253.199966 -13.133934 +v 193.977402 253.137543 -13.034033 +v 193.727402 253.070557 -12.999959 +v 186.000000 259.866028 -13.499958 +v 188.294693 259.563934 -13.499958 +v 190.433014 258.678192 -13.499958 +v 192.269226 257.269226 -13.499958 +v 193.678207 255.433014 -13.499958 +v 186.000000 259.707092 -13.292851 +v 188.253571 259.410431 -13.292851 +v 190.353546 258.540588 -13.292851 +v 192.156860 257.156860 -13.292851 +v 193.540573 255.353546 -13.292851 +v 186.000000 259.500000 -13.133933 +v 188.199966 259.210358 -13.133933 +v 190.250000 258.361206 -13.133933 +v 192.010406 257.010406 -13.133933 +v 193.361221 255.250000 -13.133933 +v 186.000000 259.258820 -13.034032 +v 188.137543 258.977417 -13.034032 +v 190.129410 258.152344 -13.034032 +v 191.839874 256.839874 -13.034032 +v 193.152344 255.129410 -13.034032 +v 186.000000 259.000000 -12.999958 +v 188.070557 258.727417 -12.999958 +v 190.000000 257.928192 -12.999958 +v 191.656860 256.656860 -12.999958 +v 192.928207 255.000000 -12.999958 +v 134.000000 259.965912 -13.741139 +v 134.000000 259.866028 -13.499958 +v 134.000000 259.707092 -13.292851 +v 134.000000 259.500000 -13.133933 +v 134.000000 259.258820 -13.034032 +v 134.000000 259.000000 -12.999958 +v 125.034073 251.000000 -13.741140 +v 125.339584 253.320557 -13.741140 +v 126.235283 255.482956 -13.741139 +v 127.660133 257.339874 -13.741139 +v 129.517044 258.764709 -13.741139 +v 131.679443 259.660431 -13.741139 +v 131.705307 259.563934 -13.499958 +v 131.746429 259.410431 -13.292851 +v 131.800034 259.210358 -13.133933 +v 131.862457 258.977417 -13.034032 +v 131.929443 258.727417 -12.999958 +v 125.133972 251.000000 -13.499959 +v 125.436073 253.294693 -13.499959 +v 126.321800 255.433014 -13.499958 +v 127.730774 257.269226 -13.499958 +v 129.566986 258.678192 -13.499958 +v 125.292892 251.000000 -13.292852 +v 125.589584 253.253571 -13.292852 +v 126.459427 255.353546 -13.292851 +v 127.843147 257.156860 -13.292851 +v 129.646454 258.540588 -13.292851 +v 125.500000 251.000000 -13.133934 +v 125.789627 253.199966 -13.133934 +v 126.638786 255.250000 -13.133933 +v 127.989594 257.010406 -13.133933 +v 129.750000 258.361206 -13.133933 +v 125.741180 251.000000 -13.034033 +v 126.022591 253.137543 -13.034033 +v 126.847656 255.129410 -13.034032 +v 128.160126 256.839874 -13.034032 +v 129.870590 258.152344 -13.034032 +v 126.000000 251.000000 -12.999959 +v 126.272591 253.070557 -12.999959 +v 127.071800 255.000000 -12.999958 +v 128.343140 256.656860 -12.999958 +v 130.000000 257.928192 -12.999958 +v 125.034073 229.000000 -13.741144 +v 125.133972 229.000000 -13.499963 +v 125.292892 229.000000 -13.292856 +v 125.500000 229.000000 -13.133938 +v 125.741180 229.000000 -13.034037 +v 126.000000 229.000000 -12.999963 +v 134.000000 220.034073 -13.741145 +v 131.679443 220.339584 -13.741145 +v 129.517044 221.235275 -13.741145 +v 127.660133 222.660126 -13.741145 +v 126.235283 224.517044 -13.741145 +v 125.339584 226.679443 -13.741144 +v 125.436073 226.705307 -13.499963 +v 125.589584 226.746429 -13.292856 +v 125.789627 226.800034 -13.133938 +v 126.022591 226.862457 -13.034037 +v 126.272591 226.929443 -12.999963 +v 134.000000 220.133972 -13.499964 +v 131.705307 220.436081 -13.499964 +v 129.566986 221.321793 -13.499964 +v 127.730774 222.730774 -13.499964 +v 126.321800 224.566986 -13.499964 +v 134.000000 220.292892 -13.292857 +v 131.746429 220.589584 -13.292857 +v 129.646454 221.459427 -13.292857 +v 127.843147 222.843140 -13.292857 +v 126.459427 224.646454 -13.292857 +v 134.000000 220.500000 -13.133939 +v 131.800034 220.789627 -13.133939 +v 129.750000 221.638779 -13.133939 +v 127.989594 222.989594 -13.133939 +v 126.638786 224.750000 -13.133939 +v 134.000000 220.741180 -13.034038 +v 131.862457 221.022598 -13.034038 +v 129.870590 221.847656 -13.034038 +v 128.160126 223.160126 -13.034038 +v 126.847656 224.870590 -13.034038 +v 134.000000 221.000000 -12.999964 +v 131.929443 221.272598 -12.999964 +v 130.000000 222.071793 -12.999964 +v 128.343140 223.343140 -12.999964 +v 127.071800 225.000000 -12.999964 +v 186.000000 220.034073 -13.741145 +v 186.000000 220.133972 -13.499964 +v 186.000000 220.292892 -13.292857 +v 186.000000 220.500000 -13.133939 +v 186.000000 220.741180 -13.034038 +v 186.000000 221.000000 -12.999964 +v 188.070557 221.272598 -12.999964 +v 188.137543 221.022598 -13.034038 +v 190.000000 222.071793 -12.999964 +v 190.129410 221.847656 -13.034038 +v 191.656860 223.343140 -12.999964 +v 191.839874 223.160126 -13.034038 +v 192.928207 225.000000 -12.999964 +v 193.152344 224.870590 -13.034038 +v 193.727402 226.929443 -12.999963 +v 193.977402 226.862457 -13.034037 +v 194.210373 226.800034 -13.133938 +v 194.410416 226.746429 -13.292856 +v 194.563919 226.705307 -13.499963 +v 194.660416 226.679443 -13.741144 +v 188.199966 220.789627 -13.133939 +v 190.250000 221.638779 -13.133939 +v 192.010406 222.989594 -13.133939 +v 193.361221 224.750000 -13.133939 +v 188.253571 220.589584 -13.292857 +v 190.353546 221.459427 -13.292857 +v 192.156860 222.843140 -13.292857 +v 193.540573 224.646454 -13.292857 +v 188.294693 220.436081 -13.499964 +v 190.433014 221.321793 -13.499964 +v 192.269226 222.730774 -13.499964 +v 193.678207 224.566986 -13.499964 +v 188.320557 220.339584 -13.741145 +v 190.482956 221.235275 -13.741145 +v 192.339874 222.660126 -13.741145 +v 193.764725 224.517044 -13.741145 +v 194.000000 3.974728 -31.000000 +v 194.000000 20.000006 -30.999996 +v 194.258820 3.974728 -30.965925 +v 194.258820 20.000006 -30.965921 +v 194.500000 3.974728 -30.866026 +v 194.500000 20.000006 -30.866022 +v 194.707108 3.974728 -30.707108 +v 194.707108 20.000006 -30.707104 +v 194.866028 3.974728 -30.500000 +v 194.866028 20.000006 -30.499996 +v 194.965927 3.974728 -30.258820 +v 194.965927 20.000006 -30.258816 +v 195.000000 3.974728 -30.000000 +v 195.000000 20.000006 -29.999996 +v 194.720581 -1.303926 -30.000000 +v 194.372025 -3.924798 -30.000000 +v 194.571930 -2.287664 -30.258820 +v 194.338379 -3.919414 -30.258820 +v 194.239746 -3.903631 -30.500000 +v 194.472824 -2.275143 -30.500000 +v 194.082809 -3.878523 -30.707108 +v 194.315155 -2.255225 -30.707108 +v 193.878311 -3.845802 -30.866026 +v 194.109680 -2.229268 -30.866026 +v 193.640152 -3.807698 -30.965925 +v 193.870392 -2.199040 -30.965925 +v 193.384598 -3.766807 -31.000000 +v 193.726166 -1.198353 -31.000000 +v 193.931488 1.384566 -31.000000 +v 194.930099 1.331706 -30.000000 +v 191.943054 -19.105928 -30.000004 +v 191.909409 -19.100544 -30.258823 +v 191.810760 -19.084761 -30.500004 +v 191.653839 -19.059652 -30.707111 +v 191.449326 -19.026932 -30.866030 +v 191.211182 -18.988829 -30.965929 +v 190.955612 -18.947937 -31.000004 +v 185.030960 -24.999994 -30.000004 +v 185.030960 -24.965919 -30.258823 +v 186.663300 -24.807013 -30.000004 +v 186.833878 -24.728561 -30.258823 +v 188.205627 -24.238708 -30.000004 +v 188.513931 -24.032663 -30.258823 +v 189.572906 -23.326416 -30.000004 +v 189.956619 -22.925648 -30.258823 +v 190.689758 -22.120438 -30.000004 +v 191.063629 -21.482958 -30.258823 +v 191.494598 -20.687267 -30.000004 +v 191.759537 -19.802908 -30.258823 +v 191.663040 -19.777052 -30.500004 +v 191.509537 -19.735922 -30.707111 +v 191.309479 -19.682318 -30.866030 +v 191.076523 -19.619896 -30.965929 +v 190.571228 -20.303371 -31.000004 +v 190.451263 -21.129404 -30.965929 +v 189.881363 -21.531803 -31.000004 +v 189.456619 -22.425648 -30.965929 +v 188.924057 -22.565498 -31.000004 +v 188.160370 -23.420290 -30.965929 +v 187.752106 -23.347464 -31.000004 +v 186.650864 -24.045549 -30.965929 +v 186.430099 -23.834581 -31.000004 +v 185.030960 -24.258814 -30.965929 +v 185.030960 -23.999994 -31.000004 +v 185.030960 -24.866020 -30.500004 +v 186.808029 -24.632065 -30.500004 +v 188.463974 -23.946146 -30.500004 +v 189.885986 -22.855007 -30.500004 +v 190.977112 -21.433008 -30.500004 +v 185.030960 -24.707102 -30.707111 +v 186.766891 -24.478561 -30.707111 +v 188.384521 -23.808519 -30.707111 +v 189.773605 -22.742636 -30.707111 +v 190.839493 -21.353548 -30.707111 +v 185.030960 -24.499994 -30.866030 +v 186.713287 -24.278513 -30.866030 +v 188.280960 -23.629160 -30.866030 +v 189.627167 -22.596188 -30.866030 +v 190.660126 -21.249994 -30.866030 +v 136.518784 -24.999994 -30.000004 +v 136.518784 -24.965919 -30.258823 +v 136.518784 -24.866020 -30.500004 +v 136.518784 -24.707102 -30.707111 +v 136.518784 -24.499994 -30.866030 +v 136.518784 -24.258814 -30.965929 +v 136.518784 -23.999994 -31.000004 +v 130.240479 -21.095625 -30.000004 +v 129.712067 -19.633606 -30.000004 +v 129.790207 -19.802908 -30.258823 +v 129.745193 -19.625654 -30.258823 +v 129.842346 -19.602339 -30.500004 +v 129.886703 -19.777052 -30.500004 +v 129.996872 -19.565250 -30.707111 +v 130.040207 -19.735922 -30.707111 +v 130.198257 -19.516918 -30.866030 +v 130.240265 -19.682318 -30.866030 +v 130.432785 -19.460634 -30.965929 +v 130.473221 -19.619896 -30.965929 +v 130.684448 -19.400232 -31.000004 +v 131.137375 -20.653393 -31.000004 +v 131.098480 -21.129404 -30.965929 +v 131.855713 -21.775684 -31.000004 +v 132.093124 -22.425648 -30.965929 +v 132.804031 -22.711758 -31.000004 +v 133.389374 -23.420290 -30.965929 +v 133.935577 -23.415442 -31.000004 +v 134.898880 -24.045549 -30.965929 +v 135.194519 -23.852032 -31.000004 +v 134.836456 -24.278513 -30.866030 +v 133.268784 -23.629160 -30.866030 +v 131.922577 -22.596188 -30.866030 +v 130.889618 -21.249994 -30.866030 +v 134.782852 -24.478561 -30.707111 +v 133.165222 -23.808519 -30.707111 +v 131.776138 -22.742636 -30.707111 +v 130.710251 -21.353548 -30.707111 +v 134.741714 -24.632065 -30.500004 +v 133.085770 -23.946146 -30.500004 +v 131.663773 -22.855007 -30.500004 +v 130.572632 -21.433008 -30.500004 +v 134.715866 -24.728561 -30.258823 +v 133.035812 -24.032663 -30.258823 +v 131.593124 -22.925648 -30.258823 +v 130.486115 -21.482958 -30.258823 +v 134.973816 -24.827372 -30.000004 +v 133.505035 -24.318016 -30.000004 +v 132.184921 -23.497051 -30.000004 +v 131.078537 -22.404966 -30.000004 +v 126.380638 -5.752640 -30.000000 +v 126.413765 -5.744688 -30.258820 +v 126.510910 -5.721374 -30.500000 +v 126.665443 -5.684287 -30.707108 +v 126.866829 -5.635954 -30.866026 +v 127.101349 -5.579669 -30.965925 +v 127.353020 -5.519267 -31.000000 +v 125.000000 5.916007 -29.999998 +v 125.034073 5.916007 -30.258818 +v 125.154037 1.994290 -30.000000 +v 125.615196 -1.903264 -30.000000 +v 125.133972 5.916007 -30.499998 +v 125.292892 5.916007 -30.707106 +v 125.500000 5.916007 -30.866024 +v 125.741180 5.916007 -30.965923 +v 126.602890 -1.746879 -31.000000 +v 126.000000 5.916007 -30.999998 +v 126.150955 2.072724 -31.000000 +v 125.000000 20.000006 -29.999996 +v 125.034073 20.000006 -30.258816 +v 125.133972 20.000006 -30.499996 +v 125.292892 20.000006 -30.707104 +v 125.500000 20.000006 -30.866022 +v 125.741180 20.000006 -30.965921 +v 126.000000 20.000006 -30.999996 +v 125.000000 5.916004 -13.999999 +v 125.154037 1.994287 -14.000000 +v 125.615196 -1.903267 -14.000000 +v 126.380638 -5.752643 -14.000001 +v 129.712067 -19.633610 -14.000003 +v 130.240479 -21.095629 -14.000004 +v 131.078537 -22.404970 -14.000004 +v 132.184921 -23.497055 -14.000004 +v 133.505035 -24.318020 -14.000004 +v 134.973816 -24.827375 -14.000004 +v 136.518784 -24.999998 -14.000004 +v 185.030960 -24.999998 -14.000004 +v 186.663300 -24.807016 -14.000004 +v 188.205627 -24.238712 -14.000004 +v 189.572906 -23.326420 -14.000004 +v 190.689758 -22.120441 -14.000004 +v 191.494598 -20.687271 -14.000004 +v 191.943054 -19.105932 -14.000003 +v 194.372025 -3.924801 -14.000001 +v 194.720581 -1.303929 -14.000000 +v 194.930099 1.331703 -14.000000 +v 195.000000 3.974725 -13.999999 +v 195.000000 20.000002 -13.999997 +v 194.965927 3.974725 -13.741180 +v 194.965927 20.000002 -13.741179 +v 194.866028 3.974725 -13.499999 +v 194.866028 20.000002 -13.499997 +v 194.707108 3.974725 -13.292892 +v 194.707108 20.000002 -13.292891 +v 194.500000 3.974725 -13.133974 +v 194.500000 20.000002 -13.133972 +v 194.258820 3.974725 -13.034073 +v 194.258820 20.000002 -13.034071 +v 194.000000 3.974725 -12.999999 +v 194.000000 20.000002 -12.999997 +v 193.384598 -3.766810 -13.000001 +v 193.640152 -3.807701 -13.034075 +v 193.726166 -1.198356 -13.000000 +v 193.931488 1.384563 -13.000000 +v 193.878311 -3.845805 -13.133976 +v 194.082809 -3.878526 -13.292894 +v 194.239746 -3.903634 -13.500001 +v 194.338379 -3.919417 -13.741182 +v 190.955612 -18.947941 -13.000003 +v 191.211182 -18.988832 -13.034077 +v 191.449326 -19.026936 -13.133978 +v 191.653839 -19.059656 -13.292896 +v 191.810760 -19.084764 -13.500003 +v 191.909409 -19.100548 -13.741184 +v 185.030960 -23.999998 -13.000004 +v 185.030960 -24.258818 -13.034078 +v 186.430099 -23.834585 -13.000004 +v 186.650864 -24.045553 -13.034078 +v 187.752106 -23.347467 -13.000004 +v 188.160370 -23.420294 -13.034078 +v 188.924057 -22.565502 -13.000004 +v 189.456619 -22.425652 -13.034078 +v 189.881363 -21.531807 -13.000004 +v 190.451263 -21.129408 -13.034078 +v 190.571228 -20.303375 -13.000003 +v 191.076523 -19.619900 -13.034077 +v 191.309479 -19.682322 -13.133978 +v 191.509537 -19.735926 -13.292896 +v 191.663040 -19.777056 -13.500003 +v 191.759537 -19.802912 -13.741184 +v 191.063629 -21.482962 -13.741185 +v 189.956619 -22.925652 -13.741185 +v 188.513931 -24.032667 -13.741185 +v 186.833878 -24.728565 -13.741185 +v 185.030960 -24.965923 -13.741185 +v 185.030960 -24.499998 -13.133979 +v 186.713287 -24.278517 -13.133979 +v 188.280960 -23.629164 -13.133979 +v 189.627167 -22.596191 -13.133979 +v 190.660126 -21.249998 -13.133979 +v 185.030960 -24.707106 -13.292897 +v 186.766891 -24.478565 -13.292897 +v 188.384521 -23.808523 -13.292897 +v 189.773605 -22.742640 -13.292897 +v 190.839493 -21.353552 -13.292897 +v 185.030960 -24.866024 -13.500004 +v 186.808029 -24.632069 -13.500004 +v 188.463974 -23.946150 -13.500004 +v 189.885986 -22.855011 -13.500004 +v 190.977112 -21.433012 -13.500004 +v 136.518784 -23.999998 -13.000004 +v 136.518784 -24.258818 -13.034078 +v 136.518784 -24.499998 -13.133979 +v 136.518784 -24.707106 -13.292897 +v 136.518784 -24.866024 -13.500004 +v 136.518784 -24.965923 -13.741185 +v 131.137375 -20.653397 -13.000004 +v 130.684448 -19.400236 -13.000003 +v 130.473221 -19.619900 -13.034077 +v 130.432785 -19.460638 -13.034077 +v 130.198257 -19.516922 -13.133978 +v 130.240265 -19.682322 -13.133978 +v 129.996872 -19.565254 -13.292896 +v 130.040207 -19.735926 -13.292896 +v 129.842346 -19.602343 -13.500003 +v 129.886703 -19.777056 -13.500003 +v 129.745193 -19.625658 -13.741184 +v 129.790207 -19.802912 -13.741184 +v 130.486115 -21.482962 -13.741185 +v 131.593124 -22.925652 -13.741185 +v 133.035812 -24.032667 -13.741185 +v 134.715866 -24.728565 -13.741185 +v 134.741714 -24.632069 -13.500004 +v 133.085770 -23.946150 -13.500004 +v 131.663773 -22.855011 -13.500004 +v 130.572632 -21.433012 -13.500004 +v 134.782852 -24.478565 -13.292897 +v 133.165222 -23.808523 -13.292897 +v 131.776138 -22.742640 -13.292897 +v 130.710251 -21.353552 -13.292897 +v 134.836456 -24.278517 -13.133979 +v 133.268784 -23.629164 -13.133979 +v 131.922577 -22.596191 -13.133979 +v 130.889618 -21.249998 -13.133979 +v 134.898880 -24.045553 -13.034078 +v 133.389374 -23.420294 -13.034078 +v 132.093124 -22.425652 -13.034078 +v 131.098480 -21.129408 -13.034078 +v 135.194519 -23.852036 -13.000004 +v 133.935577 -23.415445 -13.000004 +v 132.804031 -22.711761 -13.000004 +v 131.855713 -21.775688 -13.000004 +v 127.353020 -5.519270 -13.000001 +v 127.101349 -5.579672 -13.034075 +v 126.866829 -5.635957 -13.133976 +v 126.665443 -5.684289 -13.292894 +v 126.510910 -5.721376 -13.500001 +v 126.413765 -5.744690 -13.741182 +v 126.000000 5.916004 -12.999999 +v 125.741180 5.916004 -13.034073 +v 126.150955 2.072721 -13.000000 +v 126.129601 -0.257763 -13.034074 +v 126.602890 -1.746882 -13.000000 +v 125.500000 5.916004 -13.133974 +v 125.890320 -0.287991 -13.133975 +v 125.684853 -0.313948 -13.292893 +v 125.527184 -0.333866 -13.500000 +v 125.428070 -0.346387 -13.741181 +v 125.292892 5.916004 -13.292892 +v 125.133972 5.916004 -13.499999 +v 125.034073 5.916004 -13.741180 +v 126.000000 20.000002 -12.999997 +v 125.741180 20.000002 -13.034071 +v 125.500000 20.000002 -13.133972 +v 125.292892 20.000002 -13.292891 +v 125.133972 20.000002 -13.499997 +v 125.034073 20.000002 -13.741179 +v 125.000000 20.000002 -13.999997 +v 105.938271 109.965538 -30.999983 +v 103.842422 112.959908 -30.999981 +v 102.532974 116.372261 -30.999981 +v 102.087685 120.000008 -30.999981 +v 102.532974 123.627754 -30.999979 +v 103.842422 127.040108 -30.999979 +v 105.938271 130.034470 -30.999979 +v 160.000000 190.103058 -30.999969 +v 79.031021 109.965538 -30.999983 +v 76.935173 112.959908 -30.999981 +v 75.625732 116.372261 -30.999981 +v 75.180435 120.000008 -30.999981 +v 75.625732 123.627754 -30.999979 +v 76.935173 127.040108 -30.999979 +v 79.031021 130.034470 -30.999979 +v 180.000000 20.000006 -30.999996 +v 160.000000 20.000006 -30.999996 +v 160.000000 49.896946 -30.999992 +v 177.244446 211.941147 -4.999966 +v 177.500000 210.000000 -4.999966 +v 177.244446 208.058853 -4.999966 +v 176.495193 206.250000 -4.999967 +v 175.303299 204.696701 -4.999967 +v 173.750000 203.504807 -4.999967 +v 171.941147 202.755554 -4.999967 +v 170.000000 202.500000 -4.999967 +v 168.058853 202.755554 -4.999967 +v 166.250000 203.504807 -4.999967 +v 164.696701 204.696701 -4.999967 +v 163.504807 206.250000 -4.999967 +v 162.755554 208.058853 -4.999966 +v 162.500000 210.000000 -4.999966 +v 162.755554 211.941147 -4.999966 +v 163.504807 213.750000 -4.999965 +v 164.696701 215.303299 -4.999965 +v 166.250000 216.495193 -4.999965 +v 168.058853 217.244446 -4.999965 +v 170.000000 217.500000 -4.999965 +v 171.941147 217.244446 -4.999965 +v 173.750000 216.495193 -4.999965 +v 175.303299 215.303299 -4.999965 +v 176.495193 213.750000 -4.999965 +v 9.000000 260.000000 0.000042 +v 9.000000 260.000000 -4.999958 +v 6.670629 259.693329 0.000042 +v 6.670629 259.693329 -4.999958 +v 4.500000 258.794220 0.000042 +v 4.500000 258.794220 -4.999958 +v 2.636039 257.363953 0.000042 +v 2.636039 257.363953 -4.999958 +v 1.205771 255.500000 0.000042 +v 1.205771 255.500000 -4.999959 +v 0.306668 253.329376 0.000041 +v 0.306668 253.329376 -4.999959 +v 0.000000 251.000000 0.000041 +v 0.000000 251.000000 -4.999959 +v 0.000000 9.000001 -4.999999 +v 0.000000 9.000000 0.000001 +v 261.000000 0.000001 -5.000000 +v 270.000000 9.000001 -4.999999 +v 9.000000 0.000001 -5.000000 +v 270.000000 251.000000 -4.999959 +v 261.000000 260.000000 -4.999958 +v 263.329376 259.693329 -4.999958 +v 265.500000 258.794220 -4.999958 +v 267.363953 257.363953 -4.999958 +v 268.794220 255.500000 -4.999959 +v 269.693329 253.329376 -4.999959 +v 269.693329 6.670630 -4.999999 +v 268.794220 4.500001 -4.999999 +v 267.363953 2.636040 -5.000000 +v 265.500000 1.205772 -5.000000 +v 263.329376 0.306669 -5.000000 +v 6.670629 0.306669 -5.000000 +v 4.500000 1.205772 -5.000000 +v 2.636039 2.636040 -5.000000 +v 1.205771 4.500001 -4.999999 +v 0.306668 6.670630 -4.999999 +v 270.000000 251.000000 0.000041 +v 269.693329 253.329376 0.000041 +v 268.794220 255.500000 0.000042 +v 267.363953 257.363953 0.000042 +v 265.500000 258.794220 0.000042 +v 263.329376 259.693329 0.000042 +v 261.000000 260.000000 0.000042 +v 270.000000 9.000000 0.000001 +v 261.000000 0.000000 0.000000 +v 263.329376 0.306668 0.000000 +v 265.500000 1.205771 0.000000 +v 267.363953 2.636039 0.000000 +v 268.794220 4.500000 0.000001 +v 269.693329 6.670629 0.000001 +v 0.306668 6.670629 0.000001 +v 1.205771 4.500000 0.000001 +v 2.636039 2.636039 0.000000 +v 4.500000 1.205771 0.000000 +v 6.670629 0.306668 0.000000 +v 9.000000 0.000000 0.000000 +vt 0.217339 0.786783 +vt 0.192612 0.786783 +vt 0.217339 0.781403 +vt 0.192612 0.781403 +vt 0.217339 0.776024 +vt 0.192612 0.776024 +vt 0.217339 0.770644 +vt 0.192612 0.770644 +vt 0.217339 0.765265 +vt 0.192612 0.765265 +vt 0.217340 0.759886 +vt 0.192612 0.759886 +vt 0.217340 0.754507 +vt 0.192612 0.754507 +vt 0.217340 0.749127 +vt 0.192612 0.749127 +vt 0.217340 0.743748 +vt 0.192612 0.743748 +vt 0.217340 0.738368 +vt 0.192612 0.738368 +vt 0.217340 0.732989 +vt 0.192612 0.732989 +vt 0.217340 0.727610 +vt 0.192612 0.727610 +vt 0.217340 0.722231 +vt 0.192612 0.722231 +vt 0.217340 0.716851 +vt 0.192612 0.716851 +vt 0.217340 0.711472 +vt 0.192612 0.711472 +vt 0.217339 0.840576 +vt 0.192612 0.840576 +vt 0.217339 0.835197 +vt 0.192612 0.835197 +vt 0.217339 0.829817 +vt 0.192612 0.829817 +vt 0.217339 0.824438 +vt 0.192612 0.824438 +vt 0.217339 0.819059 +vt 0.192612 0.819059 +vt 0.217339 0.813680 +vt 0.192612 0.813680 +vt 0.217339 0.808300 +vt 0.192612 0.808300 +vt 0.217339 0.802921 +vt 0.192612 0.802921 +vt 0.217339 0.797541 +vt 0.192612 0.797541 +vt 0.217339 0.792162 +vt 0.192612 0.792162 +vt 0.217340 0.651321 +vt 0.192612 0.651321 +vt 0.217340 0.645942 +vt 0.192612 0.645942 +vt 0.217340 0.640562 +vt 0.192612 0.640562 +vt 0.217340 0.635183 +vt 0.192612 0.635183 +vt 0.217340 0.629804 +vt 0.192612 0.629804 +vt 0.217340 0.624424 +vt 0.192612 0.624424 +vt 0.217340 0.619045 +vt 0.192612 0.619045 +vt 0.217340 0.613666 +vt 0.192612 0.613666 +vt 0.217340 0.608286 +vt 0.192612 0.608286 +vt 0.217340 0.602907 +vt 0.192612 0.602907 +vt 0.217340 0.597528 +vt 0.192612 0.597528 +vt 0.217340 0.592148 +vt 0.192612 0.592148 +vt 0.217340 0.586769 +vt 0.192612 0.586769 +vt 0.217340 0.581390 +vt 0.192612 0.581390 +vt 0.217340 0.710494 +vt 0.192612 0.710494 +vt 0.217340 0.705115 +vt 0.192612 0.705115 +vt 0.217340 0.699735 +vt 0.192612 0.699735 +vt 0.217340 0.694356 +vt 0.192612 0.694356 +vt 0.217340 0.688976 +vt 0.192612 0.688976 +vt 0.217340 0.683597 +vt 0.192612 0.683597 +vt 0.217340 0.678218 +vt 0.192612 0.678218 +vt 0.217340 0.672839 +vt 0.192612 0.672839 +vt 0.217340 0.667459 +vt 0.192612 0.667459 +vt 0.217340 0.662080 +vt 0.192612 0.662080 +vt 0.217340 0.656700 +vt 0.192612 0.656700 +vt 0.310442 0.065987 +vt 0.310752 0.060445 +vt 0.314203 0.028452 +vt 0.310267 0.054869 +vt 0.308997 0.049687 +vt 0.306986 0.045373 +vt 0.304377 0.042377 +vt 0.301405 0.040977 +vt 0.298319 0.041245 +vt 0.282384 0.038962 +vt 0.295107 0.042958 +vt 0.292223 0.046072 +vt 0.289826 0.050257 +vt 0.287988 0.055189 +vt 0.286762 0.060657 +vt 0.286225 0.066429 +vt 0.282821 0.121322 +vt 0.211025 0.281065 +vt 0.286525 0.072171 +vt 0.287521 0.077556 +vt 0.289128 0.082241 +vt 0.291223 0.085947 +vt 0.293653 0.088477 +vt 0.296259 0.089725 +vt 0.298869 0.089639 +vt 0.301334 0.088262 +vt 0.283108 0.493049 +vt 0.301326 0.527104 +vt 0.298968 0.525452 +vt 0.304768 0.084951 +vt 0.304459 0.530106 +vt 0.307736 0.078943 +vt 0.307427 0.535493 +vt 0.310186 0.544468 +vt 0.314203 0.580411 +vt 0.199690 0.312837 +vt 0.200026 0.307700 +vt 0.205875 0.307678 +vt 0.199681 0.302565 +vt 0.206469 0.298068 +vt 0.198674 0.297786 +vt 0.208221 0.289015 +vt 0.197076 0.293693 +vt 0.194997 0.290567 +vt 0.192577 0.288625 +vt 0.189985 0.288003 +vt 0.175077 0.281428 +vt 0.187392 0.288684 +vt 0.184981 0.290679 +vt 0.182916 0.293849 +vt 0.181340 0.297968 +vt 0.180356 0.302748 +vt 0.172359 0.289391 +vt 0.180025 0.307871 +vt 0.170675 0.298405 +vt 0.170119 0.307958 +vt 0.170720 0.317498 +vt 0.172445 0.326473 +vt 0.180374 0.312988 +vt 0.175198 0.334374 +vt 0.181375 0.317749 +vt 0.182963 0.321839 +vt 0.185035 0.324973 +vt 0.187447 0.326929 +vt 0.190035 0.327570 +vt 0.192625 0.326897 +vt 0.211020 0.334174 +vt 0.283180 0.574246 +vt 0.195037 0.324911 +vt 0.197106 0.321751 +vt 0.208223 0.326280 +vt 0.198694 0.317630 +vt 0.206471 0.317271 +vt 0.286760 0.547097 +vt 0.287296 0.552594 +vt 0.298640 0.570034 +vt 0.301646 0.569879 +vt 0.304497 0.568138 +vt 0.310028 0.555298 +vt 0.310454 0.549755 +vt 0.296438 0.525141 +vt 0.293901 0.526169 +vt 0.291534 0.528492 +vt 0.289505 0.531992 +vt 0.287961 0.536460 +vt 0.287021 0.541609 +vt 0.288510 0.557767 +vt 0.290333 0.562366 +vt 0.292706 0.566149 +vt 0.295534 0.568798 +vt 0.306967 0.564918 +vt 0.308852 0.560501 +vt 0.175292 0.043640 +vt 0.173407 0.040307 +vt 0.174440 0.044040 +vt 0.172989 0.039817 +vt 0.173592 0.044475 +vt 0.172549 0.039414 +vt 0.172747 0.044945 +vt 0.172088 0.039101 +vt 0.171907 0.045452 +vt 0.171070 0.045990 +vt 0.171605 0.038886 +vt 0.170238 0.046564 +vt 0.171102 0.038770 +vt 0.169412 0.047170 +vt 0.170581 0.038762 +vt 0.168592 0.047806 +vt 0.174435 0.038840 +vt 0.174284 0.038936 +vt 0.173976 0.039115 +vt 0.173907 0.039122 +vt 0.173613 0.039341 +vt 0.173565 0.039339 +vt 0.173298 0.039531 +vt 0.173249 0.039525 +vt 0.173104 0.039767 +vt 0.173013 0.039739 +vt 0.173059 0.039970 +vt 0.172846 0.039862 +vt 0.172630 0.039755 +vt 0.172411 0.039653 +vt 0.172189 0.039558 +vt 0.171967 0.039472 +vt 0.171746 0.039400 +vt 0.174133 0.039001 +vt 0.173837 0.039129 +vt 0.173518 0.039339 +vt 0.173199 0.039520 +vt 0.172921 0.039713 +vt 0.173983 0.039034 +vt 0.173767 0.039136 +vt 0.173470 0.039339 +vt 0.173149 0.039516 +vt 0.172829 0.039689 +vt 0.173833 0.039037 +vt 0.173697 0.039143 +vt 0.173423 0.039341 +vt 0.173098 0.039513 +vt 0.172738 0.039669 +vt 0.173686 0.039008 +vt 0.173630 0.039150 +vt 0.173377 0.039345 +vt 0.173048 0.039511 +vt 0.172649 0.039655 +vt 0.173542 0.038946 +vt 0.173566 0.039157 +vt 0.173332 0.039351 +vt 0.172999 0.039513 +vt 0.172563 0.039649 +vt 0.175083 0.038334 +vt 0.175113 0.038199 +vt 0.175134 0.038064 +vt 0.175147 0.037928 +vt 0.175152 0.037794 +vt 0.175149 0.037662 +vt 0.175137 0.037533 +vt 0.175904 0.036019 +vt 0.175867 0.036155 +vt 0.175858 0.036378 +vt 0.175829 0.036442 +vt 0.175764 0.036670 +vt 0.175751 0.036728 +vt 0.175603 0.036913 +vt 0.175599 0.036954 +vt 0.175457 0.037347 +vt 0.175454 0.037344 +vt 0.175282 0.037800 +vt 0.175284 0.037754 +vt 0.175285 0.037708 +vt 0.175287 0.037663 +vt 0.175288 0.037619 +vt 0.175290 0.037577 +vt 0.175291 0.037537 +vt 0.175825 0.036280 +vt 0.175801 0.036506 +vt 0.175739 0.036788 +vt 0.175594 0.036993 +vt 0.175450 0.037342 +vt 0.175776 0.036391 +vt 0.175773 0.036570 +vt 0.175728 0.036848 +vt 0.175590 0.037031 +vt 0.175447 0.037339 +vt 0.175721 0.036490 +vt 0.175746 0.036633 +vt 0.175719 0.036910 +vt 0.175585 0.037069 +vt 0.175444 0.037337 +vt 0.175662 0.036573 +vt 0.175720 0.036694 +vt 0.175710 0.036975 +vt 0.175581 0.037105 +vt 0.175442 0.037336 +vt 0.175597 0.036640 +vt 0.175695 0.036754 +vt 0.175704 0.037042 +vt 0.175578 0.037142 +vt 0.175441 0.037335 +vt 0.175631 0.052174 +vt 0.175940 0.052558 +vt 0.176265 0.052875 +vt 0.176603 0.053124 +vt 0.176954 0.053302 +vt 0.177316 0.053406 +vt 0.177687 0.053433 +vt 0.176337 0.053465 +vt 0.176392 0.053463 +vt 0.176420 0.053309 +vt 0.176443 0.053323 +vt 0.176451 0.053149 +vt 0.176470 0.053157 +vt 0.176442 0.052986 +vt 0.176470 0.052993 +vt 0.176363 0.052804 +vt 0.176423 0.052820 +vt 0.176154 0.052586 +vt 0.176303 0.052664 +vt 0.176455 0.052742 +vt 0.176609 0.052818 +vt 0.176765 0.052890 +vt 0.176921 0.052956 +vt 0.177076 0.053015 +vt 0.176446 0.053474 +vt 0.176467 0.053337 +vt 0.176489 0.053166 +vt 0.176499 0.053001 +vt 0.176485 0.052836 +vt 0.176499 0.053496 +vt 0.176490 0.053352 +vt 0.176508 0.053175 +vt 0.176528 0.053008 +vt 0.176546 0.052851 +vt 0.176551 0.053531 +vt 0.176513 0.053367 +vt 0.176527 0.053183 +vt 0.176556 0.053016 +vt 0.176607 0.052864 +vt 0.176601 0.053577 +vt 0.176535 0.053383 +vt 0.176546 0.053191 +vt 0.176585 0.053023 +vt 0.176667 0.052875 +vt 0.176649 0.053637 +vt 0.176556 0.053398 +vt 0.176563 0.053199 +vt 0.176613 0.053029 +vt 0.176724 0.052881 +vt 0.176480 0.055043 +vt 0.176461 0.055290 +vt 0.176455 0.055536 +vt 0.176459 0.055777 +vt 0.176475 0.056014 +vt 0.176504 0.056245 +vt 0.176544 0.056467 +vt 0.177046 0.057279 +vt 0.177028 0.058060 +vt 0.176798 0.057464 +vt 0.176752 0.057846 +vt 0.176636 0.057165 +vt 0.176605 0.057352 +vt 0.176539 0.056739 +vt 0.176529 0.056854 +vt 0.176510 0.056251 +vt 0.176506 0.056348 +vt 0.176493 0.055716 +vt 0.176494 0.055837 +vt 0.176495 0.055959 +vt 0.176497 0.056081 +vt 0.176498 0.056201 +vt 0.176500 0.056319 +vt 0.176502 0.056432 +vt 0.176984 0.058837 +vt 0.176704 0.058231 +vt 0.176573 0.057539 +vt 0.176518 0.056970 +vt 0.176503 0.056445 +vt 0.176915 0.059612 +vt 0.176655 0.058618 +vt 0.176539 0.057725 +vt 0.176506 0.057085 +vt 0.176499 0.056541 +vt 0.176820 0.060384 +vt 0.176603 0.059007 +vt 0.176504 0.057910 +vt 0.176494 0.057200 +vt 0.176494 0.056637 +vt 0.176699 0.061154 +vt 0.176547 0.059393 +vt 0.176467 0.058090 +vt 0.176480 0.057313 +vt 0.176489 0.056732 +vt 0.176550 0.061923 +vt 0.176489 0.059775 +vt 0.176427 0.058263 +vt 0.176466 0.057423 +vt 0.176482 0.056825 +vt 0.178681 0.057080 +vt 0.178334 0.058660 +vt 0.177925 0.060177 +vt 0.177454 0.061623 +vt 0.176925 0.062989 +vt 0.176339 0.064268 +vt 0.175698 0.065452 +vt 0.177137 0.049396 +vt 0.176974 0.050249 +vt 0.176848 0.050984 +vt 0.176755 0.051615 +vt 0.176858 0.052209 +vt 0.176809 0.052743 +vt 0.176795 0.053207 +vt 0.176816 0.053614 +vt 0.176638 0.053012 +vt 0.176651 0.052923 +vt 0.176668 0.052824 +vt 0.176686 0.052712 +vt 0.176730 0.052612 +vt 0.176752 0.052462 +vt 0.176776 0.052299 +vt 0.176806 0.052126 +vt 0.178518 0.034772 +vt 0.178089 0.034727 +vt 0.177712 0.034685 +vt 0.177389 0.034659 +vt 0.176633 0.035719 +vt 0.175970 0.036494 +vt 0.175390 0.037434 +vt 0.174886 0.038527 +vt 0.175195 0.038182 +vt 0.174817 0.038616 +vt 0.174498 0.039157 +vt 0.174239 0.039800 +vt 0.173892 0.040663 +vt 0.173719 0.041452 +vt 0.173607 0.042355 +vt 0.173563 0.043373 +vt 0.178028 0.051056 +vt 0.175766 0.044710 +vt 0.269988 0.972405 +vt 0.298859 0.972541 +vt 0.270011 0.973256 +vt 0.298824 0.973474 +vt 0.270023 0.974113 +vt 0.298806 0.974415 +vt 0.270022 0.974977 +vt 0.298803 0.975364 +vt 0.270008 0.975847 +vt 0.298818 0.976322 +vt 0.269976 0.976724 +vt 0.298845 0.977288 +vt 0.269933 0.977610 +vt 0.298893 0.978260 +vt 0.254640 0.950521 +vt 0.255470 0.950291 +vt 0.257205 0.959361 +vt 0.257602 0.958884 +vt 0.259129 0.964581 +vt 0.259407 0.964150 +vt 0.261118 0.969246 +vt 0.261357 0.968753 +vt 0.263611 0.973131 +vt 0.263797 0.972535 +vt 0.266526 0.975864 +vt 0.266652 0.975164 +vt 0.266775 0.974473 +vt 0.266892 0.973783 +vt 0.267004 0.973095 +vt 0.267114 0.972409 +vt 0.267222 0.971724 +vt 0.256292 0.950169 +vt 0.258007 0.958445 +vt 0.259687 0.963728 +vt 0.261594 0.968267 +vt 0.263982 0.971949 +vt 0.257100 0.950145 +vt 0.258415 0.958026 +vt 0.259966 0.963301 +vt 0.261826 0.967778 +vt 0.264160 0.971363 +vt 0.257896 0.950207 +vt 0.258827 0.957628 +vt 0.260245 0.962876 +vt 0.262055 0.967291 +vt 0.264336 0.970781 +vt 0.258680 0.950372 +vt 0.259241 0.957250 +vt 0.260525 0.962452 +vt 0.262284 0.966805 +vt 0.264511 0.970200 +vt 0.259450 0.950643 +vt 0.259654 0.956888 +vt 0.260806 0.962030 +vt 0.262511 0.966319 +vt 0.264685 0.969620 +vt 0.254640 0.815252 +vt 0.255472 0.815496 +vt 0.256291 0.815635 +vt 0.257098 0.815668 +vt 0.257891 0.815585 +vt 0.258671 0.815399 +vt 0.259436 0.815110 +vt 0.269912 0.788684 +vt 0.269955 0.789560 +vt 0.266555 0.790389 +vt 0.266671 0.791083 +vt 0.263659 0.793034 +vt 0.263835 0.793633 +vt 0.261171 0.796827 +vt 0.261400 0.797329 +vt 0.259179 0.801394 +vt 0.259447 0.801835 +vt 0.257242 0.806497 +vt 0.257630 0.806993 +vt 0.258024 0.807461 +vt 0.258427 0.807890 +vt 0.258833 0.808292 +vt 0.259242 0.808673 +vt 0.259649 0.809037 +vt 0.269981 0.790434 +vt 0.266781 0.791775 +vt 0.264005 0.794228 +vt 0.261624 0.797829 +vt 0.259715 0.802277 +vt 0.269997 0.791302 +vt 0.266892 0.792461 +vt 0.264177 0.794813 +vt 0.261849 0.798320 +vt 0.259987 0.802711 +vt 0.270000 0.792165 +vt 0.267001 0.793143 +vt 0.264349 0.795393 +vt 0.262073 0.798808 +vt 0.260261 0.803139 +vt 0.269989 0.793022 +vt 0.267109 0.793824 +vt 0.264519 0.795971 +vt 0.262296 0.799294 +vt 0.260536 0.803565 +vt 0.269966 0.793873 +vt 0.267215 0.794504 +vt 0.264689 0.796547 +vt 0.262519 0.799779 +vt 0.260812 0.803989 +vt 0.298872 0.788102 +vt 0.298824 0.789084 +vt 0.298791 0.790053 +vt 0.298778 0.791014 +vt 0.298782 0.791964 +vt 0.298802 0.792906 +vt 0.298837 0.793838 +vt 0.314203 0.815751 +vt 0.313372 0.815981 +vt 0.311639 0.806911 +vt 0.311243 0.807387 +vt 0.309719 0.801694 +vt 0.309442 0.802122 +vt 0.307738 0.797035 +vt 0.307499 0.797525 +vt 0.305272 0.793144 +vt 0.305082 0.793732 +vt 0.302398 0.790274 +vt 0.302258 0.790984 +vt 0.302120 0.791688 +vt 0.301992 0.792393 +vt 0.301868 0.793097 +vt 0.301748 0.793800 +vt 0.301630 0.794502 +vt 0.312550 0.816103 +vt 0.310838 0.807826 +vt 0.309162 0.802544 +vt 0.307262 0.798007 +vt 0.304893 0.794313 +vt 0.311741 0.816127 +vt 0.310429 0.808245 +vt 0.308883 0.802969 +vt 0.307030 0.798492 +vt 0.304710 0.794894 +vt 0.310944 0.816064 +vt 0.310017 0.808641 +vt 0.308604 0.803392 +vt 0.306800 0.798975 +vt 0.304530 0.795473 +vt 0.310160 0.815898 +vt 0.309604 0.809018 +vt 0.308324 0.803815 +vt 0.306571 0.799459 +vt 0.304351 0.796050 +vt 0.309390 0.815627 +vt 0.309190 0.809379 +vt 0.308043 0.804236 +vt 0.306343 0.799941 +vt 0.304173 0.796626 +vt 0.314203 0.951134 +vt 0.313370 0.950890 +vt 0.312551 0.950751 +vt 0.311743 0.950718 +vt 0.310949 0.950802 +vt 0.310169 0.950989 +vt 0.309404 0.951279 +vt 0.309195 0.957353 +vt 0.309603 0.957717 +vt 0.308037 0.962403 +vt 0.308313 0.962825 +vt 0.306334 0.966618 +vt 0.306558 0.967101 +vt 0.304169 0.969863 +vt 0.304343 0.970437 +vt 0.301637 0.971928 +vt 0.301753 0.972625 +vt 0.301871 0.973322 +vt 0.301992 0.974020 +vt 0.302115 0.974720 +vt 0.302239 0.975425 +vt 0.302370 0.976130 +vt 0.310011 0.958096 +vt 0.308588 0.963250 +vt 0.306782 0.967583 +vt 0.304518 0.971011 +vt 0.310417 0.958498 +vt 0.308861 0.963677 +vt 0.307006 0.968067 +vt 0.304693 0.971587 +vt 0.310820 0.958926 +vt 0.309133 0.964109 +vt 0.307232 0.968555 +vt 0.304869 0.972167 +vt 0.311214 0.959393 +vt 0.309401 0.964549 +vt 0.307456 0.969051 +vt 0.305044 0.972756 +vt 0.311602 0.959889 +vt 0.309669 0.964989 +vt 0.307686 0.969549 +vt 0.305224 0.973349 +vt 0.026456 0.339805 +vt 0.027842 0.341046 +vt 0.026381 0.339822 +vt 0.027777 0.340745 +vt 0.026276 0.339803 +vt 0.027703 0.340452 +vt 0.026173 0.339775 +vt 0.027617 0.340174 +vt 0.026072 0.339739 +vt 0.027517 0.339913 +vt 0.025973 0.339695 +vt 0.027396 0.339667 +vt 0.025902 0.339704 +vt 0.027214 0.339403 +vt 0.024967 0.340828 +vt 0.024501 0.341159 +vt 0.024829 0.341238 +vt 0.024644 0.341353 +vt 0.024768 0.341586 +vt 0.024889 0.341446 +vt 0.024873 0.341854 +vt 0.024962 0.341638 +vt 0.024955 0.342154 +vt 0.025046 0.341808 +vt 0.025014 0.342482 +vt 0.025139 0.341953 +vt 0.025047 0.342836 +vt 0.025414 0.341689 +vt 0.025934 0.340752 +vt 0.025432 0.340238 +vt 0.022668 0.342089 +vt 0.022581 0.342214 +vt 0.022519 0.342357 +vt 0.022479 0.342510 +vt 0.022460 0.342668 +vt 0.022464 0.342826 +vt 0.022494 0.342975 +vt 0.020877 0.345119 +vt 0.020900 0.344600 +vt 0.021248 0.344299 +vt 0.021322 0.343997 +vt 0.021564 0.343801 +vt 0.021645 0.343593 +vt 0.021853 0.343426 +vt 0.021948 0.343251 +vt 0.022130 0.343071 +vt 0.022244 0.342888 +vt 0.022404 0.342665 +vt 0.022550 0.342469 +vt 0.022529 0.342545 +vt 0.022507 0.342630 +vt 0.022486 0.342716 +vt 0.022466 0.342795 +vt 0.022335 0.342836 +vt 0.022219 0.342887 +vt 0.022111 0.342918 +vt 0.021962 0.343035 +vt 0.021892 0.342996 +vt 0.021716 0.343108 +vt 0.021689 0.342971 +vt 0.021491 0.342993 +vt 0.021517 0.342715 +vt 0.021274 0.342754 +vt 0.021432 0.342378 +vt 0.020955 0.344098 +vt 0.021362 0.343750 +vt 0.021663 0.343474 +vt 0.021952 0.343199 +vt 0.022239 0.342890 +vt 0.021036 0.343621 +vt 0.021404 0.343500 +vt 0.021681 0.343353 +vt 0.021956 0.343145 +vt 0.022232 0.342891 +vt 0.021142 0.343172 +vt 0.021447 0.343247 +vt 0.021699 0.343230 +vt 0.021959 0.343091 +vt 0.022226 0.342890 +vt 0.018793 0.331271 +vt 0.018547 0.331242 +vt 0.018298 0.331288 +vt 0.018052 0.331399 +vt 0.017813 0.331576 +vt 0.017581 0.331821 +vt 0.017364 0.332144 +vt 0.018614 0.330744 +vt 0.018790 0.330532 +vt 0.018694 0.330613 +vt 0.018722 0.330665 +vt 0.018645 0.330753 +vt 0.018624 0.330677 +vt 0.018563 0.330812 +vt 0.018550 0.330730 +vt 0.018479 0.330844 +vt 0.018474 0.330767 +vt 0.018394 0.330846 +vt 0.018398 0.330788 +vt 0.018310 0.330799 +vt 0.018404 0.330909 +vt 0.018427 0.330938 +vt 0.018378 0.331106 +vt 0.018362 0.331179 +vt 0.018296 0.331329 +vt 0.018243 0.331440 +vt 0.018154 0.331576 +vt 0.018046 0.331723 +vt 0.017913 0.331861 +vt 0.018136 0.331631 +vt 0.018282 0.331395 +vt 0.018384 0.331149 +vt 0.018457 0.330913 +vt 0.018230 0.331548 +vt 0.018323 0.331351 +vt 0.018408 0.331119 +vt 0.018488 0.330886 +vt 0.018325 0.331474 +vt 0.018363 0.331309 +vt 0.018432 0.331091 +vt 0.018520 0.330859 +vt 0.018420 0.331406 +vt 0.018404 0.331269 +vt 0.018456 0.331063 +vt 0.018552 0.330831 +vt 0.018528 0.331344 +vt 0.018444 0.331277 +vt 0.018449 0.331131 +vt 0.018508 0.330946 +vt 0.019349 0.329300 +vt 0.019279 0.329219 +vt 0.019169 0.329097 +vt 0.019058 0.328975 +vt 0.018946 0.328853 +vt 0.018835 0.328733 +vt 0.018744 0.328639 +vt 0.019877 0.327636 +vt 0.019800 0.327481 +vt 0.019729 0.328168 +vt 0.019544 0.328733 +vt 0.019685 0.327282 +vt 0.019570 0.327082 +vt 0.019456 0.326881 +vt 0.019342 0.326678 +vt 0.018946 0.327978 +vt 0.019247 0.326500 +vt 0.019117 0.327272 +vt 0.020360 0.327136 +vt 0.020313 0.326856 +vt 0.020274 0.326611 +vt 0.020226 0.326377 +vt 0.020167 0.326155 +vt 0.020099 0.325943 +vt 0.020026 0.325739 +vt 0.019841 0.326729 +vt 0.019535 0.327301 +vt 0.019244 0.327915 +vt 0.018987 0.328525 +vt 0.018600 0.329583 +vt 0.018641 0.329712 +vt 0.018590 0.330012 +vt 0.018479 0.330350 +vt 0.018324 0.330703 +vt 0.018108 0.331062 +vt 0.017781 0.331427 +vt 0.017233 0.331831 +vt 0.018053 0.348729 +vt 0.019271 0.347684 +vt 0.020227 0.346853 +vt 0.021030 0.346108 +vt 0.021724 0.345403 +vt 0.022325 0.344756 +vt 0.022785 0.344333 +vt 0.022929 0.344353 +vt 0.024541 0.343541 +vt 0.025036 0.342868 +vt 0.025544 0.342145 +vt 0.025986 0.341420 +vt 0.027103 0.340513 +vt 0.025977 0.341144 +vt 0.026926 0.340129 +vt 0.025933 0.340772 +vt 0.026713 0.339902 +vt 0.025893 0.340397 +vt 0.026483 0.339742 +vt 0.025858 0.340019 +vt 0.026237 0.339638 +vt 0.025828 0.339637 +vt 0.025954 0.339602 +vt 0.025828 0.339329 +vt 0.025532 0.339720 +vt 0.023548 0.342878 +vt 0.023697 0.342927 +vt 0.024327 0.341707 +vt 0.025067 0.340526 +vt 0.023880 0.343052 +vt 0.024060 0.343186 +vt 0.024238 0.343329 +vt 0.024414 0.343479 +vt 0.023690 0.342360 +vt 0.023349 0.343003 +vt 0.023139 0.343311 +vt 0.022995 0.343573 +vt 0.022905 0.343831 +vt 0.022872 0.344088 +vt 0.019712 0.347915 +vt 0.019510 0.348188 +vt 0.020179 0.347775 +vt 0.020106 0.347687 +vt 0.020805 0.347336 +vt 0.020863 0.347091 +vt 0.021481 0.346679 +vt 0.021631 0.346293 +vt 0.022154 0.345819 +vt 0.022364 0.345285 +vt 0.022799 0.344719 +vt 0.023069 0.343984 +vt 0.023373 0.343311 +vt 0.023280 0.343161 +vt 0.022988 0.344032 +vt 0.022903 0.344121 +vt 0.022817 0.344227 +vt 0.022728 0.344331 +vt 0.022825 0.344084 +vt 0.022071 0.345151 +vt 0.021342 0.345958 +vt 0.020501 0.346768 +vt 0.019523 0.347616 +vt 0.018388 0.348761 +vt 0.019269 0.348417 +vt 0.019959 0.347666 +vt 0.020768 0.346998 +vt 0.021554 0.346197 +vt 0.022287 0.345237 +vt 0.019000 0.348591 +vt 0.019813 0.347649 +vt 0.020677 0.346916 +vt 0.021481 0.346111 +vt 0.022212 0.345202 +vt 0.018706 0.348707 +vt 0.019667 0.347633 +vt 0.020587 0.346840 +vt 0.021410 0.346032 +vt 0.022141 0.345174 +vt 0.018801 0.331201 +vt 0.018534 0.331105 +vt 0.018263 0.331099 +vt 0.017994 0.331170 +vt 0.017731 0.331315 +vt 0.017473 0.331533 +vt 0.018721 0.329759 +vt 0.018949 0.329339 +vt 0.018982 0.329456 +vt 0.019083 0.329409 +vt 0.019003 0.329585 +vt 0.018945 0.329537 +vt 0.018901 0.329679 +vt 0.018872 0.329602 +vt 0.018801 0.329722 +vt 0.018789 0.329646 +vt 0.018709 0.329723 +vt 0.018711 0.329681 +vt 0.018577 0.330074 +vt 0.018426 0.330484 +vt 0.018229 0.330898 +vt 0.017948 0.331302 +vt 0.018057 0.331239 +vt 0.018273 0.330865 +vt 0.018446 0.330455 +vt 0.018600 0.330038 +vt 0.018168 0.331181 +vt 0.018317 0.330831 +vt 0.018465 0.330426 +vt 0.018621 0.330001 +vt 0.018280 0.331129 +vt 0.018361 0.330797 +vt 0.018485 0.330395 +vt 0.018640 0.329962 +vt 0.018390 0.331083 +vt 0.018404 0.330764 +vt 0.018502 0.330364 +vt 0.018655 0.329920 +vt 0.018509 0.331076 +vt 0.018434 0.330838 +vt 0.018468 0.330522 +vt 0.018565 0.330157 +vt 0.019454 0.329185 +vt 0.018934 0.329352 +vt 0.019158 0.329384 +vt 0.018954 0.329220 +vt 0.019017 0.329548 +vt 0.018966 0.329075 +vt 0.018905 0.329647 +vt 0.018974 0.328932 +vt 0.018978 0.328789 +vt 0.018980 0.328649 +vt 0.020504 0.326826 +vt 0.020399 0.326838 +vt 0.019937 0.327626 +vt 0.019577 0.328038 +vt 0.019416 0.328433 +vt 0.020282 0.326826 +vt 0.019529 0.327961 +vt 0.019482 0.327884 +vt 0.019435 0.327805 +vt 0.019388 0.327725 +vt 0.020166 0.326807 +vt 0.020052 0.326781 +vt 0.019938 0.326749 +vt 0.020175 0.327047 +vt 0.020344 0.326695 +vt 0.020421 0.326544 +vt 0.020474 0.326435 +vt 0.020516 0.326332 +vt 0.020542 0.326233 +vt 0.020512 0.326171 +vt 0.217584 0.631713 +vt 0.233678 0.610235 +vt 0.269432 0.787124 +vt 0.287745 0.762686 +vt 0.238185 0.604720 +vt 0.290653 0.758580 +vt 0.242894 0.599928 +vt 0.293448 0.754172 +vt 0.296122 0.749474 +vt 0.247777 0.595889 +vt 0.311618 0.720772 +vt 0.312874 0.699527 +vt 0.312874 0.717826 +vt 0.313752 0.714376 +vt 0.314203 0.710612 +vt 0.314203 0.706741 +vt 0.313752 0.702977 +vt 0.275884 0.588655 +vt 0.266180 0.582335 +vt 0.267957 0.581459 +vt 0.269787 0.581390 +vt 0.271580 0.582129 +vt 0.273247 0.583642 +vt 0.274706 0.585854 +vt 0.041866 0.115036 +vt 0.043020 0.107791 +vt 0.048589 0.118325 +vt 0.049198 0.113228 +vt 0.044947 0.100979 +vt 0.050386 0.108695 +vt 0.052107 0.104882 +vt 0.047620 0.095047 +vt 0.054286 0.101950 +vt 0.050801 0.090152 +vt 0.054425 0.086726 +vt 0.056858 0.100058 +vt 0.058253 0.084831 +vt 0.059760 0.099306 +vt 0.142316 0.083872 +vt 0.139419 0.087089 +vt 0.014170 0.072258 +vt 0.015397 0.061413 +vt 0.022599 0.075285 +vt 0.023867 0.068264 +vt 0.017916 0.051130 +vt 0.025787 0.061644 +vt 0.028322 0.055753 +vt 0.021563 0.042091 +vt 0.031321 0.050777 +vt 0.026110 0.034835 +vt 0.031286 0.029810 +vt 0.034667 0.046999 +vt 0.036764 0.027343 +vt 0.038213 0.044551 +vt 0.029719 0.340077 +vt 0.022548 0.325778 +vt 0.040190 0.278081 +vt 0.166696 0.043968 +vt 0.166717 0.044600 +vt 0.166791 0.045205 +vt 0.166742 0.028933 +vt 0.166915 0.045771 +vt 0.167083 0.046291 +vt 0.167304 0.046774 +vt 0.167543 0.047172 +vt 0.167733 0.047462 +vt 0.041838 0.272141 +vt 0.014170 0.325778 +vt 0.180231 0.078961 +vt 0.035174 0.351683 +vt 0.175458 0.068806 +vt 0.175307 0.068385 +vt 0.175216 0.067903 +vt 0.175190 0.067386 +vt 0.175234 0.066840 +vt 0.175363 0.066272 +vt 0.020174 0.326147 +vt 0.020312 0.326838 +vt 0.020309 0.327038 +vt 0.022740 0.330459 +vt 0.020666 0.326018 +vt 0.020562 0.326316 +vt 0.020572 0.326213 +vt 0.020393 0.326598 +vt 0.026039 0.339139 +vt 0.027196 0.340158 +vt 0.027006 0.339657 +vt 0.027377 0.339494 +vt 0.026023 0.339515 +vt 0.026255 0.339595 +vt 0.026947 0.340044 +vt 0.027712 0.340443 +vt 0.198512 0.891009 +vt 0.198512 0.841554 +vt 0.201201 0.891009 +vt 0.201201 0.841554 +vt 0.203891 0.891009 +vt 0.203891 0.841554 +vt 0.206581 0.891009 +vt 0.206581 0.841554 +vt 0.209270 0.891009 +vt 0.209270 0.841554 +vt 0.211960 0.891009 +vt 0.211960 0.841554 +vt 0.214650 0.891009 +vt 0.214650 0.841554 +vt 0.217339 0.891009 +vt 0.217339 0.841554 +vt 0.254395 0.825757 +vt 0.229668 0.825757 +vt 0.254395 0.820378 +vt 0.229668 0.820378 +vt 0.254395 0.814999 +vt 0.229668 0.814999 +vt 0.254395 0.809619 +vt 0.229668 0.809619 +vt 0.254395 0.804240 +vt 0.229668 0.804240 +vt 0.254395 0.798861 +vt 0.229668 0.798861 +vt 0.254395 0.793481 +vt 0.229668 0.793481 +vt 0.254395 0.788102 +vt 0.229668 0.788102 +vt 0.171615 0.891009 +vt 0.171615 0.841554 +vt 0.174305 0.891009 +vt 0.174305 0.841554 +vt 0.176994 0.891009 +vt 0.176994 0.841554 +vt 0.179684 0.891009 +vt 0.179684 0.841554 +vt 0.182374 0.891009 +vt 0.182374 0.841554 +vt 0.185063 0.891009 +vt 0.185063 0.841554 +vt 0.187753 0.891009 +vt 0.187753 0.841554 +vt 0.190443 0.891009 +vt 0.190443 0.841554 +vt 0.193132 0.891009 +vt 0.193132 0.841554 +vt 0.195822 0.891009 +vt 0.195822 0.841554 +vt 0.496770 0.360900 +vt 0.494253 0.362711 +vt 0.496344 0.358534 +vt 0.494119 0.360392 +vt 0.495791 0.356126 +vt 0.493746 0.358519 +vt 0.495034 0.353878 +vt 0.493181 0.356986 +vt 0.494068 0.351903 +vt 0.492436 0.355749 +vt 0.492936 0.350248 +vt 0.491505 0.354803 +vt 0.491699 0.348859 +vt 0.490343 0.354114 +vt 0.375646 0.344190 +vt 0.490445 0.349374 +vt 0.375749 0.339450 +vt 0.377394 0.515644 +vt 0.378611 0.516112 +vt 0.357290 0.610646 +vt 0.379850 0.515952 +vt 0.362229 0.621886 +vt 0.381074 0.515145 +vt 0.382333 0.513486 +vt 0.470186 0.519810 +vt 0.383373 0.510938 +vt 0.469267 0.517200 +vt 0.383999 0.508203 +vt 0.468755 0.514421 +vt 0.428861 0.433622 +vt 0.468634 0.511614 +vt 0.430084 0.433434 +vt 0.468845 0.509246 +vt 0.431119 0.432698 +vt 0.469312 0.507246 +vt 0.431993 0.431501 +vt 0.470014 0.505563 +vt 0.432685 0.429903 +vt 0.470902 0.504307 +vt 0.433148 0.428013 +vt 0.471946 0.503517 +vt 0.433393 0.425798 +vt 0.473166 0.503208 +vt 0.433377 0.423282 +vt 0.384242 0.505321 +vt 0.427645 0.433165 +vt 0.384149 0.502829 +vt 0.426624 0.432259 +vt 0.383772 0.500666 +vt 0.425784 0.430905 +vt 0.383135 0.498782 +vt 0.425152 0.429177 +vt 0.382286 0.497301 +vt 0.424768 0.427198 +vt 0.381251 0.496267 +vt 0.424626 0.424929 +vt 0.380008 0.495691 +vt 0.371466 0.353005 +vt 0.378721 0.495724 +vt 0.377482 0.496417 +vt 0.376315 0.497744 +vt 0.375263 0.499714 +vt 0.374417 0.502331 +vt 0.373971 0.505379 +vt 0.374173 0.508446 +vt 0.374672 0.510996 +vt 0.375354 0.512991 +vt 0.376283 0.514578 +vt 0.433029 0.421049 +vt 0.432413 0.419104 +vt 0.431553 0.417492 +vt 0.430464 0.416272 +vt 0.429173 0.415545 +vt 0.427873 0.416118 +vt 0.426767 0.417159 +vt 0.425870 0.418598 +vt 0.425193 0.420395 +vt 0.424763 0.422519 +vt 0.472673 0.522685 +vt 0.473838 0.522978 +vt 0.494816 0.622129 +vt 0.474966 0.522686 +vt 0.499793 0.612545 +vt 0.476030 0.521845 +vt 0.476954 0.520495 +vt 0.477672 0.518727 +vt 0.478198 0.516501 +vt 0.478495 0.513775 +vt 0.478431 0.510693 +vt 0.477687 0.507988 +vt 0.476741 0.505878 +vt 0.475653 0.504364 +vt 0.474454 0.503460 +vt 0.471429 0.521684 +vt 0.499531 0.615319 +vt 0.498997 0.617527 +vt 0.498251 0.619267 +vt 0.497319 0.620592 +vt 0.496196 0.621528 +vt 0.360740 0.620948 +vt 0.359552 0.619689 +vt 0.358607 0.618064 +vt 0.357896 0.616064 +vt 0.357437 0.613638 +vt 0.371640 0.350548 +vt 0.372066 0.348566 +vt 0.372686 0.346978 +vt 0.373478 0.345740 +vt 0.374446 0.344828 +vt 0.496050 0.627989 +vt 0.497427 0.626828 +vt 0.498821 0.625423 +vt 0.500137 0.623588 +vt 0.501303 0.621257 +vt 0.502262 0.618493 +vt 0.503027 0.615451 +vt 0.494813 0.627609 +vt 0.362227 0.627365 +vt 0.354029 0.612867 +vt 0.354551 0.615931 +vt 0.355237 0.619056 +vt 0.356187 0.621983 +vt 0.357409 0.624569 +vt 0.358848 0.626749 +vt 0.360425 0.628591 +vt 0.374445 0.339142 +vt 0.373259 0.340271 +vt 0.372063 0.341617 +vt 0.370943 0.343334 +vt 0.369966 0.345474 +vt 0.369178 0.347978 +vt 0.368568 0.350711 +vt 0.354734 0.610083 +vt 0.368910 0.352442 +vt 0.496731 0.362491 +vt 0.502272 0.612325 +vt 0.549955 0.936679 +vt 0.546329 0.933675 +vt 0.553846 0.937703 +vt 0.543215 0.928896 +vt 0.540826 0.922668 +vt 0.539324 0.915416 +vt 0.538811 0.907633 +vt 0.989866 0.907633 +vt 0.989866 0.099076 +vt 0.538811 0.099076 +vt 0.974831 0.069007 +vt 0.553846 0.069007 +vt 0.539324 0.091294 +vt 0.540826 0.084041 +vt 0.543215 0.077814 +vt 0.546329 0.073035 +vt 0.549955 0.070031 +vt 0.978722 0.070032 +vt 0.982348 0.073035 +vt 0.985462 0.077814 +vt 0.987851 0.084041 +vt 0.989354 0.091294 +vt 0.974831 0.937702 +vt 0.989354 0.915416 +vt 0.987852 0.922668 +vt 0.985462 0.928895 +vt 0.982349 0.933674 +vt 0.978723 0.936678 +vn 0.9659 0.2588 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9659 -0.2588 -0.0000 +vn 0.8660 -0.5000 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn 0.5000 -0.8660 -0.0000 +vn 0.2588 -0.9659 -0.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.2588 -0.9659 -0.0000 +vn -0.5000 -0.8660 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -0.8660 -0.5000 -0.0000 +vn -0.9659 -0.2588 -0.0000 +vn -1.0000 0.0000 -0.0000 +vn -0.9659 0.2588 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.0000 1.0000 0.0000 +vn 0.2588 0.9659 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -0.9808 -0.1951 +vn 0.0000 -0.9659 -0.2588 +vn 0.0000 -0.9239 -0.3827 +vn -0.0000 -0.8660 -0.5000 +vn -0.0000 -0.8315 -0.5556 +vn -0.0000 -0.7071 -0.7071 +vn 0.0000 -0.5556 -0.8315 +vn -0.0000 -0.5000 -0.8660 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 -0.2588 -0.9659 +vn -0.0000 -0.1951 -0.9808 +vn -0.0000 0.0000 -1.0000 +vn -0.9659 0.0000 -0.2588 +vn -0.9330 -0.2500 -0.2589 +vn -0.8365 -0.4830 -0.2588 +vn -0.6830 -0.6830 -0.2588 +vn -0.4830 -0.8365 -0.2588 +vn -0.2500 -0.9330 -0.2588 +vn -0.2241 -0.8365 -0.5000 +vn -0.1830 -0.6830 -0.7071 +vn -0.1294 -0.4830 -0.8660 +vn -0.0670 -0.2500 -0.9659 +vn -0.8660 -0.0000 -0.5000 +vn -0.8365 -0.2241 -0.5000 +vn -0.7500 -0.4330 -0.5000 +vn -0.6124 -0.6124 -0.5000 +vn -0.4330 -0.7500 -0.5000 +vn -0.7071 -0.0000 -0.7071 +vn -0.6830 -0.1830 -0.7071 +vn -0.6124 -0.3536 -0.7071 +vn -0.5000 -0.5000 -0.7071 +vn -0.3536 -0.6124 -0.7071 +vn -0.5000 -0.0000 -0.8660 +vn -0.4830 -0.1294 -0.8660 +vn -0.4330 -0.2500 -0.8660 +vn -0.3536 -0.3536 -0.8660 +vn -0.2500 -0.4330 -0.8660 +vn -0.2588 0.0000 -0.9659 +vn -0.2500 -0.0670 -0.9659 +vn -0.2241 -0.1294 -0.9659 +vn -0.1830 -0.1830 -0.9659 +vn -0.1294 -0.2241 -0.9659 +vn 0.0000 0.9659 -0.2588 +vn -0.2500 0.9330 -0.2588 +vn -0.4830 0.8365 -0.2588 +vn -0.6830 0.6830 -0.2588 +vn -0.8365 0.4830 -0.2588 +vn -0.9330 0.2500 -0.2588 +vn -0.8365 0.2241 -0.5000 +vn -0.6830 0.1830 -0.7071 +vn -0.4830 0.1294 -0.8660 +vn -0.2500 0.0670 -0.9659 +vn -0.0000 0.8660 -0.5000 +vn -0.2241 0.8365 -0.5000 +vn -0.4330 0.7500 -0.5000 +vn -0.6124 0.6124 -0.5000 +vn -0.7500 0.4330 -0.5000 +vn -0.0000 0.7071 -0.7071 +vn -0.1830 0.6830 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn -0.5000 0.5000 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.0000 0.5000 -0.8660 +vn -0.1294 0.4830 -0.8660 +vn -0.2500 0.4330 -0.8660 +vn -0.3535 0.3535 -0.8660 +vn -0.4330 0.2500 -0.8660 +vn 0.0000 0.2588 -0.9659 +vn -0.0670 0.2500 -0.9659 +vn -0.1294 0.2242 -0.9659 +vn -0.1830 0.1830 -0.9659 +vn -0.2241 0.1294 -0.9659 +vn 0.9659 -0.0000 -0.2588 +vn 0.9330 0.2500 -0.2588 +vn 0.8365 0.4830 -0.2588 +vn 0.6830 0.6830 -0.2588 +vn 0.4830 0.8365 -0.2588 +vn 0.2500 0.9330 -0.2588 +vn 0.2241 0.8365 -0.5000 +vn 0.1830 0.6830 -0.7071 +vn 0.1294 0.4830 -0.8660 +vn 0.0670 0.2500 -0.9659 +vn 0.8660 0.0000 -0.5000 +vn 0.8365 0.2241 -0.5000 +vn 0.7500 0.4330 -0.5000 +vn 0.6124 0.6124 -0.5000 +vn 0.4330 0.7500 -0.5000 +vn 0.7071 0.0000 -0.7071 +vn 0.6830 0.1830 -0.7071 +vn 0.6124 0.3536 -0.7071 +vn 0.5000 0.5000 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.5000 0.0000 -0.8660 +vn 0.4830 0.1294 -0.8660 +vn 0.4330 0.2500 -0.8660 +vn 0.3536 0.3536 -0.8660 +vn 0.2500 0.4330 -0.8660 +vn 0.2588 -0.0000 -0.9659 +vn 0.2500 0.0670 -0.9659 +vn 0.2241 0.1294 -0.9659 +vn 0.1830 0.1830 -0.9659 +vn 0.1294 0.2241 -0.9659 +vn 0.2500 -0.9330 -0.2588 +vn 0.4830 -0.8365 -0.2588 +vn 0.6830 -0.6830 -0.2588 +vn 0.8365 -0.4830 -0.2588 +vn 0.9330 -0.2500 -0.2588 +vn 0.8365 -0.2241 -0.5000 +vn 0.6830 -0.1830 -0.7071 +vn 0.4830 -0.1294 -0.8660 +vn 0.2500 -0.0670 -0.9659 +vn 0.2241 -0.8365 -0.5000 +vn 0.4330 -0.7500 -0.5000 +vn 0.6124 -0.6124 -0.5000 +vn 0.7500 -0.4330 -0.5000 +vn 0.1830 -0.6830 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn 0.5000 -0.5000 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn 0.1294 -0.4830 -0.8660 +vn 0.2500 -0.4330 -0.8660 +vn 0.3536 -0.3536 -0.8660 +vn 0.4330 -0.2500 -0.8660 +vn 0.0670 -0.2500 -0.9659 +vn 0.1294 -0.2242 -0.9659 +vn 0.1830 -0.1830 -0.9659 +vn 0.2242 -0.1294 -0.9659 +vn 0.0000 -0.9659 -0.2589 +vn 0.2588 -0.0000 0.9659 +vn 0.5000 0.0000 0.8660 +vn 0.7071 0.0000 0.7071 +vn 0.8660 0.0000 0.5000 +vn 0.9659 -0.0000 0.2588 +vn -0.0000 0.9659 0.2588 +vn 0.2500 0.9330 0.2588 +vn 0.4830 0.8365 0.2588 +vn 0.6830 0.6830 0.2588 +vn 0.8365 0.4830 0.2588 +vn 0.9330 0.2500 0.2589 +vn 0.8365 0.2241 0.5000 +vn 0.6830 0.1830 0.7071 +vn 0.4830 0.1294 0.8660 +vn 0.2500 0.0670 0.9659 +vn 0.0000 0.8660 0.5000 +vn 0.2241 0.8365 0.5000 +vn 0.4330 0.7500 0.5000 +vn 0.6124 0.6124 0.5000 +vn 0.7500 0.4330 0.5000 +vn 0.0000 0.7071 0.7071 +vn 0.1830 0.6830 0.7071 +vn 0.3535 0.6124 0.7071 +vn 0.5000 0.5000 0.7071 +vn 0.6124 0.3536 0.7071 +vn 0.0000 0.5000 0.8660 +vn 0.1294 0.4830 0.8660 +vn 0.2500 0.4330 0.8660 +vn 0.3535 0.3535 0.8660 +vn 0.4330 0.2500 0.8660 +vn -0.0000 0.2588 0.9659 +vn 0.0670 0.2500 0.9659 +vn 0.1294 0.2241 0.9659 +vn 0.1830 0.1830 0.9659 +vn 0.2241 0.1294 0.9659 +vn -0.9659 -0.0000 0.2588 +vn -0.9330 0.2500 0.2588 +vn -0.8365 0.4830 0.2588 +vn -0.6830 0.6830 0.2588 +vn -0.4830 0.8365 0.2588 +vn -0.2500 0.9330 0.2588 +vn -0.2241 0.8365 0.5000 +vn -0.1830 0.6830 0.7071 +vn -0.1294 0.4830 0.8660 +vn -0.0670 0.2500 0.9659 +vn -0.8660 0.0000 0.5000 +vn -0.8365 0.2241 0.5000 +vn -0.7500 0.4330 0.5000 +vn -0.6124 0.6124 0.5000 +vn -0.4330 0.7500 0.5000 +vn -0.7071 0.0000 0.7071 +vn -0.6830 0.1830 0.7071 +vn -0.6124 0.3535 0.7071 +vn -0.5000 0.5000 0.7071 +vn -0.3536 0.6124 0.7071 +vn -0.5000 0.0000 0.8660 +vn -0.4830 0.1294 0.8660 +vn -0.4330 0.2500 0.8660 +vn -0.3536 0.3536 0.8660 +vn -0.2500 0.4330 0.8660 +vn -0.2588 -0.0000 0.9659 +vn -0.2500 0.0670 0.9659 +vn -0.2241 0.1294 0.9659 +vn -0.1830 0.1830 0.9659 +vn -0.1294 0.2242 0.9659 +vn 0.0000 -0.9659 0.2588 +vn -0.2500 -0.9330 0.2588 +vn -0.4830 -0.8365 0.2588 +vn -0.6830 -0.6830 0.2588 +vn -0.8365 -0.4830 0.2588 +vn -0.9330 -0.2500 0.2588 +vn -0.8365 -0.2241 0.5000 +vn -0.6830 -0.1830 0.7071 +vn -0.4830 -0.1294 0.8660 +vn -0.2500 -0.0670 0.9659 +vn -0.0000 -0.8660 0.5000 +vn -0.2241 -0.8365 0.5000 +vn -0.4330 -0.7500 0.5000 +vn -0.6124 -0.6124 0.5000 +vn -0.7500 -0.4330 0.5000 +vn -0.0000 -0.7071 0.7071 +vn -0.1830 -0.6830 0.7071 +vn -0.3535 -0.6124 0.7071 +vn -0.5000 -0.5000 0.7071 +vn -0.6124 -0.3535 0.7071 +vn -0.0000 -0.5000 0.8660 +vn -0.1294 -0.4830 0.8660 +vn -0.2500 -0.4330 0.8660 +vn -0.3535 -0.3535 0.8660 +vn -0.4330 -0.2500 0.8660 +vn 0.0000 -0.2588 0.9659 +vn -0.0670 -0.2500 0.9659 +vn -0.1294 -0.2242 0.9659 +vn -0.1830 -0.1830 0.9659 +vn -0.2241 -0.1294 0.9659 +vn 0.0670 -0.2500 0.9659 +vn 0.1294 -0.2241 0.9659 +vn 0.1830 -0.1830 0.9659 +vn 0.2241 -0.1294 0.9659 +vn 0.2500 -0.0670 0.9659 +vn 0.4830 -0.1294 0.8660 +vn 0.6830 -0.1830 0.7071 +vn 0.8365 -0.2241 0.5000 +vn 0.9330 -0.2500 0.2588 +vn 0.1294 -0.4830 0.8660 +vn 0.2500 -0.4330 0.8660 +vn 0.3536 -0.3536 0.8660 +vn 0.4330 -0.2500 0.8660 +vn 0.1830 -0.6830 0.7071 +vn 0.3536 -0.6124 0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.6124 -0.3536 0.7071 +vn 0.2241 -0.8365 0.5000 +vn 0.4330 -0.7500 0.5000 +vn 0.6124 -0.6124 0.5000 +vn 0.7500 -0.4330 0.5000 +vn 0.2500 -0.9330 0.2588 +vn 0.4830 -0.8365 0.2588 +vn 0.6830 -0.6830 0.2588 +vn 0.8365 -0.4830 0.2588 +vn 0.9944 -0.1056 -0.0000 +vn 0.9874 -0.1580 0.0000 +vn 0.9583 -0.1211 -0.2588 +vn 0.9538 -0.1526 -0.2588 +vn 0.8552 -0.1368 -0.5000 +vn 0.8592 -0.1086 -0.5000 +vn 0.6982 -0.1117 -0.7071 +vn 0.7015 -0.0886 -0.7071 +vn 0.4937 -0.0790 -0.8660 +vn 0.4961 -0.0627 -0.8660 +vn 0.2556 -0.0409 -0.9659 +vn 0.2568 -0.0324 -0.9659 +vn 0.9986 -0.0528 -0.0000 +vn 0.8551 -0.1368 -0.5000 +vn 0.2332 -0.9724 0.0000 +vn 0.4535 -0.8912 -0.0000 +vn 0.4829 -0.8365 -0.2588 +vn 0.6489 -0.7609 0.0000 +vn 0.8084 -0.5886 0.0000 +vn 0.9234 -0.3839 -0.0000 +vn 0.8365 -0.2242 -0.5000 +vn 0.3535 -0.6124 -0.7071 +vn 0.3536 -0.3535 -0.8660 +vn -0.8969 -0.4422 0.0000 +vn -0.9724 -0.2334 -0.0000 +vn -0.9330 -0.2500 -0.2588 +vn -0.9393 -0.2254 -0.2588 +vn -0.8421 -0.2021 -0.5000 +vn -0.8365 -0.2242 -0.5000 +vn -0.6876 -0.1650 -0.7071 +vn -0.4862 -0.1167 -0.8660 +vn -0.2517 -0.0604 -0.9659 +vn -0.1294 -0.2242 -0.9659 +vn -0.3536 -0.3535 -0.8660 +vn -0.2207 -0.9753 0.0000 +vn -0.4305 -0.9026 -0.0000 +vn -0.6191 -0.7853 -0.0000 +vn -0.7772 -0.6293 0.0000 +vn -0.9392 -0.2254 -0.2588 +vn -0.9969 -0.0784 0.0000 +vn -0.9877 -0.1564 0.0000 +vn 0.0000 0.0001 -1.0000 +vn 0.0000 -0.0001 -1.0000 +vn 0.2556 -0.0409 0.9659 +vn 0.4937 -0.0790 0.8660 +vn 0.6982 -0.1117 0.7071 +vn 0.8552 -0.1368 0.5000 +vn 0.9538 -0.1526 0.2588 +vn 0.8551 -0.1368 0.5000 +vn 0.1294 -0.2242 0.9659 +vn 0.8365 -0.2242 0.5000 +vn 0.4829 -0.8365 0.2588 +vn 0.3536 -0.3535 0.8660 +vn -0.2517 -0.0604 0.9659 +vn -0.4862 -0.1167 0.8660 +vn -0.6876 -0.1650 0.7071 +vn -0.8421 -0.2021 0.5000 +vn -0.9392 -0.2254 0.2588 +vn -0.3536 -0.6124 0.7071 +vn -0.3536 -0.3535 0.8660 +vn -0.1294 -0.2241 0.9659 +vn -0.9393 -0.2254 0.2588 +vn -0.2568 -0.0324 0.9659 +vn -0.4960 -0.0627 0.8660 +vn -0.7015 -0.0886 0.7071 +vn -0.8592 -0.1085 0.5000 +vn -0.9583 -0.1211 0.2588 +vn 0.7433 0.6690 0.0000 +vn 0.8830 0.4693 0.0000 +vn 0.7433 0.6689 0.0000 +vn 0.9703 0.2419 0.0000 +vn 0.9703 0.2418 0.0000 +vn 0.9703 -0.2419 -0.0000 +vn 0.9703 -0.2418 -0.0000 +vn 0.8830 -0.4693 -0.0000 +vn 0.7433 -0.6690 0.0000 +vn -0.7433 -0.6690 -0.0000 +vn -0.8830 -0.4693 -0.0000 +vn -0.9703 -0.2418 -0.0000 +vn -0.9703 -0.2419 -0.0000 +vn -0.9703 0.2418 0.0000 +vn -0.9703 0.2419 0.0000 +vn -0.8830 0.4693 0.0000 +vn -0.7433 0.6690 0.0000 +vn -0.7433 0.6690 -0.0001 +vn -0.7433 0.6690 0.0001 +vn -0.7433 0.6689 -0.0002 +s 1 +f 1/1/1 2/2/1 3/3/2 +f 3/3/2 2/2/1 4/4/2 +f 3/3/2 4/4/2 5/5/3 +f 5/5/3 4/4/2 6/6/3 +f 5/5/3 6/6/3 7/7/4 +f 7/7/4 6/6/3 8/8/4 +f 7/7/4 8/8/4 9/9/5 +f 9/9/5 8/8/4 10/10/5 +f 9/9/5 10/10/5 11/11/6 +f 11/11/6 10/10/5 12/12/6 +f 11/11/6 12/12/6 13/13/7 +f 13/13/7 12/12/6 14/14/7 +f 13/13/7 14/14/7 15/15/8 +f 15/15/8 14/14/7 16/16/8 +f 15/15/8 16/16/8 17/17/9 +f 17/17/9 16/16/8 18/18/9 +f 17/17/9 18/18/9 19/19/10 +f 19/19/10 18/18/9 20/20/10 +f 19/19/10 20/20/10 21/21/11 +f 21/21/11 20/20/10 22/22/11 +f 21/21/11 22/22/11 23/23/12 +f 23/23/12 22/22/11 24/24/12 +f 23/23/12 24/24/12 25/25/13 +f 25/25/13 24/24/12 26/26/13 +f 25/25/13 26/26/13 27/27/14 +f 27/27/14 26/26/13 28/28/14 +f 27/27/14 28/28/14 29/29/15 +f 29/29/15 28/28/14 30/30/15 +f 29/31/15 30/32/15 31/33/16 +f 31/33/16 30/32/15 32/34/16 +f 31/33/16 32/34/16 33/35/17 +f 33/35/17 32/34/16 34/36/17 +f 33/35/17 34/36/17 35/37/18 +f 35/37/18 34/36/17 36/38/18 +f 35/37/18 36/38/18 37/39/19 +f 37/39/19 36/38/18 38/40/19 +f 37/39/19 38/40/19 39/41/20 +f 39/41/20 38/40/19 40/42/20 +f 39/41/20 40/42/20 41/43/21 +f 41/43/21 40/42/20 42/44/21 +f 41/43/21 42/44/21 43/45/22 +f 43/45/22 42/44/21 44/46/22 +f 43/45/22 44/46/22 45/47/23 +f 45/47/23 44/46/22 46/48/23 +f 45/47/23 46/48/23 47/49/24 +f 47/49/24 46/48/23 48/50/24 +f 47/49/24 48/50/24 1/1/1 +f 1/1/1 48/50/24 2/2/1 +f 49/51/1 50/52/1 51/53/2 +f 51/53/2 50/52/1 52/54/2 +f 51/53/2 52/54/2 53/55/3 +f 53/55/3 52/54/2 54/56/3 +f 53/55/3 54/56/3 55/57/4 +f 55/57/4 54/56/3 56/58/4 +f 55/57/4 56/58/4 57/59/5 +f 57/59/5 56/58/4 58/60/5 +f 57/59/5 58/60/5 59/61/6 +f 59/61/6 58/60/5 60/62/6 +f 59/61/6 60/62/6 61/63/7 +f 61/63/7 60/62/6 62/64/7 +f 61/63/7 62/64/7 63/65/8 +f 63/65/8 62/64/7 64/66/8 +f 63/65/8 64/66/8 65/67/9 +f 65/67/9 64/66/8 66/68/9 +f 65/67/9 66/68/9 67/69/10 +f 67/69/10 66/68/9 68/70/10 +f 67/69/10 68/70/10 69/71/11 +f 69/71/11 68/70/10 70/72/11 +f 69/71/11 70/72/11 71/73/12 +f 71/73/12 70/72/11 72/74/12 +f 71/73/12 72/74/12 73/75/13 +f 73/75/13 72/74/12 74/76/13 +f 73/75/13 74/76/13 75/77/14 +f 75/77/14 74/76/13 76/78/14 +f 75/79/14 76/80/14 77/81/15 +f 77/81/15 76/80/14 78/82/15 +f 77/81/15 78/82/15 79/83/16 +f 79/83/16 78/82/15 80/84/16 +f 79/83/16 80/84/16 81/85/17 +f 81/85/17 80/84/16 82/86/17 +f 81/85/17 82/86/17 83/87/18 +f 83/87/18 82/86/17 84/88/18 +f 83/87/18 84/88/18 85/89/19 +f 85/89/19 84/88/18 86/90/19 +f 85/89/19 86/90/19 87/91/20 +f 87/91/20 86/90/19 88/92/20 +f 87/91/20 88/92/20 89/93/21 +f 89/93/21 88/92/20 90/94/21 +f 89/93/21 90/94/21 91/95/22 +f 91/95/22 90/94/21 92/96/22 +f 91/95/22 92/96/22 93/97/23 +f 93/97/23 92/96/22 94/98/23 +f 93/97/23 94/98/23 95/99/24 +f 95/99/24 94/98/23 96/100/24 +f 95/99/24 96/100/24 49/51/1 +f 49/51/1 96/100/24 50/52/1 +f 1/101/25 3/102/25 97/103/25 +f 97/103/25 3/102/25 5/104/25 +f 97/103/25 5/104/25 7/105/25 +f 7/105/25 9/106/25 97/103/25 +f 97/103/25 9/106/25 11/107/25 +f 97/103/25 11/107/25 13/108/25 +f 13/108/25 15/109/25 97/103/25 +f 97/103/25 15/109/25 98/110/25 +f 98/110/25 15/109/25 17/111/25 +f 98/110/25 17/111/25 19/112/25 +f 19/112/25 21/113/25 98/110/25 +f 98/110/25 21/113/25 23/114/25 +f 98/110/25 23/114/25 25/115/25 +f 25/115/25 27/116/25 98/110/25 +f 98/110/25 27/116/25 99/117/25 +f 98/110/25 99/117/25 100/118/25 +f 27/116/25 29/119/25 99/117/25 +f 99/117/25 29/119/25 31/120/25 +f 99/117/25 31/120/25 33/121/25 +f 33/121/25 35/122/25 99/117/25 +f 99/117/25 35/122/25 37/123/25 +f 99/117/25 37/123/25 39/124/25 +f 39/124/25 41/125/25 99/117/25 +f 99/117/25 41/125/25 43/126/25 +f 99/117/25 43/126/25 101/127/25 +f 101/127/25 43/126/25 102/128/25 +f 101/127/25 102/128/25 103/129/25 +f 43/126/25 45/130/25 102/128/25 +f 102/128/25 45/130/25 104/131/25 +f 104/131/25 45/130/25 47/132/25 +f 104/131/25 47/132/25 105/133/25 +f 105/133/25 47/132/25 1/101/25 +f 105/133/25 1/101/25 106/134/25 +f 106/134/25 1/101/25 97/103/25 +f 106/134/25 97/103/25 107/135/25 +f 49/136/25 51/137/25 108/138/25 +f 108/138/25 51/137/25 53/139/25 +f 108/138/25 53/139/25 109/140/25 +f 109/140/25 53/139/25 55/141/25 +f 109/140/25 55/141/25 110/142/25 +f 110/142/25 55/141/25 57/143/25 +f 110/142/25 57/143/25 100/118/25 +f 100/118/25 57/143/25 59/144/25 +f 100/118/25 59/144/25 61/145/25 +f 61/145/25 63/146/25 100/118/25 +f 100/118/25 63/146/25 98/110/25 +f 98/110/25 63/146/25 111/147/25 +f 111/147/25 63/146/25 65/148/25 +f 111/147/25 65/148/25 67/149/25 +f 67/149/25 69/150/25 111/147/25 +f 111/147/25 69/150/25 71/151/25 +f 111/147/25 71/151/25 73/152/25 +f 111/147/25 73/152/25 112/153/25 +f 112/153/25 73/152/25 75/154/25 +f 112/153/25 75/154/25 113/155/25 +f 113/155/25 75/154/25 114/156/25 +f 114/156/25 75/154/25 115/157/25 +f 115/157/25 75/154/25 116/158/25 +f 116/158/25 75/154/25 77/159/25 +f 116/158/25 77/159/25 117/160/25 +f 117/160/25 77/159/25 79/161/25 +f 117/160/25 79/161/25 81/162/25 +f 81/162/25 83/163/25 117/160/25 +f 117/160/25 83/163/25 85/164/25 +f 117/160/25 85/164/25 87/165/25 +f 89/166/25 118/167/25 87/165/25 +f 87/165/25 118/167/25 119/168/25 +f 87/165/25 119/168/25 117/160/25 +f 89/166/25 91/169/25 118/167/25 +f 118/167/25 91/169/25 93/170/25 +f 118/167/25 93/170/25 120/171/25 +f 120/171/25 93/170/25 95/172/25 +f 120/171/25 95/172/25 121/173/25 +f 121/173/25 95/172/25 49/136/25 +f 121/173/25 49/136/25 108/138/25 +f 118/167/25 101/127/25 119/168/25 +f 119/168/25 101/127/25 122/174/25 +f 119/168/25 122/174/25 123/175/25 +f 119/168/25 124/176/25 107/135/25 +f 107/135/25 124/176/25 125/177/25 +f 107/135/25 125/177/25 126/178/25 +f 127/179/25 128/180/25 107/135/25 +f 107/135/25 128/180/25 106/134/25 +f 103/129/25 129/181/25 101/127/25 +f 101/127/25 129/181/25 130/182/25 +f 101/127/25 130/182/25 131/183/25 +f 131/183/25 132/184/25 101/127/25 +f 101/127/25 132/184/25 133/185/25 +f 101/127/25 133/185/25 134/186/25 +f 134/186/25 122/174/25 101/127/25 +f 123/175/25 135/187/25 119/168/25 +f 119/168/25 135/187/25 136/188/25 +f 119/168/25 136/188/25 137/189/25 +f 137/189/25 138/190/25 119/168/25 +f 119/168/25 138/190/25 124/176/25 +f 126/178/25 139/191/25 107/135/25 +f 107/135/25 139/191/25 140/192/25 +f 107/135/25 140/192/25 127/179/25 +f 141/193/8 142/194/8 143/195/26 +f 143/195/26 142/194/8 144/196/27 +f 143/195/26 144/196/27 145/197/28 +f 145/197/28 144/196/27 146/198/29 +f 145/197/28 146/198/29 147/199/30 +f 147/199/30 146/198/29 148/200/31 +f 147/199/30 148/200/31 149/201/31 +f 149/201/31 148/200/31 150/202/32 +f 150/202/32 148/200/31 151/203/33 +f 150/202/32 151/203/33 152/204/34 +f 152/204/34 151/203/33 153/205/35 +f 152/204/34 153/205/35 154/206/36 +f 154/206/36 153/205/35 155/207/37 +f 154/206/36 155/207/37 156/208/37 +f 157/209/14 158/210/38 159/211/13 +f 159/211/13 158/210/38 160/212/39 +f 159/211/13 160/212/39 161/213/12 +f 161/213/12 160/212/39 162/214/40 +f 161/213/12 162/214/40 163/215/11 +f 163/215/11 162/214/40 164/216/41 +f 163/215/11 164/216/41 165/217/10 +f 165/217/10 164/216/41 166/218/42 +f 165/217/10 166/218/42 167/219/9 +f 167/219/9 166/218/42 168/220/43 +f 167/219/9 168/220/43 142/194/8 +f 142/194/8 168/220/43 144/196/27 +f 144/196/27 168/220/43 169/221/44 +f 144/196/27 169/221/44 146/198/29 +f 146/198/29 169/221/44 170/222/45 +f 146/198/29 170/222/45 148/200/31 +f 148/200/31 170/222/45 171/223/46 +f 148/200/31 171/223/46 151/203/33 +f 151/203/33 171/223/46 172/224/47 +f 151/203/33 172/224/47 153/205/35 +f 153/205/35 172/224/47 173/225/37 +f 153/205/35 173/225/37 155/207/37 +f 158/210/38 174/226/48 160/212/39 +f 160/212/39 174/226/48 175/227/49 +f 160/212/39 175/227/49 162/214/40 +f 162/214/40 175/227/49 176/228/50 +f 162/214/40 176/228/50 164/216/41 +f 164/216/41 176/228/50 177/229/51 +f 164/216/41 177/229/51 166/218/42 +f 166/218/42 177/229/51 178/230/52 +f 166/218/42 178/230/52 168/220/43 +f 168/220/43 178/230/52 169/221/44 +f 174/226/48 179/231/53 175/227/49 +f 175/227/49 179/231/53 180/232/54 +f 175/227/49 180/232/54 176/228/50 +f 176/228/50 180/232/54 181/233/55 +f 176/228/50 181/233/55 177/229/51 +f 177/229/51 181/233/55 182/234/56 +f 177/229/51 182/234/56 178/230/52 +f 178/230/52 182/234/56 183/235/57 +f 178/230/52 183/235/57 169/221/44 +f 169/221/44 183/235/57 170/222/45 +f 179/231/53 184/236/58 180/232/54 +f 180/232/54 184/236/58 185/237/59 +f 180/232/54 185/237/59 181/233/55 +f 181/233/55 185/237/59 186/238/60 +f 181/233/55 186/238/60 182/234/56 +f 182/234/56 186/238/60 187/239/61 +f 182/234/56 187/239/61 183/235/57 +f 183/235/57 187/239/61 188/240/62 +f 183/235/57 188/240/62 170/222/45 +f 170/222/45 188/240/62 171/223/46 +f 184/236/58 189/241/63 185/237/59 +f 185/237/59 189/241/63 190/242/64 +f 185/237/59 190/242/64 186/238/60 +f 186/238/60 190/242/64 191/243/65 +f 186/238/60 191/243/65 187/239/61 +f 187/239/61 191/243/65 192/244/66 +f 187/239/61 192/244/66 188/240/62 +f 188/240/62 192/244/66 193/245/67 +f 188/240/62 193/245/67 171/223/46 +f 171/223/46 193/245/67 172/224/47 +f 189/241/63 194/246/37 190/242/64 +f 190/242/64 194/246/37 195/247/37 +f 190/242/64 195/247/37 191/243/65 +f 191/243/65 195/247/37 196/248/37 +f 191/243/65 196/248/37 192/244/66 +f 192/244/66 196/248/37 197/249/37 +f 192/244/66 197/249/37 193/245/67 +f 193/245/67 197/249/37 198/250/37 +f 193/245/67 198/250/37 172/224/47 +f 172/224/47 198/250/37 173/225/37 +f 157/209/14 199/251/14 158/210/38 +f 158/210/38 199/251/14 200/252/38 +f 158/210/38 200/252/38 174/226/48 +f 174/226/48 200/252/38 201/253/48 +f 174/226/48 201/253/48 179/231/53 +f 179/231/53 201/253/48 202/254/53 +f 179/231/53 202/254/53 184/236/58 +f 184/236/58 202/254/53 203/255/58 +f 184/236/58 203/255/58 189/241/63 +f 189/241/63 203/255/58 204/256/63 +f 189/241/63 204/256/63 194/246/37 +f 194/246/37 204/256/63 205/257/37 +f 206/258/20 207/259/68 208/260/19 +f 208/260/19 207/259/68 209/261/69 +f 208/260/19 209/261/69 210/262/18 +f 210/262/18 209/261/69 211/263/70 +f 210/262/18 211/263/70 212/264/17 +f 212/264/17 211/263/70 213/265/71 +f 212/264/17 213/265/71 214/266/16 +f 214/266/16 213/265/71 215/267/72 +f 214/266/16 215/267/72 216/268/15 +f 216/268/15 215/267/72 217/269/73 +f 216/268/15 217/269/73 199/251/14 +f 199/251/14 217/269/73 200/252/38 +f 200/252/38 217/269/73 218/270/74 +f 200/252/38 218/270/74 201/253/48 +f 201/253/48 218/270/74 219/271/75 +f 201/253/48 219/271/75 202/254/53 +f 202/254/53 219/271/75 220/272/76 +f 202/254/53 220/272/76 203/255/58 +f 203/255/58 220/272/76 221/273/77 +f 203/255/58 221/273/77 204/256/63 +f 204/256/63 221/273/77 222/274/37 +f 204/256/63 222/274/37 205/257/37 +f 207/259/68 223/275/78 209/261/69 +f 209/261/69 223/275/78 224/276/79 +f 209/261/69 224/276/79 211/263/70 +f 211/263/70 224/276/79 225/277/80 +f 211/263/70 225/277/80 213/265/71 +f 213/265/71 225/277/80 226/278/81 +f 213/265/71 226/278/81 215/267/72 +f 215/267/72 226/278/81 227/279/82 +f 215/267/72 227/279/82 217/269/73 +f 217/269/73 227/279/82 218/270/74 +f 223/275/78 228/280/83 224/276/79 +f 224/276/79 228/280/83 229/281/84 +f 224/276/79 229/281/84 225/277/80 +f 225/277/80 229/281/84 230/282/85 +f 225/277/80 230/282/85 226/278/81 +f 226/278/81 230/282/85 231/283/86 +f 226/278/81 231/283/86 227/279/82 +f 227/279/82 231/283/86 232/284/87 +f 227/279/82 232/284/87 218/270/74 +f 218/270/74 232/284/87 219/271/75 +f 228/280/83 233/285/88 229/281/84 +f 229/281/84 233/285/88 234/286/89 +f 229/281/84 234/286/89 230/282/85 +f 230/282/85 234/286/89 235/287/90 +f 230/282/85 235/287/90 231/283/86 +f 231/283/86 235/287/90 236/288/91 +f 231/283/86 236/288/91 232/284/87 +f 232/284/87 236/288/91 237/289/92 +f 232/284/87 237/289/92 219/271/75 +f 219/271/75 237/289/92 220/272/76 +f 233/285/88 238/290/93 234/286/89 +f 234/286/89 238/290/93 239/291/94 +f 234/286/89 239/291/94 235/287/90 +f 235/287/90 239/291/94 240/292/95 +f 235/287/90 240/292/95 236/288/91 +f 236/288/91 240/292/95 241/293/96 +f 236/288/91 241/293/96 237/289/92 +f 237/289/92 241/293/96 242/294/97 +f 237/289/92 242/294/97 220/272/76 +f 220/272/76 242/294/97 221/273/77 +f 238/290/93 243/295/37 239/291/94 +f 239/291/94 243/295/37 244/296/37 +f 239/291/94 244/296/37 240/292/95 +f 240/292/95 244/296/37 245/297/37 +f 240/292/95 245/297/37 241/293/96 +f 241/293/96 245/297/37 246/298/37 +f 241/293/96 246/298/37 242/294/97 +f 242/294/97 246/298/37 247/299/37 +f 242/294/97 247/299/37 221/273/77 +f 221/273/77 247/299/37 222/274/37 +f 206/258/20 248/300/20 207/259/68 +f 207/259/68 248/300/20 249/301/68 +f 207/259/68 249/301/68 223/275/78 +f 223/275/78 249/301/68 250/302/78 +f 223/275/78 250/302/78 228/280/83 +f 228/280/83 250/302/78 251/303/83 +f 228/280/83 251/303/83 233/285/88 +f 233/285/88 251/303/83 252/304/88 +f 233/285/88 252/304/88 238/290/93 +f 238/290/93 252/304/88 253/305/93 +f 238/290/93 253/305/93 243/295/37 +f 243/295/37 253/305/93 254/306/37 +f 255/307/2 256/308/98 257/309/1 +f 257/309/1 256/308/98 258/310/99 +f 257/309/1 258/310/99 259/311/24 +f 259/311/24 258/310/99 260/312/100 +f 259/311/24 260/312/100 261/313/23 +f 261/313/23 260/312/100 262/314/101 +f 261/313/23 262/314/101 263/315/22 +f 263/315/22 262/314/101 264/316/102 +f 263/315/22 264/316/102 265/317/21 +f 265/317/21 264/316/102 266/318/103 +f 265/317/21 266/318/103 248/300/20 +f 248/300/20 266/318/103 249/301/68 +f 249/301/68 266/318/103 267/319/104 +f 249/301/68 267/319/104 250/302/78 +f 250/302/78 267/319/104 268/320/105 +f 250/302/78 268/320/105 251/303/83 +f 251/303/83 268/320/105 269/321/106 +f 251/303/83 269/321/106 252/304/88 +f 252/304/88 269/321/106 270/322/107 +f 252/304/88 270/322/107 253/305/93 +f 253/305/93 270/322/107 271/323/37 +f 253/305/93 271/323/37 254/306/37 +f 256/308/98 272/324/108 258/310/99 +f 258/310/99 272/324/108 273/325/109 +f 258/310/99 273/325/109 260/312/100 +f 260/312/100 273/325/109 274/326/110 +f 260/312/100 274/326/110 262/314/101 +f 262/314/101 274/326/110 275/327/111 +f 262/314/101 275/327/111 264/316/102 +f 264/316/102 275/327/111 276/328/112 +f 264/316/102 276/328/112 266/318/103 +f 266/318/103 276/328/112 267/319/104 +f 272/324/108 277/329/113 273/325/109 +f 273/325/109 277/329/113 278/330/114 +f 273/325/109 278/330/114 274/326/110 +f 274/326/110 278/330/114 279/331/115 +f 274/326/110 279/331/115 275/327/111 +f 275/327/111 279/331/115 280/332/116 +f 275/327/111 280/332/116 276/328/112 +f 276/328/112 280/332/116 281/333/117 +f 276/328/112 281/333/117 267/319/104 +f 267/319/104 281/333/117 268/320/105 +f 277/329/113 282/334/118 278/330/114 +f 278/330/114 282/334/118 283/335/119 +f 278/330/114 283/335/119 279/331/115 +f 279/331/115 283/335/119 284/336/120 +f 279/331/115 284/336/120 280/332/116 +f 280/332/116 284/336/120 285/337/121 +f 280/332/116 285/337/121 281/333/117 +f 281/333/117 285/337/121 286/338/122 +f 281/333/117 286/338/122 268/320/105 +f 268/320/105 286/338/122 269/321/106 +f 282/334/118 287/339/123 283/335/119 +f 283/335/119 287/339/123 288/340/124 +f 283/335/119 288/340/124 284/336/120 +f 284/336/120 288/340/124 289/341/125 +f 284/336/120 289/341/125 285/337/121 +f 285/337/121 289/341/125 290/342/126 +f 285/337/121 290/342/126 286/338/122 +f 286/338/122 290/342/126 291/343/127 +f 286/338/122 291/343/127 269/321/106 +f 269/321/106 291/343/127 270/322/107 +f 287/339/123 292/344/37 288/340/124 +f 288/340/124 292/344/37 293/345/37 +f 288/340/124 293/345/37 289/341/125 +f 289/341/125 293/345/37 294/346/37 +f 289/341/125 294/346/37 290/342/126 +f 290/342/126 294/346/37 295/347/37 +f 290/342/126 295/347/37 291/343/127 +f 291/343/127 295/347/37 296/348/37 +f 291/343/127 296/348/37 270/322/107 +f 270/322/107 296/348/37 271/323/37 +f 255/307/2 297/349/2 256/308/98 +f 256/308/98 297/349/2 298/350/98 +f 256/308/98 298/350/98 272/324/108 +f 272/324/108 298/350/98 299/351/108 +f 272/324/108 299/351/108 277/329/113 +f 277/329/113 299/351/108 300/352/113 +f 277/329/113 300/352/113 282/334/118 +f 282/334/118 300/352/113 301/353/118 +f 282/334/118 301/353/118 287/339/123 +f 287/339/123 301/353/118 302/354/123 +f 287/339/123 302/354/123 292/344/37 +f 292/344/37 302/354/123 303/355/37 +f 304/356/8 305/357/27 306/358/7 +f 306/358/7 305/357/27 307/359/128 +f 306/358/7 307/359/128 308/360/6 +f 308/360/6 307/359/128 309/361/129 +f 308/360/6 309/361/129 310/362/5 +f 310/362/5 309/361/129 311/363/130 +f 310/362/5 311/363/130 312/364/4 +f 312/364/4 311/363/130 313/365/131 +f 312/364/4 313/365/131 314/366/3 +f 314/366/3 313/365/131 315/367/132 +f 314/366/3 315/367/132 297/349/2 +f 297/349/2 315/367/132 298/350/98 +f 298/350/98 315/367/132 316/368/133 +f 298/350/98 316/368/133 299/351/108 +f 299/351/108 316/368/133 317/369/134 +f 299/351/108 317/369/134 300/352/113 +f 300/352/113 317/369/134 318/370/135 +f 300/352/113 318/370/135 301/353/118 +f 301/353/118 318/370/135 319/371/136 +f 301/353/118 319/371/136 302/354/123 +f 302/354/123 319/371/136 320/372/37 +f 302/354/123 320/372/37 303/355/37 +f 305/357/27 321/373/29 307/359/128 +f 307/359/128 321/373/29 322/374/137 +f 307/359/128 322/374/137 309/361/129 +f 309/361/129 322/374/137 323/375/138 +f 309/361/129 323/375/138 311/363/130 +f 311/363/130 323/375/138 324/376/139 +f 311/363/130 324/376/139 313/365/131 +f 313/365/131 324/376/139 325/377/140 +f 313/365/131 325/377/140 315/367/132 +f 315/367/132 325/377/140 316/368/133 +f 321/373/29 326/378/31 322/374/137 +f 322/374/137 326/378/31 327/379/141 +f 322/374/137 327/379/141 323/375/138 +f 323/375/138 327/379/141 328/380/142 +f 323/375/138 328/380/142 324/376/139 +f 324/376/139 328/380/142 329/381/143 +f 324/376/139 329/381/143 325/377/140 +f 325/377/140 329/381/143 330/382/144 +f 325/377/140 330/382/144 316/368/133 +f 316/368/133 330/382/144 317/369/134 +f 326/378/31 331/383/33 327/379/141 +f 327/379/141 331/383/33 332/384/145 +f 327/379/141 332/384/145 328/380/142 +f 328/380/142 332/384/145 333/385/146 +f 328/380/142 333/385/146 329/381/143 +f 329/381/143 333/385/146 334/386/147 +f 329/381/143 334/386/147 330/382/144 +f 330/382/144 334/386/147 335/387/148 +f 330/382/144 335/387/148 317/369/134 +f 317/369/134 335/387/148 318/370/135 +f 331/383/33 336/388/35 332/384/145 +f 332/384/145 336/388/35 337/389/149 +f 332/384/145 337/389/149 333/385/146 +f 333/385/146 337/389/149 338/390/150 +f 333/385/146 338/390/150 334/386/147 +f 334/386/147 338/390/150 339/391/151 +f 334/386/147 339/391/151 335/387/148 +f 335/387/148 339/391/151 340/392/152 +f 335/387/148 340/392/152 318/370/135 +f 318/370/135 340/392/152 319/371/136 +f 336/388/35 341/393/37 337/389/149 +f 337/389/149 341/393/37 342/394/37 +f 337/389/149 342/394/37 338/390/150 +f 338/390/150 342/394/37 343/395/37 +f 338/390/150 343/395/37 339/391/151 +f 339/391/151 343/395/37 344/396/37 +f 339/391/151 344/396/37 340/392/152 +f 340/392/152 344/396/37 345/397/37 +f 340/392/152 345/397/37 319/371/136 +f 319/371/136 345/397/37 320/372/37 +f 304/356/8 346/398/8 305/357/27 +f 305/357/27 346/398/8 347/399/153 +f 305/357/27 347/399/153 321/373/29 +f 321/373/29 347/399/153 348/400/29 +f 321/373/29 348/400/29 326/378/31 +f 326/378/31 348/400/29 349/401/31 +f 326/378/31 349/401/31 331/383/33 +f 331/383/33 349/401/31 350/402/33 +f 331/383/33 350/402/33 336/388/35 +f 336/388/35 350/402/33 351/403/35 +f 336/388/35 351/403/35 341/393/37 +f 341/393/37 351/403/35 352/404/37 +f 353/405/8 304/356/8 354/406/7 +f 354/406/7 304/356/8 306/358/7 +f 354/406/7 306/358/7 355/407/6 +f 355/407/6 306/358/7 308/360/6 +f 355/407/6 308/360/6 356/408/5 +f 356/408/5 308/360/6 310/362/5 +f 356/409/5 310/362/5 357/410/4 +f 357/410/4 310/362/5 312/364/4 +f 357/410/4 312/364/4 358/411/3 +f 358/411/3 312/364/4 314/366/3 +f 358/411/3 314/366/3 359/412/2 +f 359/412/2 314/366/3 297/349/2 +f 255/307/2 360/413/2 297/349/2 +f 297/349/2 360/413/2 359/412/2 +f 360/413/2 255/307/2 361/414/1 +f 361/414/1 255/307/2 257/309/1 +f 361/414/1 257/309/1 362/415/24 +f 362/415/24 257/309/1 259/311/24 +f 362/415/24 259/311/24 363/416/23 +f 363/416/23 259/311/24 261/313/23 +f 363/417/23 261/313/23 364/418/22 +f 364/418/22 261/313/23 263/315/22 +f 364/418/22 263/315/22 365/419/21 +f 365/419/21 263/315/22 265/317/21 +f 365/419/21 265/317/21 366/420/20 +f 366/420/20 265/317/21 248/300/20 +f 206/258/20 367/421/20 248/300/20 +f 248/300/20 367/421/20 366/420/20 +f 367/421/20 206/258/20 368/422/19 +f 368/422/19 206/258/20 208/260/19 +f 368/422/19 208/260/19 369/423/18 +f 369/423/18 208/260/19 210/262/18 +f 369/423/18 210/262/18 370/424/17 +f 370/424/17 210/262/18 212/264/17 +f 370/425/17 212/264/17 371/426/16 +f 371/426/16 212/264/17 214/266/16 +f 371/426/16 214/266/16 372/427/15 +f 372/427/15 214/266/16 216/268/15 +f 372/427/15 216/268/15 373/428/14 +f 373/428/14 216/268/15 199/251/14 +f 157/209/14 374/429/14 199/251/14 +f 199/251/14 374/429/14 373/428/14 +f 374/429/14 157/209/14 375/430/13 +f 375/430/13 157/209/14 159/211/13 +f 375/430/13 159/211/13 376/431/12 +f 376/431/12 159/211/13 161/213/12 +f 376/431/12 161/213/12 377/432/11 +f 377/432/11 161/213/12 163/215/11 +f 377/433/11 163/215/11 378/434/10 +f 378/434/10 163/215/11 165/217/10 +f 378/434/10 165/217/10 379/435/9 +f 379/435/9 165/217/10 167/219/9 +f 379/435/9 167/219/9 380/436/8 +f 380/436/8 167/219/9 142/194/8 +f 346/398/8 304/356/8 107/437/8 +f 107/437/8 304/356/8 353/405/8 +f 107/437/8 353/405/8 119/438/8 +f 119/438/8 353/405/8 380/436/8 +f 119/438/8 380/436/8 142/194/8 +f 142/194/8 141/193/8 119/438/8 +f 381/439/25 382/440/25 383/441/154 +f 383/441/154 382/440/25 384/442/154 +f 383/441/154 384/442/154 385/443/155 +f 385/443/155 384/442/154 386/444/155 +f 385/443/155 386/444/155 387/445/156 +f 387/445/156 386/444/155 388/446/156 +f 387/445/156 388/446/156 389/447/157 +f 389/447/157 388/446/156 390/448/157 +f 389/447/157 390/448/157 391/449/158 +f 391/449/158 390/448/157 392/450/158 +f 391/449/158 392/450/158 360/451/2 +f 360/451/2 392/450/158 359/452/2 +f 366/453/20 393/454/159 365/455/21 +f 365/455/21 393/454/159 394/456/160 +f 365/455/21 394/456/160 364/457/22 +f 364/457/22 394/456/160 395/458/161 +f 364/457/22 395/458/161 363/459/23 +f 363/459/23 395/458/161 396/460/162 +f 363/459/23 396/460/162 362/461/24 +f 362/461/24 396/460/162 397/462/163 +f 362/461/24 397/462/163 361/463/1 +f 361/463/1 397/462/163 398/464/164 +f 361/463/1 398/464/164 360/451/2 +f 360/451/2 398/464/164 391/449/158 +f 391/449/158 398/464/164 399/465/165 +f 391/449/158 399/465/165 389/447/157 +f 389/447/157 399/465/165 400/466/166 +f 389/447/157 400/466/166 387/445/156 +f 387/445/156 400/466/166 401/467/167 +f 387/445/156 401/467/167 385/443/155 +f 385/443/155 401/467/167 402/468/168 +f 385/443/155 402/468/168 383/441/154 +f 383/441/154 402/468/168 403/469/25 +f 383/441/154 403/469/25 381/439/25 +f 393/454/159 404/470/169 394/456/160 +f 394/456/160 404/470/169 405/471/170 +f 394/456/160 405/471/170 395/458/161 +f 395/458/161 405/471/170 406/472/171 +f 395/458/161 406/472/171 396/460/162 +f 396/460/162 406/472/171 407/473/172 +f 396/460/162 407/473/172 397/462/163 +f 397/462/163 407/473/172 408/474/173 +f 397/462/163 408/474/173 398/464/164 +f 398/464/164 408/474/173 399/465/165 +f 404/470/169 409/475/174 405/471/170 +f 405/471/170 409/475/174 410/476/175 +f 405/471/170 410/476/175 406/472/171 +f 406/472/171 410/476/175 411/477/176 +f 406/472/171 411/477/176 407/473/172 +f 407/473/172 411/477/176 412/478/177 +f 407/473/172 412/478/177 408/474/173 +f 408/474/173 412/478/177 413/479/178 +f 408/474/173 413/479/178 399/465/165 +f 399/465/165 413/479/178 400/466/166 +f 409/475/174 414/480/179 410/476/175 +f 410/476/175 414/480/179 415/481/180 +f 410/476/175 415/481/180 411/477/176 +f 411/477/176 415/481/180 416/482/181 +f 411/477/176 416/482/181 412/478/177 +f 412/478/177 416/482/181 417/483/182 +f 412/478/177 417/483/182 413/479/178 +f 413/479/178 417/483/182 418/484/183 +f 413/479/178 418/484/183 400/466/166 +f 400/466/166 418/484/183 401/467/167 +f 414/480/179 419/485/184 415/481/180 +f 415/481/180 419/485/184 420/486/185 +f 415/481/180 420/486/185 416/482/181 +f 416/482/181 420/486/185 421/487/186 +f 416/482/181 421/487/186 417/483/182 +f 417/483/182 421/487/186 422/488/187 +f 417/483/182 422/488/187 418/484/183 +f 418/484/183 422/488/187 423/489/188 +f 418/484/183 423/489/188 401/467/167 +f 401/467/167 423/489/188 402/468/168 +f 419/485/184 424/490/25 420/486/185 +f 420/486/185 424/490/25 425/491/25 +f 420/486/185 425/491/25 421/487/186 +f 421/487/186 425/491/25 426/492/25 +f 421/487/186 426/492/25 422/488/187 +f 422/488/187 426/492/25 427/493/25 +f 422/488/187 427/493/25 423/489/188 +f 423/489/188 427/493/25 428/494/25 +f 423/489/188 428/494/25 402/468/168 +f 402/468/168 428/494/25 403/469/25 +f 366/453/20 367/495/20 393/454/159 +f 393/454/159 367/495/20 429/496/159 +f 393/454/159 429/496/159 404/470/169 +f 404/470/169 429/496/159 430/497/169 +f 404/470/169 430/497/169 409/475/174 +f 409/475/174 430/497/169 431/498/174 +f 409/475/174 431/498/174 414/480/179 +f 414/480/179 431/498/174 432/499/179 +f 414/480/179 432/499/179 419/485/184 +f 419/485/184 432/499/179 433/500/184 +f 419/485/184 433/500/184 424/490/25 +f 424/490/25 433/500/184 434/501/25 +f 373/502/14 435/503/189 372/504/15 +f 372/504/15 435/503/189 436/505/190 +f 372/504/15 436/505/190 371/506/16 +f 371/506/16 436/505/190 437/507/191 +f 371/506/16 437/507/191 370/508/17 +f 370/508/17 437/507/191 438/509/192 +f 370/508/17 438/509/192 369/510/18 +f 369/510/18 438/509/192 439/511/193 +f 369/510/18 439/511/193 368/512/19 +f 368/512/19 439/511/193 440/513/194 +f 368/512/19 440/513/194 367/495/20 +f 367/495/20 440/513/194 429/496/159 +f 429/496/159 440/513/194 441/514/195 +f 429/496/159 441/514/195 430/497/169 +f 430/497/169 441/514/195 442/515/196 +f 430/497/169 442/515/196 431/498/174 +f 431/498/174 442/515/196 443/516/197 +f 431/498/174 443/516/197 432/499/179 +f 432/499/179 443/516/197 444/517/198 +f 432/499/179 444/517/198 433/500/184 +f 433/500/184 444/517/198 445/518/25 +f 433/500/184 445/518/25 434/501/25 +f 435/503/189 446/519/199 436/505/190 +f 436/505/190 446/519/199 447/520/200 +f 436/505/190 447/520/200 437/507/191 +f 437/507/191 447/520/200 448/521/201 +f 437/507/191 448/521/201 438/509/192 +f 438/509/192 448/521/201 449/522/202 +f 438/509/192 449/522/202 439/511/193 +f 439/511/193 449/522/202 450/523/203 +f 439/511/193 450/523/203 440/513/194 +f 440/513/194 450/523/203 441/514/195 +f 446/519/199 451/524/204 447/520/200 +f 447/520/200 451/524/204 452/525/205 +f 447/520/200 452/525/205 448/521/201 +f 448/521/201 452/525/205 453/526/206 +f 448/521/201 453/526/206 449/522/202 +f 449/522/202 453/526/206 454/527/207 +f 449/522/202 454/527/207 450/523/203 +f 450/523/203 454/527/207 455/528/208 +f 450/523/203 455/528/208 441/514/195 +f 441/514/195 455/528/208 442/515/196 +f 451/524/204 456/529/209 452/525/205 +f 452/525/205 456/529/209 457/530/210 +f 452/525/205 457/530/210 453/526/206 +f 453/526/206 457/530/210 458/531/211 +f 453/526/206 458/531/211 454/527/207 +f 454/527/207 458/531/211 459/532/212 +f 454/527/207 459/532/212 455/528/208 +f 455/528/208 459/532/212 460/533/213 +f 455/528/208 460/533/213 442/515/196 +f 442/515/196 460/533/213 443/516/197 +f 456/529/209 461/534/214 457/530/210 +f 457/530/210 461/534/214 462/535/215 +f 457/530/210 462/535/215 458/531/211 +f 458/531/211 462/535/215 463/536/216 +f 458/531/211 463/536/216 459/532/212 +f 459/532/212 463/536/216 464/537/217 +f 459/532/212 464/537/217 460/533/213 +f 460/533/213 464/537/217 465/538/218 +f 460/533/213 465/538/218 443/516/197 +f 443/516/197 465/538/218 444/517/198 +f 461/534/214 466/539/25 462/535/215 +f 462/535/215 466/539/25 467/540/25 +f 462/535/215 467/540/25 463/536/216 +f 463/536/216 467/540/25 468/541/25 +f 463/536/216 468/541/25 464/537/217 +f 464/537/217 468/541/25 469/542/25 +f 464/537/217 469/542/25 465/538/218 +f 465/538/218 469/542/25 470/543/25 +f 465/538/218 470/543/25 444/517/198 +f 444/517/198 470/543/25 445/518/25 +f 373/502/14 374/544/14 435/503/189 +f 435/503/189 374/544/14 471/545/189 +f 435/503/189 471/545/189 446/519/199 +f 446/519/199 471/545/189 472/546/199 +f 446/519/199 472/546/199 451/524/204 +f 451/524/204 472/546/199 473/547/204 +f 451/524/204 473/547/204 456/529/209 +f 456/529/209 473/547/204 474/548/209 +f 456/529/209 474/548/209 461/534/214 +f 461/534/214 474/548/209 475/549/214 +f 461/534/214 475/549/214 466/539/25 +f 466/539/25 475/549/214 476/550/25 +f 380/551/8 477/552/219 379/553/9 +f 379/553/9 477/552/219 478/554/220 +f 379/553/9 478/554/220 378/555/10 +f 378/555/10 478/554/220 479/556/221 +f 378/555/10 479/556/221 377/557/11 +f 377/557/11 479/556/221 480/558/222 +f 377/557/11 480/558/222 376/559/12 +f 376/559/12 480/558/222 481/560/223 +f 376/559/12 481/560/223 375/561/13 +f 375/561/13 481/560/223 482/562/224 +f 375/561/13 482/562/224 374/544/14 +f 374/544/14 482/562/224 471/545/189 +f 471/545/189 482/562/224 483/563/225 +f 471/545/189 483/563/225 472/546/199 +f 472/546/199 483/563/225 484/564/226 +f 472/546/199 484/564/226 473/547/204 +f 473/547/204 484/564/226 485/565/227 +f 473/547/204 485/565/227 474/548/209 +f 474/548/209 485/565/227 486/566/228 +f 474/548/209 486/566/228 475/549/214 +f 475/549/214 486/566/228 487/567/25 +f 475/549/214 487/567/25 476/550/25 +f 477/552/219 488/568/229 478/554/220 +f 478/554/220 488/568/229 489/569/230 +f 478/554/220 489/569/230 479/556/221 +f 479/556/221 489/569/230 490/570/231 +f 479/556/221 490/570/231 480/558/222 +f 480/558/222 490/570/231 491/571/232 +f 480/558/222 491/571/232 481/560/223 +f 481/560/223 491/571/232 492/572/233 +f 481/560/223 492/572/233 482/562/224 +f 482/562/224 492/572/233 483/563/225 +f 488/568/229 493/573/234 489/569/230 +f 489/569/230 493/573/234 494/574/235 +f 489/569/230 494/574/235 490/570/231 +f 490/570/231 494/574/235 495/575/236 +f 490/570/231 495/575/236 491/571/232 +f 491/571/232 495/575/236 496/576/237 +f 491/571/232 496/576/237 492/572/233 +f 492/572/233 496/576/237 497/577/238 +f 492/572/233 497/577/238 483/563/225 +f 483/563/225 497/577/238 484/564/226 +f 493/573/234 498/578/239 494/574/235 +f 494/574/235 498/578/239 499/579/240 +f 494/574/235 499/579/240 495/575/236 +f 495/575/236 499/579/240 500/580/241 +f 495/575/236 500/580/241 496/576/237 +f 496/576/237 500/580/241 501/581/242 +f 496/576/237 501/581/242 497/577/238 +f 497/577/238 501/581/242 502/582/243 +f 497/577/238 502/582/243 484/564/226 +f 484/564/226 502/582/243 485/565/227 +f 498/578/239 503/583/244 499/579/240 +f 499/579/240 503/583/244 504/584/245 +f 499/579/240 504/584/245 500/580/241 +f 500/580/241 504/584/245 505/585/246 +f 500/580/241 505/585/246 501/581/242 +f 501/581/242 505/585/246 506/586/247 +f 501/581/242 506/586/247 502/582/243 +f 502/582/243 506/586/247 507/587/248 +f 502/582/243 507/587/248 485/565/227 +f 485/565/227 507/587/248 486/566/228 +f 503/583/244 508/588/25 504/584/245 +f 504/584/245 508/588/25 509/589/25 +f 504/584/245 509/589/25 505/585/246 +f 505/585/246 509/589/25 510/590/25 +f 505/585/246 510/590/25 506/586/247 +f 506/586/247 510/590/25 511/591/25 +f 506/586/247 511/591/25 507/587/248 +f 507/587/248 511/591/25 512/592/25 +f 507/587/248 512/592/25 486/566/228 +f 486/566/228 512/592/25 487/567/25 +f 380/551/8 353/593/8 477/552/219 +f 477/552/219 353/593/8 513/594/219 +f 477/552/219 513/594/219 488/568/229 +f 488/568/229 513/594/219 514/595/229 +f 488/568/229 514/595/229 493/573/234 +f 493/573/234 514/595/229 515/596/234 +f 493/573/234 515/596/234 498/578/239 +f 498/578/239 515/596/234 516/597/239 +f 498/578/239 516/597/239 503/583/244 +f 503/583/244 516/597/239 517/598/244 +f 503/583/244 517/598/244 508/588/25 +f 508/588/25 517/598/244 518/599/25 +f 518/599/25 517/598/244 519/600/25 +f 519/600/25 517/598/244 520/601/249 +f 519/600/25 520/601/249 521/602/25 +f 521/602/25 520/601/249 522/603/250 +f 521/602/25 522/603/250 523/604/25 +f 523/604/25 522/603/250 524/605/251 +f 523/604/25 524/605/251 525/606/25 +f 525/606/25 524/605/251 526/607/252 +f 525/606/25 526/607/252 527/608/25 +f 527/608/25 526/607/252 528/609/253 +f 527/608/25 528/609/253 382/440/25 +f 382/440/25 528/609/253 384/442/154 +f 384/442/154 528/609/253 529/610/254 +f 384/442/154 529/610/254 386/444/155 +f 386/444/155 529/610/254 530/611/255 +f 386/444/155 530/611/255 388/446/156 +f 388/446/156 530/611/255 531/612/256 +f 388/446/156 531/612/256 390/448/157 +f 390/448/157 531/612/256 532/613/257 +f 390/448/157 532/613/257 392/450/158 +f 392/450/158 532/613/257 358/614/3 +f 392/450/158 358/614/3 359/452/2 +f 517/598/244 516/597/239 520/601/249 +f 520/601/249 516/597/239 533/615/258 +f 520/601/249 533/615/258 522/603/250 +f 522/603/250 533/615/258 534/616/259 +f 522/603/250 534/616/259 524/605/251 +f 524/605/251 534/616/259 535/617/260 +f 524/605/251 535/617/260 526/607/252 +f 526/607/252 535/617/260 536/618/261 +f 526/607/252 536/618/261 528/609/253 +f 528/609/253 536/618/261 529/610/254 +f 516/597/239 515/596/234 533/615/258 +f 533/615/258 515/596/234 537/619/262 +f 533/615/258 537/619/262 534/616/259 +f 534/616/259 537/619/262 538/620/263 +f 534/616/259 538/620/263 535/617/260 +f 535/617/260 538/620/263 539/621/264 +f 535/617/260 539/621/264 536/618/261 +f 536/618/261 539/621/264 540/622/265 +f 536/618/261 540/622/265 529/610/254 +f 529/610/254 540/622/265 530/611/255 +f 515/596/234 514/595/229 537/619/262 +f 537/619/262 514/595/229 541/623/266 +f 537/619/262 541/623/266 538/620/263 +f 538/620/263 541/623/266 542/624/267 +f 538/620/263 542/624/267 539/621/264 +f 539/621/264 542/624/267 543/625/268 +f 539/621/264 543/625/268 540/622/265 +f 540/622/265 543/625/268 544/626/269 +f 540/622/265 544/626/269 530/611/255 +f 530/611/255 544/626/269 531/612/256 +f 514/595/229 513/594/219 541/623/266 +f 541/623/266 513/594/219 545/627/270 +f 541/623/266 545/627/270 542/624/267 +f 542/624/267 545/627/270 546/628/271 +f 542/624/267 546/628/271 543/625/268 +f 543/625/268 546/628/271 547/629/272 +f 543/625/268 547/629/272 544/626/269 +f 544/626/269 547/629/272 548/630/273 +f 544/626/269 548/630/273 531/612/256 +f 531/612/256 548/630/273 532/613/257 +f 513/594/219 353/593/8 545/627/270 +f 545/627/270 353/593/8 354/631/7 +f 545/627/270 354/631/7 546/628/271 +f 546/628/271 354/631/7 355/632/6 +f 546/628/271 355/632/6 547/629/272 +f 547/629/272 355/632/6 356/633/5 +f 547/629/272 356/633/5 548/630/273 +f 548/630/273 356/633/5 357/634/4 +f 548/630/273 357/634/4 532/613/257 +f 532/613/257 357/634/4 358/614/3 +f 381/439/25 466/539/25 382/440/25 +f 382/440/25 466/539/25 476/550/25 +f 382/440/25 476/550/25 518/599/25 +f 518/599/25 476/550/25 508/588/25 +f 508/588/25 476/550/25 487/567/25 +f 508/588/25 487/567/25 512/592/25 +f 403/469/25 424/490/25 381/439/25 +f 381/439/25 424/490/25 434/501/25 +f 381/439/25 434/501/25 466/539/25 +f 466/539/25 434/501/25 467/540/25 +f 467/540/25 434/501/25 468/541/25 +f 468/541/25 434/501/25 469/542/25 +f 469/542/25 434/501/25 470/543/25 +f 470/543/25 434/501/25 445/518/25 +f 403/469/25 428/494/25 424/490/25 +f 424/490/25 428/494/25 427/493/25 +f 424/490/25 427/493/25 426/492/25 +f 426/492/25 425/491/25 424/490/25 +f 512/592/25 511/591/25 508/588/25 +f 508/588/25 511/591/25 510/590/25 +f 508/588/25 510/590/25 509/589/25 +f 519/600/25 521/602/25 518/599/25 +f 518/599/25 521/602/25 523/604/25 +f 518/599/25 523/604/25 525/606/25 +f 525/606/25 527/608/25 518/599/25 +f 518/599/25 527/608/25 382/440/25 +f 549/635/37 550/636/37 551/637/123 +f 551/637/123 550/636/37 552/638/123 +f 551/637/123 552/638/123 553/639/118 +f 553/639/118 552/638/123 554/640/118 +f 553/639/118 554/640/118 555/641/113 +f 555/641/113 554/640/118 556/642/113 +f 555/641/113 556/642/113 557/643/108 +f 557/643/108 556/642/113 558/644/108 +f 557/643/108 558/644/108 559/645/98 +f 559/645/98 558/644/108 560/646/98 +f 559/645/98 560/646/98 561/647/2 +f 561/647/2 560/646/98 562/648/2 +f 563/649/274 564/650/275 565/651/276 +f 565/651/276 564/650/275 566/652/277 +f 565/651/276 566/652/277 567/653/278 +f 565/651/276 567/653/278 568/654/279 +f 568/654/279 567/653/278 569/655/280 +f 568/654/279 569/655/280 570/656/281 +f 570/656/281 569/655/280 571/657/282 +f 570/656/281 571/657/282 572/658/283 +f 572/658/283 571/657/282 573/659/284 +f 572/658/283 573/659/284 574/660/285 +f 574/660/285 573/659/284 575/661/37 +f 574/660/285 575/661/37 576/662/37 +f 576/662/37 577/663/37 574/660/285 +f 574/660/285 577/663/37 551/637/123 +f 574/660/285 551/637/123 553/639/118 +f 577/663/37 549/635/37 551/637/123 +f 574/660/285 553/639/118 572/658/283 +f 572/658/283 553/639/118 555/641/113 +f 572/658/283 555/641/113 570/656/281 +f 570/656/281 555/641/113 557/643/108 +f 570/656/281 557/643/108 568/654/279 +f 568/654/279 557/643/108 559/645/98 +f 568/654/279 559/645/98 565/651/276 +f 565/651/276 559/645/98 578/664/286 +f 565/651/276 578/664/286 563/649/274 +f 559/645/98 561/647/2 578/664/286 +f 564/650/275 579/665/275 566/652/277 +f 566/652/277 579/665/275 580/666/277 +f 566/652/277 580/666/277 567/653/278 +f 567/653/278 580/666/277 581/667/287 +f 567/653/278 581/667/287 569/655/280 +f 569/655/280 581/667/287 582/668/280 +f 569/655/280 582/668/280 571/657/282 +f 571/657/282 582/668/280 583/669/282 +f 571/657/282 583/669/282 573/659/284 +f 573/659/284 583/669/282 584/670/284 +f 573/659/284 584/670/284 575/661/37 +f 575/661/37 584/670/284 585/671/37 +f 586/672/8 587/673/27 588/674/288 +f 588/674/288 587/673/27 589/675/128 +f 588/674/288 589/675/128 590/676/289 +f 590/676/289 589/675/128 591/677/290 +f 590/676/289 591/677/290 592/678/291 +f 592/678/291 591/677/290 593/679/130 +f 592/678/291 593/679/130 594/680/292 +f 594/680/292 593/679/130 595/681/131 +f 594/680/292 595/681/131 596/682/293 +f 596/682/293 595/681/131 597/683/132 +f 596/682/293 597/683/132 579/665/275 +f 579/665/275 597/683/132 580/666/277 +f 580/666/277 597/683/132 598/684/294 +f 580/666/277 598/684/294 581/667/287 +f 581/667/287 598/684/294 599/685/134 +f 581/667/287 599/685/134 582/668/280 +f 582/668/280 599/685/134 600/686/135 +f 582/668/280 600/686/135 583/669/282 +f 583/669/282 600/686/135 601/687/136 +f 583/669/282 601/687/136 584/670/284 +f 584/670/284 601/687/136 585/671/37 +f 585/671/37 601/687/136 602/688/37 +f 602/688/37 601/687/136 603/689/152 +f 602/688/37 603/689/152 604/690/37 +f 604/690/37 603/689/152 605/691/151 +f 604/690/37 605/691/151 606/692/37 +f 606/692/37 605/691/151 607/693/150 +f 606/692/37 607/693/150 608/694/37 +f 608/694/37 607/693/150 609/695/149 +f 608/694/37 609/695/149 610/696/37 +f 610/696/37 609/695/149 611/697/35 +f 610/696/37 611/697/35 612/698/37 +f 587/673/27 613/699/29 589/675/128 +f 589/675/128 613/699/29 614/700/137 +f 589/675/128 614/700/137 591/677/290 +f 591/677/290 614/700/137 615/701/138 +f 591/677/290 615/701/138 593/679/130 +f 593/679/130 615/701/138 616/702/139 +f 593/679/130 616/702/139 595/681/131 +f 595/681/131 616/702/139 617/703/140 +f 595/681/131 617/703/140 597/683/132 +f 597/683/132 617/703/140 598/684/294 +f 613/699/29 618/704/31 614/700/137 +f 614/700/137 618/704/31 619/705/141 +f 614/700/137 619/705/141 615/701/138 +f 615/701/138 619/705/141 620/706/295 +f 615/701/138 620/706/295 616/702/139 +f 616/702/139 620/706/295 621/707/143 +f 616/702/139 621/707/143 617/703/140 +f 617/703/140 621/707/143 622/708/144 +f 617/703/140 622/708/144 598/684/294 +f 598/684/294 622/708/144 599/685/134 +f 618/704/31 623/709/33 619/705/141 +f 619/705/141 623/709/33 624/710/145 +f 619/705/141 624/710/145 620/706/295 +f 620/706/295 624/710/145 625/711/146 +f 620/706/295 625/711/146 621/707/143 +f 621/707/143 625/711/146 626/712/296 +f 621/707/143 626/712/296 622/708/144 +f 622/708/144 626/712/296 627/713/148 +f 622/708/144 627/713/148 599/685/134 +f 599/685/134 627/713/148 600/686/135 +f 623/709/33 611/697/35 624/710/145 +f 624/710/145 611/697/35 609/695/149 +f 624/710/145 609/695/149 625/711/146 +f 625/711/146 609/695/149 607/693/150 +f 625/711/146 607/693/150 626/712/296 +f 626/712/296 607/693/150 605/691/151 +f 626/712/296 605/691/151 627/713/148 +f 627/713/148 605/691/151 603/689/152 +f 627/713/148 603/689/152 600/686/135 +f 600/686/135 603/689/152 601/687/136 +f 586/672/8 628/714/8 587/673/27 +f 587/673/27 628/714/8 629/715/27 +f 587/673/27 629/715/27 613/699/29 +f 613/699/29 629/715/27 630/716/29 +f 613/699/29 630/716/29 618/704/31 +f 618/704/31 630/716/29 631/717/31 +f 618/704/31 631/717/31 623/709/33 +f 623/709/33 631/717/31 632/718/33 +f 623/709/33 632/718/33 611/697/35 +f 611/697/35 632/718/33 633/719/35 +f 611/697/35 633/719/35 612/698/37 +f 612/698/37 633/719/35 634/720/37 +f 635/721/297 636/722/298 637/723/299 +f 637/723/299 636/722/298 638/724/300 +f 637/723/299 638/724/300 639/725/301 +f 637/723/299 639/725/301 640/726/302 +f 640/726/302 639/725/301 641/727/303 +f 640/726/302 641/727/303 642/728/54 +f 642/728/54 641/727/303 643/729/304 +f 642/728/54 643/729/304 644/730/59 +f 644/730/59 643/729/304 645/731/305 +f 644/730/59 645/731/305 646/732/64 +f 646/732/64 645/731/305 647/733/37 +f 646/732/64 647/733/37 648/734/37 +f 646/732/64 648/734/37 649/735/65 +f 649/735/65 648/734/37 650/736/37 +f 649/735/65 650/736/37 651/737/66 +f 651/737/66 650/736/37 652/738/37 +f 651/737/66 652/738/37 653/739/306 +f 653/739/306 652/738/37 654/740/37 +f 653/739/306 654/740/37 655/741/47 +f 655/741/47 654/740/37 656/742/37 +f 655/741/47 656/742/37 633/719/35 +f 633/719/35 656/742/37 634/720/37 +f 633/719/35 632/718/33 655/741/47 +f 655/741/47 632/718/33 657/743/46 +f 655/741/47 657/743/46 653/739/306 +f 653/739/306 657/743/46 658/744/62 +f 653/739/306 658/744/62 651/737/66 +f 651/737/66 658/744/62 659/745/307 +f 651/737/66 659/745/307 649/735/65 +f 649/735/65 659/745/307 660/746/60 +f 649/735/65 660/746/60 646/732/64 +f 646/732/64 660/746/60 644/730/59 +f 632/718/33 631/717/31 657/743/46 +f 657/743/46 631/717/31 661/747/45 +f 657/743/46 661/747/45 658/744/62 +f 658/744/62 661/747/45 662/748/57 +f 658/744/62 662/748/57 659/745/307 +f 659/745/307 662/748/57 663/749/56 +f 659/745/307 663/749/56 660/746/60 +f 660/746/60 663/749/56 664/750/55 +f 660/746/60 664/750/55 644/730/59 +f 644/730/59 664/750/55 642/728/54 +f 631/717/31 630/716/29 661/747/45 +f 661/747/45 630/716/29 665/751/44 +f 661/747/45 665/751/44 662/748/57 +f 662/748/57 665/751/44 666/752/52 +f 662/748/57 666/752/52 663/749/56 +f 663/749/56 666/752/52 667/753/51 +f 663/749/56 667/753/51 664/750/55 +f 664/750/55 667/753/51 668/754/50 +f 664/750/55 668/754/50 642/728/54 +f 642/728/54 668/754/50 640/726/302 +f 630/716/29 629/715/27 665/751/44 +f 665/751/44 629/715/27 669/755/43 +f 665/751/44 669/755/43 666/752/52 +f 666/752/52 669/755/43 670/756/42 +f 666/752/52 670/756/42 667/753/51 +f 667/753/51 670/756/42 671/757/41 +f 667/753/51 671/757/41 668/754/50 +f 668/754/50 671/757/41 672/758/40 +f 668/754/50 672/758/40 640/726/302 +f 640/726/302 672/758/40 637/723/299 +f 628/714/8 673/759/308 629/715/27 +f 629/715/27 673/759/308 669/755/43 +f 673/759/308 674/760/309 669/755/43 +f 669/755/43 674/760/309 670/756/42 +f 674/760/309 675/761/310 670/756/42 +f 670/756/42 675/761/310 671/757/41 +f 675/761/310 676/762/311 671/757/41 +f 671/757/41 676/762/311 672/758/40 +f 676/762/311 635/721/297 672/758/40 +f 672/758/40 635/721/297 637/723/299 +f 636/722/298 677/763/298 638/724/300 +f 638/724/300 677/763/298 678/764/312 +f 638/724/300 678/764/312 639/725/301 +f 639/725/301 678/764/312 679/765/301 +f 639/725/301 679/765/301 641/727/303 +f 641/727/303 679/765/301 680/766/303 +f 641/727/303 680/766/303 643/729/304 +f 643/729/304 680/766/303 681/767/304 +f 643/729/304 681/767/304 645/731/305 +f 645/731/305 681/767/304 682/768/305 +f 645/731/305 682/768/305 647/733/37 +f 647/733/37 682/768/305 683/769/37 +f 684/770/14 685/771/38 686/772/313 +f 686/772/313 685/771/38 687/773/314 +f 687/773/314 685/771/38 678/764/312 +f 687/773/314 678/764/312 677/763/298 +f 685/771/38 688/774/48 678/764/312 +f 678/764/312 688/774/48 679/765/301 +f 679/765/301 688/774/48 689/775/53 +f 679/765/301 689/775/53 680/766/303 +f 680/766/303 689/775/53 690/776/58 +f 680/766/303 690/776/58 681/767/304 +f 681/767/304 690/776/58 691/777/63 +f 681/767/304 691/777/63 682/768/305 +f 682/768/305 691/777/63 692/778/315 +f 682/768/305 692/778/315 683/769/37 +f 693/779/37 694/780/316 691/777/63 +f 691/777/63 694/780/316 692/778/315 +f 684/770/14 695/781/14 685/771/38 +f 685/771/38 695/781/14 696/782/38 +f 685/771/38 696/782/38 688/774/48 +f 688/774/48 696/782/38 697/783/48 +f 688/774/48 697/783/48 689/775/53 +f 689/775/53 697/783/48 698/784/53 +f 689/775/53 698/784/53 690/776/58 +f 690/776/58 698/784/53 699/785/58 +f 690/776/58 699/785/58 691/777/63 +f 691/777/63 699/785/58 700/786/63 +f 691/777/63 700/786/63 693/779/37 +f 693/779/37 700/786/63 701/787/37 +f 702/788/14 684/770/14 703/789/313 +f 703/789/313 684/770/14 686/772/313 +f 703/789/313 686/772/313 704/790/314 +f 704/790/314 686/772/313 687/773/314 +f 704/790/314 687/773/314 705/791/298 +f 705/791/298 687/773/314 677/763/298 +f 677/763/298 636/722/298 705/791/298 +f 705/791/298 636/722/298 706/792/298 +f 636/722/298 635/721/297 706/793/298 +f 706/793/298 635/721/297 707/794/297 +f 707/794/297 635/721/297 676/762/311 +f 707/794/297 676/762/311 708/795/311 +f 708/795/311 676/762/311 709/796/310 +f 709/796/310 676/762/311 675/761/310 +f 709/796/310 675/761/310 710/797/309 +f 710/797/309 675/761/310 674/760/309 +f 710/797/309 674/760/309 673/759/308 +f 710/797/309 673/759/308 711/798/308 +f 711/798/308 673/759/308 628/714/8 +f 711/798/308 628/714/8 712/799/8 +f 628/714/8 586/672/8 712/799/8 +f 712/799/8 586/672/8 713/800/8 +f 586/672/8 588/674/288 713/800/8 +f 713/800/8 588/674/288 714/801/288 +f 714/801/288 588/674/288 590/676/289 +f 714/801/288 590/676/289 715/802/289 +f 715/802/289 590/676/289 716/803/291 +f 716/803/291 590/676/289 592/678/291 +f 716/803/291 592/678/291 717/804/292 +f 717/804/292 592/678/291 594/680/292 +f 717/804/292 594/680/292 596/682/293 +f 717/804/292 596/682/293 718/805/293 +f 718/805/293 596/682/293 579/665/275 +f 718/805/293 579/665/275 719/806/275 +f 579/665/275 564/650/275 719/807/275 +f 719/807/275 564/650/275 720/808/275 +f 720/808/275 564/650/275 721/809/274 +f 721/809/274 564/650/275 563/649/274 +f 721/809/274 563/649/274 722/810/286 +f 722/810/286 563/649/274 578/664/286 +f 722/810/286 578/664/286 723/811/2 +f 723/811/2 578/664/286 561/647/2 +f 561/647/2 562/648/2 723/811/2 +f 723/811/2 562/648/2 724/812/2 +f 723/811/2 724/812/2 725/813/158 +f 725/813/158 724/812/2 726/814/158 +f 725/813/158 726/814/158 727/815/157 +f 727/815/157 726/814/158 728/816/157 +f 727/815/157 728/816/157 729/817/156 +f 729/817/156 728/816/157 730/818/156 +f 729/817/156 730/818/156 731/819/155 +f 731/819/155 730/818/156 732/820/155 +f 731/819/155 732/820/155 733/821/154 +f 733/821/154 732/820/155 734/822/154 +f 733/821/154 734/822/154 735/823/25 +f 735/823/25 734/822/154 736/824/25 +f 737/825/25 738/826/317 739/827/25 +f 739/827/25 738/826/317 733/821/154 +f 739/827/25 733/821/154 740/828/25 +f 740/828/25 733/821/154 735/823/25 +f 738/826/317 741/829/318 733/821/154 +f 733/821/154 741/829/318 731/819/155 +f 731/819/155 741/829/318 742/830/319 +f 731/819/155 742/830/319 729/817/156 +f 729/817/156 742/830/319 743/831/320 +f 729/817/156 743/831/320 727/815/157 +f 727/815/157 743/831/320 744/832/321 +f 727/815/157 744/832/321 725/813/158 +f 725/813/158 744/832/321 721/809/274 +f 725/813/158 721/809/274 722/810/286 +f 744/832/321 720/808/275 721/809/274 +f 722/810/286 723/811/2 725/813/158 +f 737/825/25 745/833/25 738/826/317 +f 738/826/317 745/833/25 746/834/317 +f 738/826/317 746/834/317 741/829/318 +f 741/829/318 746/834/317 747/835/318 +f 741/829/318 747/835/318 742/830/319 +f 742/830/319 747/835/318 748/836/319 +f 742/830/319 748/836/319 743/831/320 +f 743/831/320 748/836/319 749/837/322 +f 743/831/320 749/837/322 744/832/321 +f 744/832/321 749/837/322 750/838/321 +f 744/832/321 750/838/321 720/808/275 +f 720/808/275 750/838/321 719/807/275 +f 751/839/25 752/840/244 753/841/25 +f 753/841/25 752/840/244 754/842/249 +f 753/841/25 754/842/249 755/843/25 +f 755/843/25 754/842/249 756/844/323 +f 755/843/25 756/844/323 757/845/25 +f 757/845/25 756/844/323 758/846/251 +f 757/845/25 758/846/251 759/847/25 +f 759/847/25 758/846/251 760/848/252 +f 759/847/25 760/848/252 761/849/25 +f 761/849/25 760/848/252 762/850/253 +f 761/849/25 762/850/253 745/851/25 +f 745/851/25 762/850/253 746/852/317 +f 746/852/317 762/850/253 763/853/254 +f 746/852/317 763/853/254 747/835/318 +f 747/835/318 763/853/254 764/854/255 +f 747/835/318 764/854/255 748/836/319 +f 748/836/319 764/854/255 765/855/324 +f 748/836/319 765/855/324 749/837/322 +f 749/837/322 765/855/324 766/856/257 +f 749/837/322 766/856/257 750/857/321 +f 750/857/321 766/856/257 719/806/275 +f 719/806/275 766/856/257 718/805/293 +f 718/805/293 766/856/257 767/858/273 +f 718/805/293 767/858/273 717/804/292 +f 717/804/292 767/858/273 768/859/272 +f 717/804/292 768/859/272 716/803/291 +f 716/803/291 768/859/272 769/860/325 +f 716/803/291 769/860/325 715/802/289 +f 715/802/289 769/860/325 770/861/270 +f 715/802/289 770/861/270 714/801/288 +f 714/801/288 770/861/270 771/862/219 +f 714/801/288 771/862/219 713/800/8 +f 752/840/244 772/863/239 754/842/249 +f 754/842/249 772/863/239 773/864/258 +f 754/842/249 773/864/258 756/844/323 +f 756/844/323 773/864/258 774/865/259 +f 756/844/323 774/865/259 758/846/251 +f 758/846/251 774/865/259 775/866/326 +f 758/846/251 775/866/326 760/848/252 +f 760/848/252 775/866/326 776/867/261 +f 760/848/252 776/867/261 762/850/253 +f 762/850/253 776/867/261 763/853/254 +f 772/863/239 777/868/234 773/864/258 +f 773/864/258 777/868/234 778/869/262 +f 773/864/258 778/869/262 774/865/259 +f 774/865/259 778/869/262 779/870/263 +f 774/865/259 779/870/263 775/866/326 +f 775/866/326 779/870/263 780/871/264 +f 775/866/326 780/871/264 776/867/261 +f 776/867/261 780/871/264 781/872/265 +f 776/867/261 781/872/265 763/853/254 +f 763/853/254 781/872/265 764/854/255 +f 777/868/234 782/873/229 778/869/262 +f 778/869/262 782/873/229 783/874/266 +f 778/869/262 783/874/266 779/870/263 +f 779/870/263 783/874/266 784/875/267 +f 779/870/263 784/875/267 780/871/264 +f 780/871/264 784/875/267 785/876/268 +f 780/871/264 785/876/268 781/872/265 +f 781/872/265 785/876/268 786/877/269 +f 781/872/265 786/877/269 764/854/255 +f 764/854/255 786/877/269 765/855/324 +f 782/873/229 771/862/219 783/874/266 +f 783/874/266 771/862/219 770/861/270 +f 783/874/266 770/861/270 784/875/267 +f 784/875/267 770/861/270 769/860/325 +f 784/875/267 769/860/325 785/876/268 +f 785/876/268 769/860/325 768/859/272 +f 785/876/268 768/859/272 786/877/269 +f 786/877/269 768/859/272 767/858/273 +f 786/877/269 767/858/273 765/855/324 +f 765/855/324 767/858/273 766/856/257 +f 751/839/25 787/878/25 752/840/244 +f 752/840/244 787/878/25 788/879/244 +f 752/840/244 788/879/244 772/863/239 +f 772/863/239 788/879/244 789/880/239 +f 772/863/239 789/880/239 777/868/234 +f 777/868/234 789/880/239 790/881/234 +f 777/868/234 790/881/234 782/873/229 +f 782/873/229 790/881/234 791/882/229 +f 782/873/229 791/882/229 771/862/219 +f 771/862/219 791/882/229 792/883/219 +f 771/862/219 792/883/219 713/800/8 +f 713/800/8 792/883/219 712/799/8 +f 793/884/25 794/885/25 795/886/228 +f 795/886/228 794/885/25 796/887/327 +f 795/886/228 796/887/327 797/888/328 +f 795/886/228 797/888/328 798/889/227 +f 798/889/227 797/888/328 799/890/329 +f 798/889/227 799/890/329 800/891/226 +f 800/891/226 799/890/329 801/892/330 +f 800/891/226 801/892/330 802/893/225 +f 802/893/225 801/892/330 803/894/331 +f 802/893/225 803/894/331 804/895/224 +f 804/895/224 803/894/331 706/793/298 +f 804/895/224 706/793/298 707/794/297 +f 804/895/224 707/794/297 805/896/223 +f 805/896/223 707/794/297 708/795/311 +f 805/896/223 708/795/311 806/897/222 +f 806/897/222 708/795/311 709/796/310 +f 806/897/222 709/796/310 807/898/221 +f 807/898/221 709/796/310 710/797/309 +f 807/898/221 710/797/309 808/899/220 +f 808/899/220 710/797/309 711/798/308 +f 808/899/220 711/798/308 792/883/219 +f 792/883/219 711/798/308 712/799/8 +f 792/883/219 791/882/229 808/899/220 +f 808/899/220 791/882/229 809/900/230 +f 808/899/220 809/900/230 807/898/221 +f 807/898/221 809/900/230 810/901/231 +f 807/898/221 810/901/231 806/897/222 +f 806/897/222 810/901/231 811/902/232 +f 806/897/222 811/902/232 805/896/223 +f 805/896/223 811/902/232 812/903/233 +f 805/896/223 812/903/233 804/895/224 +f 804/895/224 812/903/233 802/893/225 +f 791/882/229 790/881/234 809/900/230 +f 809/900/230 790/881/234 813/904/235 +f 809/900/230 813/904/235 810/901/231 +f 810/901/231 813/904/235 814/905/332 +f 810/901/231 814/905/332 811/902/232 +f 811/902/232 814/905/332 815/906/237 +f 811/902/232 815/906/237 812/903/233 +f 812/903/233 815/906/237 816/907/238 +f 812/903/233 816/907/238 802/893/225 +f 802/893/225 816/907/238 800/891/226 +f 790/881/234 789/880/239 813/904/235 +f 813/904/235 789/880/239 817/908/240 +f 813/904/235 817/908/240 814/905/332 +f 814/905/332 817/908/240 818/909/241 +f 814/905/332 818/909/241 815/906/237 +f 815/906/237 818/909/241 819/910/333 +f 815/906/237 819/910/333 816/907/238 +f 816/907/238 819/910/333 820/911/243 +f 816/907/238 820/911/243 800/891/226 +f 800/891/226 820/911/243 798/889/227 +f 789/880/239 788/879/244 817/908/240 +f 817/908/240 788/879/244 821/912/245 +f 817/908/240 821/912/245 818/909/241 +f 818/909/241 821/912/245 822/913/334 +f 818/909/241 822/913/334 819/910/333 +f 819/910/333 822/913/334 823/914/247 +f 819/910/333 823/914/247 820/911/243 +f 820/911/243 823/914/247 824/915/248 +f 820/911/243 824/915/248 798/889/227 +f 798/889/227 824/915/248 795/886/228 +f 787/878/25 825/916/25 788/879/244 +f 788/879/244 825/916/25 821/912/245 +f 825/916/25 826/917/25 821/912/245 +f 821/912/245 826/917/25 822/913/334 +f 826/917/25 827/918/25 822/913/334 +f 822/913/334 827/918/25 823/914/247 +f 827/918/25 828/919/25 823/914/247 +f 823/914/247 828/919/25 824/915/248 +f 828/919/25 793/884/25 824/915/248 +f 824/915/248 793/884/25 795/886/228 +f 794/920/25 829/921/25 796/922/327 +f 796/922/327 829/921/25 830/923/327 +f 796/922/327 830/923/327 797/924/328 +f 797/924/328 830/923/327 831/925/328 +f 797/924/328 831/925/328 799/926/329 +f 799/926/329 831/925/328 832/927/329 +f 799/926/329 832/927/329 801/892/330 +f 801/892/330 832/927/329 833/928/330 +f 801/892/330 833/928/330 803/894/331 +f 803/894/331 833/928/330 834/929/335 +f 803/894/331 834/929/335 706/792/298 +f 706/792/298 834/929/335 705/791/298 +f 835/930/25 836/931/214 837/932/25 +f 837/932/25 836/931/214 838/933/336 +f 837/932/25 838/933/336 839/934/25 +f 839/934/25 838/933/336 830/923/327 +f 839/934/25 830/923/327 829/921/25 +f 836/931/214 840/935/209 838/933/336 +f 838/933/336 840/935/209 841/936/337 +f 838/933/336 841/936/337 830/923/327 +f 830/923/327 841/936/337 831/925/328 +f 831/925/328 841/936/337 842/937/338 +f 831/925/328 842/937/338 832/927/329 +f 832/927/329 842/937/338 843/938/339 +f 832/927/329 843/938/339 833/928/330 +f 833/928/330 843/938/339 844/939/340 +f 833/928/330 844/939/340 834/929/335 +f 834/929/335 844/939/340 704/790/314 +f 834/929/335 704/790/314 705/791/298 +f 840/935/209 845/940/204 841/936/337 +f 841/936/337 845/940/204 842/937/338 +f 845/940/204 846/941/199 842/937/338 +f 842/937/338 846/941/199 843/938/339 +f 846/941/199 847/942/189 843/938/339 +f 843/938/339 847/942/189 844/939/340 +f 702/788/14 703/789/313 847/942/189 +f 847/942/189 703/789/313 844/939/340 +f 703/789/313 704/790/314 844/939/340 +f 835/930/25 848/943/25 836/931/214 +f 836/931/214 848/943/25 849/944/214 +f 836/931/214 849/944/214 840/935/209 +f 840/935/209 849/944/214 850/945/209 +f 840/935/209 850/945/209 845/940/204 +f 845/940/204 850/945/209 851/946/204 +f 845/940/204 851/946/204 846/941/199 +f 846/941/199 851/946/204 852/947/199 +f 846/941/199 852/947/199 847/942/189 +f 847/942/189 852/947/199 853/948/189 +f 847/942/189 853/948/189 702/788/14 +f 702/788/14 853/948/189 854/949/14 +f 848/950/25 835/951/25 736/952/25 +f 736/952/25 835/951/25 735/953/25 +f 735/953/25 835/951/25 837/954/25 +f 735/953/25 837/954/25 740/955/25 +f 740/955/25 837/954/25 839/956/25 +f 740/955/25 839/956/25 739/957/25 +f 739/957/25 839/956/25 737/958/25 +f 737/958/25 839/956/25 829/959/25 +f 737/958/25 829/959/25 745/960/25 +f 745/960/25 829/959/25 751/961/25 +f 745/960/25 751/961/25 761/962/25 +f 761/962/25 751/961/25 759/963/25 +f 759/963/25 751/961/25 757/964/25 +f 757/964/25 751/961/25 755/965/25 +f 755/965/25 751/961/25 753/966/25 +f 751/961/25 829/959/25 787/967/25 +f 787/967/25 829/959/25 794/968/25 +f 787/967/25 794/968/25 793/969/25 +f 793/969/25 828/970/25 787/967/25 +f 787/967/25 828/970/25 827/971/25 +f 787/967/25 827/971/25 826/972/25 +f 826/972/25 825/973/25 787/967/25 +f 855/974/341 856/975/342 100/976/343 +f 100/976/343 856/975/342 110/977/342 +f 110/977/342 856/975/342 857/978/344 +f 110/977/342 857/978/344 109/979/345 +f 109/979/345 857/978/344 108/980/2 +f 108/980/2 857/978/344 858/981/2 +f 108/980/2 858/981/2 121/982/346 +f 121/982/346 858/981/2 859/983/347 +f 121/982/346 859/983/347 860/984/348 +f 121/982/346 860/984/348 120/985/348 +f 120/985/348 860/984/348 861/986/349 +f 120/985/348 861/986/349 118/987/349 +f 861/986/349 862/988/349 118/987/349 +f 118/987/349 862/988/349 101/989/349 +f 111/990/350 112/991/351 863/992/350 +f 863/992/350 112/991/351 864/993/351 +f 864/993/351 112/991/351 113/994/352 +f 864/993/351 113/994/352 865/995/353 +f 865/995/353 113/994/352 866/996/14 +f 866/996/14 113/994/352 114/997/14 +f 866/996/14 114/997/14 867/998/354 +f 867/998/354 114/997/14 115/999/355 +f 867/998/354 115/999/355 116/1000/356 +f 867/998/354 116/1000/356 868/1001/356 +f 868/1001/356 116/1000/356 117/1002/357 +f 868/1001/356 117/1002/357 869/1003/357 +f 870/1004/37 862/988/37 352/404/37 +f 352/404/37 862/988/37 156/208/37 +f 352/404/37 156/208/37 254/306/37 +f 254/306/37 156/208/37 243/295/37 +f 243/295/37 156/208/37 155/207/37 +f 243/295/37 155/207/37 173/225/37 +f 550/636/37 549/635/37 870/1004/37 +f 870/1004/37 549/635/37 577/663/37 +f 870/1004/37 577/663/37 576/662/37 +f 576/662/37 575/661/37 870/1004/37 +f 870/1004/37 575/661/37 612/698/37 +f 870/1004/37 612/698/37 871/1005/37 +f 871/1005/37 612/698/37 634/720/37 +f 871/1005/37 634/720/37 693/779/37 +f 693/779/37 634/720/37 683/769/37 +f 693/779/37 683/769/37 692/778/315 +f 612/698/37 575/661/37 610/696/37 +f 610/696/37 575/661/37 585/671/37 +f 610/696/37 585/671/37 608/694/37 +f 608/694/37 585/671/37 606/692/37 +f 606/692/37 585/671/37 604/690/37 +f 604/690/37 585/671/37 602/688/37 +f 634/720/37 656/742/37 683/769/37 +f 683/769/37 656/742/37 647/733/37 +f 647/733/37 656/742/37 654/740/37 +f 647/733/37 654/740/37 652/738/37 +f 652/738/37 650/736/37 647/733/37 +f 647/733/37 650/736/37 648/734/37 +f 692/778/315 694/780/316 693/779/37 +f 693/779/37 701/787/37 871/1005/37 +f 863/992/37 855/974/37 871/1005/37 +f 871/1005/37 855/974/37 872/1006/37 +f 871/1005/37 872/1006/37 870/1004/37 +f 870/1004/37 872/1006/37 862/988/37 +f 864/993/37 869/1003/37 863/992/37 +f 863/992/37 869/1003/37 858/981/37 +f 863/992/37 858/981/37 857/978/37 +f 869/1003/37 864/993/37 868/1001/37 +f 868/1001/37 864/993/37 865/995/37 +f 868/1001/37 865/995/37 867/998/37 +f 867/998/37 865/995/37 866/996/37 +f 156/208/37 861/986/37 869/1003/37 +f 869/1003/37 861/986/37 860/984/37 +f 869/1003/37 860/984/37 859/983/37 +f 243/295/37 173/225/37 244/296/37 +f 244/296/37 173/225/37 198/250/37 +f 244/296/37 198/250/37 245/297/37 +f 245/297/37 198/250/37 194/246/37 +f 245/297/37 194/246/37 205/257/37 +f 198/250/37 197/249/37 194/246/37 +f 194/246/37 197/249/37 196/248/37 +f 194/246/37 196/248/37 195/247/37 +f 222/274/37 247/299/37 205/257/37 +f 205/257/37 247/299/37 246/298/37 +f 205/257/37 246/298/37 245/297/37 +f 271/323/37 342/394/37 254/306/37 +f 254/306/37 342/394/37 341/393/37 +f 254/306/37 341/393/37 352/404/37 +f 342/394/37 271/323/37 343/395/37 +f 343/395/37 271/323/37 296/348/37 +f 343/395/37 296/348/37 303/355/37 +f 303/355/37 296/348/37 292/344/37 +f 292/344/37 296/348/37 295/347/37 +f 292/344/37 295/347/37 294/346/37 +f 294/346/37 293/345/37 292/344/37 +f 320/372/37 345/397/37 303/355/37 +f 303/355/37 345/397/37 344/396/37 +f 303/355/37 344/396/37 343/395/37 +f 862/988/37 861/986/37 156/208/37 +f 859/983/37 858/981/37 869/1003/37 +f 857/978/37 856/975/37 863/992/37 +f 863/992/37 856/975/37 855/974/37 +f 117/1002/357 141/1007/357 869/1003/357 +f 869/1003/357 141/1007/357 143/1008/357 +f 869/1003/357 143/1008/357 145/1009/357 +f 117/1002/357 119/1010/357 141/1007/357 +f 145/1009/357 147/1011/358 869/1003/357 +f 869/1003/357 147/1011/358 149/1012/357 +f 869/1003/357 149/1012/357 150/1013/359 +f 150/1013/359 152/1014/360 869/1003/357 +f 869/1003/357 152/1014/360 154/1015/357 +f 869/1003/357 154/1015/357 156/208/358 +f 100/976/343 99/1016/341 855/974/341 +f 855/974/341 99/1016/341 872/1006/341 +f 863/992/350 871/1005/350 111/990/350 +f 111/990/350 871/1005/350 98/1017/350 +f 101/989/14 862/988/14 99/1016/14 +f 99/1016/14 862/988/14 872/1006/14 +f 107/1018/2 97/1019/2 346/1020/2 +f 346/1020/2 97/1019/2 870/1004/2 +f 346/1020/2 870/1004/2 347/1021/2 +f 347/1021/2 870/1004/2 348/1022/2 +f 348/1022/2 870/1004/2 349/1023/2 +f 349/1023/2 870/1004/2 350/1024/2 +f 350/1024/2 870/1004/2 351/1025/2 +f 351/1025/2 870/1004/2 352/404/2 +f 695/781/14 684/770/14 854/949/14 +f 854/949/14 684/770/14 702/788/14 +f 700/786/20 699/1026/20 701/787/20 +f 701/787/20 699/1026/20 698/784/20 +f 701/787/20 698/784/20 697/783/20 +f 697/783/20 696/1027/20 701/787/20 +f 701/787/20 696/1027/20 695/1028/20 +f 701/787/20 695/1028/20 871/1005/20 +f 871/1005/20 695/1028/20 98/1029/20 +f 98/1029/20 695/1028/20 854/1030/20 +f 98/1029/20 854/1030/20 848/1031/20 +f 848/1031/20 854/1030/20 853/1032/20 +f 848/1031/20 853/1032/20 852/947/20 +f 852/947/20 851/946/20 848/1031/20 +f 848/1031/20 851/946/20 850/945/20 +f 848/1031/20 850/945/20 849/1033/20 +f 848/1031/20 736/1034/20 98/1029/20 +f 98/1029/20 736/1034/20 724/1035/20 +f 98/1029/20 724/1035/20 97/1036/20 +f 97/1036/20 724/1035/20 562/1037/20 +f 97/1036/20 562/1037/20 870/1004/20 +f 870/1004/20 562/1037/20 550/636/20 +f 550/636/20 562/1037/20 560/646/20 +f 550/636/20 560/646/20 558/644/20 +f 734/1038/20 732/1039/20 736/1034/20 +f 736/1034/20 732/1039/20 730/818/20 +f 736/1034/20 730/818/20 728/816/20 +f 728/816/20 726/1040/20 736/1034/20 +f 736/1034/20 726/1040/20 724/1035/20 +f 558/644/20 556/642/20 550/636/20 +f 550/636/20 556/642/20 554/1041/20 +f 550/636/20 554/1041/20 552/638/20 +f 127/1042/1 873/1043/1 128/1044/2 +f 128/1044/2 873/1043/1 874/1045/2 +f 128/1044/2 874/1045/2 106/1046/3 +f 106/1046/3 874/1045/2 875/1047/3 +f 106/1046/3 875/1047/3 105/1048/4 +f 105/1048/4 875/1047/3 876/1049/4 +f 105/1048/4 876/1049/4 104/1050/5 +f 104/1050/5 876/1049/4 877/1051/5 +f 104/1050/5 877/1051/5 102/1052/6 +f 102/1052/6 877/1051/5 878/1053/6 +f 102/1052/6 878/1053/6 103/1054/7 +f 103/1054/7 878/1053/6 879/1055/7 +f 103/1054/7 879/1055/7 129/1056/8 +f 129/1056/8 879/1055/7 880/1057/8 +f 129/1058/8 880/1059/8 130/1060/9 +f 130/1060/9 880/1059/8 881/1061/9 +f 130/1060/9 881/1061/9 131/1062/10 +f 131/1062/10 881/1061/9 882/1063/10 +f 131/1062/10 882/1063/10 132/1064/11 +f 132/1064/11 882/1063/10 883/1065/11 +f 132/1064/11 883/1065/11 133/1066/12 +f 133/1066/12 883/1065/11 884/1067/12 +f 133/1066/12 884/1067/12 134/1068/13 +f 134/1068/13 884/1067/12 885/1069/13 +f 134/1068/13 885/1069/13 122/1070/14 +f 122/1070/14 885/1069/13 886/1071/14 +f 122/1070/14 886/1071/14 123/1072/15 +f 123/1072/15 886/1071/14 887/1073/15 +f 123/1074/15 887/1075/15 135/1076/16 +f 135/1076/16 887/1075/15 888/1077/16 +f 135/1076/16 888/1077/16 136/1078/17 +f 136/1078/17 888/1077/16 889/1079/17 +f 136/1078/17 889/1079/17 137/1080/18 +f 137/1080/18 889/1079/17 890/1081/18 +f 137/1080/18 890/1081/18 138/1082/19 +f 138/1082/19 890/1081/18 891/1083/19 +f 138/1082/19 891/1083/19 124/1084/20 +f 124/1084/20 891/1083/19 892/1085/20 +f 124/1084/20 892/1085/20 125/1086/21 +f 125/1086/21 892/1085/20 893/1087/21 +f 125/1086/21 893/1087/21 126/1088/22 +f 126/1088/22 893/1087/21 894/1089/22 +f 126/1088/22 894/1089/22 139/1090/23 +f 139/1090/23 894/1089/22 895/1091/23 +f 139/1090/23 895/1091/23 140/1092/24 +f 140/1092/24 895/1091/23 896/1093/24 +f 140/1092/24 896/1093/24 127/1042/1 +f 127/1042/1 896/1093/24 873/1043/1 +f 897/1094/20 898/1095/20 899/1096/19 +f 899/1096/19 898/1095/20 900/1097/19 +f 899/1096/19 900/1097/19 901/1098/18 +f 901/1098/18 900/1097/19 902/1099/18 +f 901/1098/18 902/1099/18 903/1100/17 +f 903/1100/17 902/1099/18 904/1101/17 +f 903/1100/17 904/1101/17 905/1102/16 +f 905/1102/16 904/1101/17 906/1103/16 +f 905/1102/16 906/1103/16 907/1104/15 +f 907/1104/15 906/1103/16 908/1105/15 +f 907/1104/15 908/1105/15 909/1106/14 +f 909/1106/14 908/1105/15 910/1107/14 +f 910/1107/14 911/1108/14 909/1109/14 +f 909/1109/14 911/1108/14 912/1110/14 +f 6/1111/37 4/1112/37 913/1113/37 +f 913/1113/37 4/1112/37 2/1114/37 +f 913/1113/37 2/1114/37 914/1115/37 +f 914/1115/37 2/1114/37 48/1116/37 +f 914/1115/37 48/1116/37 46/1117/37 +f 914/1115/37 46/1117/37 877/1118/37 +f 877/1118/37 46/1117/37 44/1119/37 +f 877/1118/37 44/1119/37 878/1120/37 +f 878/1120/37 44/1119/37 42/1121/37 +f 878/1120/37 42/1121/37 879/1122/37 +f 879/1122/37 42/1121/37 52/1123/37 +f 879/1122/37 52/1123/37 880/1124/37 +f 880/1124/37 52/1123/37 50/1125/37 +f 880/1124/37 50/1125/37 881/1126/37 +f 881/1126/37 50/1125/37 96/1127/37 +f 881/1126/37 96/1127/37 882/1128/37 +f 882/1128/37 96/1127/37 94/1129/37 +f 882/1128/37 94/1129/37 883/1130/37 +f 883/1130/37 94/1129/37 92/1131/37 +f 883/1130/37 92/1131/37 884/1132/37 +f 884/1132/37 92/1131/37 90/1133/37 +f 884/1132/37 90/1133/37 885/1134/37 +f 885/1134/37 90/1133/37 88/1135/37 +f 885/1134/37 88/1135/37 886/1136/37 +f 886/1136/37 88/1135/37 86/1137/37 +f 886/1136/37 86/1137/37 898/1095/37 +f 898/1095/37 86/1137/37 910/1107/37 +f 898/1095/37 910/1107/37 908/1105/37 +f 42/1121/37 40/1138/37 52/1123/37 +f 52/1123/37 40/1138/37 54/1139/37 +f 54/1139/37 40/1138/37 38/1140/37 +f 54/1139/37 38/1140/37 56/1141/37 +f 56/1141/37 38/1140/37 36/1142/37 +f 56/1141/37 36/1142/37 58/1143/37 +f 58/1143/37 36/1142/37 34/1144/37 +f 58/1143/37 34/1144/37 60/1145/37 +f 60/1145/37 34/1144/37 32/1146/37 +f 60/1145/37 32/1146/37 62/1147/37 +f 62/1147/37 32/1146/37 30/1148/37 +f 62/1147/37 30/1148/37 64/1149/37 +f 64/1149/37 30/1148/37 28/1150/37 +f 64/1149/37 28/1150/37 915/1151/37 +f 915/1151/37 28/1150/37 26/1152/37 +f 915/1151/37 26/1152/37 24/1153/37 +f 24/1153/37 22/1154/37 915/1151/37 +f 915/1151/37 22/1154/37 20/1155/37 +f 915/1151/37 20/1155/37 18/1156/37 +f 18/1156/37 16/1157/37 915/1151/37 +f 915/1151/37 16/1157/37 913/1113/37 +f 913/1113/37 16/1157/37 14/1158/37 +f 913/1113/37 14/1158/37 12/1159/37 +f 12/1159/37 10/1160/37 913/1113/37 +f 913/1113/37 10/1160/37 8/1161/37 +f 913/1113/37 8/1161/37 6/1111/37 +f 86/1137/37 84/1162/37 910/1107/37 +f 910/1107/37 84/1162/37 82/1163/37 +f 910/1107/37 82/1163/37 80/1164/37 +f 80/1164/37 78/1165/37 910/1107/37 +f 910/1107/37 78/1165/37 76/1166/37 +f 910/1107/37 76/1166/37 911/1108/37 +f 911/1108/37 76/1166/37 74/1167/37 +f 911/1108/37 74/1167/37 72/1168/37 +f 72/1168/37 70/1169/37 911/1108/37 +f 911/1108/37 70/1169/37 68/1170/37 +f 911/1108/37 68/1170/37 915/1151/37 +f 915/1151/37 68/1170/37 66/1171/37 +f 915/1151/37 66/1171/37 64/1149/37 +f 875/1172/37 874/1173/37 916/1174/37 +f 916/1174/37 874/1173/37 873/1175/37 +f 916/1174/37 873/1175/37 917/1176/37 +f 917/1176/37 873/1175/37 896/1177/37 +f 917/1176/37 896/1177/37 895/1178/37 +f 895/1178/37 894/1179/37 917/1176/37 +f 917/1176/37 894/1179/37 893/1180/37 +f 917/1176/37 893/1180/37 892/1181/37 +f 892/1181/37 891/1182/37 917/1176/37 +f 917/1176/37 891/1182/37 898/1095/37 +f 898/1095/37 891/1182/37 890/1183/37 +f 898/1095/37 890/1183/37 889/1184/37 +f 889/1184/37 888/1185/37 898/1095/37 +f 898/1095/37 888/1185/37 887/1186/37 +f 898/1095/37 887/1186/37 886/1136/37 +f 914/1115/37 877/1118/37 916/1174/37 +f 916/1174/37 877/1118/37 876/1187/37 +f 916/1174/37 876/1187/37 875/1172/37 +f 908/1105/37 906/1103/37 898/1095/37 +f 898/1095/37 906/1103/37 904/1101/37 +f 898/1095/37 904/1101/37 902/1099/37 +f 902/1099/37 900/1097/37 898/1095/37 +f 918/1188/37 919/1189/37 917/1176/37 +f 917/1176/37 919/1189/37 920/1190/37 +f 917/1176/37 920/1190/37 921/1191/37 +f 921/1191/37 922/1192/37 917/1176/37 +f 917/1176/37 922/1192/37 916/1174/37 +f 914/1115/37 923/1193/37 913/1113/37 +f 913/1113/37 923/1193/37 924/1194/37 +f 913/1113/37 924/1194/37 925/1195/37 +f 925/1195/37 926/1196/37 913/1113/37 +f 913/1113/37 926/1196/37 927/1197/37 +f 928/1198/37 929/1199/37 915/1151/37 +f 915/1151/37 929/1199/37 930/1200/37 +f 915/1151/37 930/1200/37 931/1201/37 +f 931/1201/37 932/1202/37 915/1151/37 +f 915/1151/37 932/1202/37 911/1108/37 +f 933/1203/2 916/1174/2 934/1204/1 +f 934/1204/1 916/1174/2 922/1192/1 +f 934/1204/1 922/1192/1 935/1205/24 +f 935/1205/24 922/1192/1 921/1191/24 +f 935/1205/24 921/1191/24 936/1206/23 +f 936/1206/23 921/1191/24 920/1190/23 +f 936/1206/23 920/1190/23 937/1207/22 +f 937/1207/22 920/1190/23 919/1189/22 +f 937/1207/22 919/1189/22 938/1208/21 +f 938/1208/21 919/1189/22 918/1188/21 +f 938/1208/21 918/1188/21 939/1209/20 +f 939/1209/20 918/1188/21 917/1176/20 +f 933/1210/2 940/1211/2 916/1174/2 +f 916/1174/2 940/1211/2 914/1115/2 +f 941/1212/8 913/1113/8 942/1213/7 +f 942/1213/7 913/1113/8 927/1197/7 +f 942/1213/7 927/1197/7 943/1214/6 +f 943/1214/6 927/1197/7 926/1196/6 +f 943/1214/6 926/1196/6 944/1215/5 +f 944/1215/5 926/1196/6 925/1195/5 +f 944/1215/5 925/1195/5 945/1216/4 +f 945/1216/4 925/1195/5 924/1194/4 +f 945/1216/4 924/1194/4 946/1217/3 +f 946/1217/3 924/1194/4 923/1193/3 +f 946/1217/3 923/1193/3 940/1218/2 +f 940/1218/2 923/1193/3 914/1115/2 +f 912/1219/14 911/1108/14 947/1220/13 +f 947/1220/13 911/1108/14 932/1202/13 +f 947/1220/13 932/1202/13 948/1221/12 +f 948/1221/12 932/1202/13 931/1201/12 +f 948/1221/12 931/1201/12 949/1222/11 +f 949/1222/11 931/1201/12 930/1200/11 +f 949/1222/11 930/1200/11 950/1223/10 +f 950/1223/10 930/1200/11 929/1199/10 +f 950/1223/10 929/1199/10 951/1224/9 +f 951/1224/9 929/1199/10 928/1198/9 +f 951/1224/9 928/1198/9 952/1225/8 +f 952/1225/8 928/1198/9 915/1151/8 +f 941/1226/8 952/1227/8 913/1113/8 +f 913/1113/8 952/1227/8 915/1151/8 +f 897/1228/20 939/1229/20 898/1095/20 +f 898/1095/20 939/1229/20 917/1176/20 +f 899/1230/25 901/1231/25 897/1232/25 +f 897/1232/25 901/1231/25 903/1233/25 +f 897/1232/25 903/1233/25 905/1234/25 +f 905/1234/25 907/1235/25 897/1232/25 +f 897/1232/25 907/1235/25 909/1236/25 +f 897/1232/25 909/1236/25 933/1237/25 +f 933/1237/25 909/1236/25 940/1238/25 +f 940/1238/25 909/1236/25 912/1239/25 +f 940/1238/25 912/1239/25 941/1240/25 +f 941/1240/25 912/1239/25 952/1241/25 +f 952/1241/25 912/1239/25 947/1242/25 +f 952/1241/25 947/1242/25 948/1243/25 +f 948/1243/25 949/1244/25 952/1241/25 +f 952/1241/25 949/1244/25 950/1245/25 +f 952/1241/25 950/1245/25 951/1246/25 +f 942/1247/25 943/1248/25 941/1240/25 +f 941/1240/25 943/1248/25 944/1249/25 +f 941/1240/25 944/1249/25 945/1250/25 +f 945/1250/25 946/1251/25 941/1240/25 +f 941/1240/25 946/1251/25 940/1238/25 +f 897/1232/25 933/1237/25 939/1252/25 +f 939/1252/25 933/1237/25 934/1253/25 +f 939/1252/25 934/1253/25 935/1254/25 +f 935/1254/25 936/1255/25 939/1252/25 +f 939/1252/25 936/1255/25 937/1256/25 +f 939/1252/25 937/1256/25 938/1257/25 diff --git a/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl b/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl new file mode 100644 index 0000000000..3b38a7daa2 Binary files /dev/null and b/resources/meshes/Original_Prusa_i3_MK3S_MK3_platform.stl differ diff --git a/resources/meshes/creality_cr10spro.stl b/resources/meshes/creality_cr10spro.stl new file mode 100644 index 0000000000..df2167d1eb Binary files /dev/null and b/resources/meshes/creality_cr10spro.stl differ diff --git a/resources/meshes/creality_ender3.stl b/resources/meshes/creality_ender3.stl new file mode 100644 index 0000000000..b1fd101aad Binary files /dev/null and b/resources/meshes/creality_ender3.stl differ diff --git a/resources/meshes/creality_ender3_platform.stl b/resources/meshes/creality_ender3_platform.stl deleted file mode 100644 index 4c3699a530..0000000000 --- a/resources/meshes/creality_ender3_platform.stl +++ /dev/null @@ -1,19854 +0,0 @@ -solid OpenSCAD_Model - facet normal 0 0 -1 - outer loop - vertex -36.5262 -13.4531 -3 - vertex -35.4871 -14.1281 -3 - vertex -35.6081 -14.799 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4871 -14.1281 -3 - vertex -35.9073 -13.512 -3 - vertex -35.5739 -13.718 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4871 -14.1281 -3 - vertex -36.5262 -13.4531 -3 - vertex -35.9073 -13.512 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.2393 -13.2576 -3 - vertex -35.6081 -14.799 -3 - vertex -37.0548 -18.7102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.6081 -14.799 -3 - vertex -37.2393 -13.2576 -3 - vertex -36.5262 -13.4531 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.0548 -18.7102 -3 - vertex -37.5366 -12.7854 -3 - vertex -37.2393 -13.2576 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -38.3729 23.836 -3 - vertex -37.6991 23.0789 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -38.8382 24.6102 -3 - vertex -38.3729 23.836 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -39.1303 25.4589 -3 - vertex -38.8382 24.6102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -37.5366 -12.7854 -3 - vertex -39.9072 -25.4747 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.9072 -25.4747 -3 - vertex -37.5366 -12.7854 -3 - vertex -37.0548 -18.7102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.0976 22.0525 -3 - vertex -29.0303 22.3563 -3 - vertex -28.3511 21.9725 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.0976 22.0525 -3 - vertex -30.3878 23.2826 -3 - vertex -29.0303 22.3563 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1178 22.3529 -3 - vertex -30.3878 23.2826 -3 - vertex -30.0976 22.0525 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.0943 24.213 -3 - vertex -34.2108 23.023 -3 - vertex -31.2773 24.779 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -34.2108 23.023 -3 - vertex -31.0943 24.213 -3 - vertex -32.1178 22.3529 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -30.3878 23.2826 -3 - vertex -32.1178 22.3529 -3 - vertex -31.0943 24.213 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.0647 23.8437 -3 - vertex -26.0224 24.2804 -3 - vertex -24.664 24.0122 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.3687 23.7586 -3 - vertex -26.0224 24.2804 -3 - vertex -26.0647 23.8437 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.3687 23.7586 -3 - vertex -28.1365 24.9019 -3 - vertex -26.0224 24.2804 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.4642 23.8513 -3 - vertex -28.1365 24.9019 -3 - vertex -27.3687 23.7586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.3958 24.13 -3 - vertex -28.1365 24.9019 -3 - vertex -28.4642 23.8513 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.3958 24.13 -3 - vertex -29.9035 25.8898 -3 - vertex -28.1365 24.9019 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.2081 24.6027 -3 - vertex -29.9035 25.8898 -3 - vertex -29.3958 24.13 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.8173 24.9813 -3 - vertex -29.9035 25.8898 -3 - vertex -30.2081 24.6027 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.1793 25.0376 -3 - vertex -29.9035 25.8898 -3 - vertex -30.8173 24.9813 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -29.9035 25.8898 -3 - vertex -31.1793 25.0376 -3 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.2912 27.2229 -3 - vertex -31.1793 25.0376 -3 - vertex -31.2773 24.779 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.1793 25.0376 -3 - vertex -31.2912 27.2229 -3 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.4212 26.8695 -3 - vertex -21.4485 26.3569 -3 - vertex -22.0473 26.2369 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.4485 26.3569 -3 - vertex -22.4212 26.8695 -3 - vertex -21.2681 26.5576 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.8433 26.205 -3 - vertex -22.4212 26.8695 -3 - vertex -22.0473 26.2369 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.4214 26.3653 -3 - vertex -24.3225 27.6757 -3 - vertex -24.8433 26.205 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -23.8902 27.3484 -3 - vertex -24.8433 26.205 -3 - vertex -24.3225 27.6757 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -22.4212 26.8695 -3 - vertex -24.8433 26.205 -3 - vertex -23.8902 27.3484 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.168338 -24.355 -3 - vertex -3.89417 -22.8317 -3 - vertex -3.85646 -21.6547 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -6.41168 -29.738 -3 - vertex -3.7659 -32.0301 -3 - vertex -3.99709 -33.5697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.14673 -30.0798 -3 - vertex -4.26405 -24.3543 -3 - vertex -3.89417 -22.8317 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 12.858 -14.1239 -3 - vertex 14.1246 -14.3424 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 12.417 -13.7469 -3 - vertex 12.858 -14.1239 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.3474 -19.1774 -3 - vertex 13.2867 -16.8469 -3 - vertex 11.2177 -19.5302 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.2177 -19.5302 -3 - vertex 13.2867 -16.8469 -3 - vertex 12.058 -19.7199 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.0544 30.7144 -3 - vertex 5.19939 38.083 -3 - vertex 5.25321 38.4452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5971 30.3591 -3 - vertex 4.72188 37.0399 -3 - vertex 5.19939 38.083 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.2319 29.4873 -3 - vertex 3.57109 31.3388 -3 - vertex 11.5971 30.3591 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 4.30515 36.0346 -3 - vertex 11.5971 30.3591 -3 - vertex 3.93589 34.5584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5971 30.3591 -3 - vertex 4.30515 36.0346 -3 - vertex 4.72188 37.0399 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.57109 31.3388 -3 - vertex 4.3138 28.4461 -3 - vertex 3.67763 29.7129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5971 30.3591 -3 - vertex 3.57109 31.3388 -3 - vertex 3.93589 34.5584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.21237 -5.88439 -3 - vertex 7.03104 -4.97268 -3 - vertex 7.79727 -5.75259 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.81183 -5.98051 -3 - vertex 7.03104 -4.97268 -3 - vertex 7.21237 -5.88439 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 7.03104 -4.97268 -3 - vertex 5.81183 -5.98051 -3 - vertex 5.97791 -3.63939 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.9592 -5.58648 -3 - vertex 5.97791 -3.63939 -3 - vertex 5.81183 -5.98051 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 5.97791 -3.63939 -3 - vertex 3.9592 -5.58648 -3 - vertex 5.02006 -2.01238 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 5.02006 -2.01238 -3 - vertex 1.09298 -4.60426 -3 - vertex 4.37015 -0.506109 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.09298 -4.60426 -3 - vertex 5.02006 -2.01238 -3 - vertex 3.9592 -5.58648 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.7931 16.6725 -3 - vertex 24.1542 17.4223 -3 - vertex 24.7174 17.1695 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.3802 15.8262 -3 - vertex 24.1542 17.4223 -3 - vertex 24.7931 16.6725 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.3802 15.8262 -3 - vertex 22.547 17.5015 -3 - vertex 24.1542 17.4223 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.1653 14.8489 -3 - vertex 22.547 17.5015 -3 - vertex 23.3802 15.8262 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.1653 14.8489 -3 - vertex 20.2159 17.5562 -3 - vertex 22.547 17.5015 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.0668 14.6265 -3 - vertex 20.2159 17.5562 -3 - vertex 21.1653 14.8489 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 18.4164 15.1559 -3 - vertex 20.2159 17.5562 -3 - vertex 20.0668 14.6265 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 20.2159 17.5562 -3 - vertex 18.4164 15.1559 -3 - vertex 19.8437 17.7553 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.5954 15.8977 -3 - vertex 19.8437 17.7553 -3 - vertex 18.4164 15.1559 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.8437 17.7553 -3 - vertex 16.5954 15.8977 -3 - vertex 19.5351 18.2611 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.2045 16.623 -3 - vertex 19.5351 18.2611 -3 - vertex 16.5954 15.8977 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.5351 18.2611 -3 - vertex 15.2045 16.623 -3 - vertex 19.0948 20.2262 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.99 17.4864 -3 - vertex 19.0948 20.2262 -3 - vertex 15.2045 16.623 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.0948 20.2262 -3 - vertex 17.155 22.8321 -3 - vertex 18.6529 22.0992 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.0948 20.2262 -3 - vertex 13.99 17.4864 -3 - vertex 17.155 22.8321 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.6982 18.6425 -3 - vertex 17.155 22.8321 -3 - vertex 13.99 17.4864 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 17.155 22.8321 -3 - vertex 12.6982 18.6425 -3 - vertex 15.5055 23.4995 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.9729 20.5521 -3 - vertex 15.5055 23.4995 -3 - vertex 12.6982 18.6425 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 15.5055 23.4995 -3 - vertex 10.9729 20.5521 -3 - vertex 14.0164 24.1527 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 14.0164 24.1527 -3 - vertex 10.9729 20.5521 -3 - vertex 13.0733 24.7212 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.71033 23.0922 -3 - vertex 13.0733 24.7212 -3 - vertex 10.9729 20.5521 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 13.0733 24.7212 -3 - vertex 9.71033 23.0922 -3 - vertex 12.1975 25.5292 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.1975 25.5292 -3 - vertex 9.07032 24.476 -3 - vertex 11.5037 26.4501 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.07032 24.476 -3 - vertex 12.1975 25.5292 -3 - vertex 9.71033 23.0922 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.704 16.8274 -3 - vertex 26.0816 17.5963 -3 - vertex 25.8979 16.7563 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.1513 17.7384 -3 - vertex 26.0816 17.5963 -3 - vertex 25.4738 17.2443 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.0816 17.5963 -3 - vertex 25.704 16.8274 -3 - vertex 25.4738 17.2443 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.0816 17.5963 -3 - vertex 25.1513 17.7384 -3 - vertex 25.9892 18.2943 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 25.9892 18.2943 -3 - vertex 25.1513 17.7384 -3 - vertex 25.7331 18.8483 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.5942 18.0475 -3 - vertex 25.7331 18.8483 -3 - vertex 25.1513 17.7384 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 25.7331 18.8483 -3 - vertex 24.5942 18.0475 -3 - vertex 25.3447 19.2137 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 25.3447 19.2137 -3 - vertex 24.5942 18.0475 -3 - vertex 24.8554 19.3454 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.5942 18.0475 -3 - vertex 23.3909 19.6849 -3 - vertex 24.8554 19.3454 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.335 18.2522 -3 - vertex 23.3909 19.6849 -3 - vertex 24.5942 18.0475 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 23.3909 19.6849 -3 - vertex 22.335 18.2522 -3 - vertex 22.6368 20.047 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9591 18.304 -3 - vertex 22.6368 20.047 -3 - vertex 22.335 18.2522 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 22.6368 20.047 -3 - vertex 20.9591 18.304 -3 - vertex 22.0911 20.5797 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.8405 19.3078 -3 - vertex 22.0911 20.5797 -3 - vertex 20.9591 18.304 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.4421 21.9215 -3 - vertex 21.7245 21.3239 -3 - vertex 19.6596 20.6529 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.6596 20.6529 -3 - vertex 22.0911 20.5797 -3 - vertex 19.8405 19.3078 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.7245 21.3239 -3 - vertex 19.4421 21.9215 -3 - vertex 21.508 22.3204 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.8405 19.3078 -3 - vertex 20.9591 18.304 -3 - vertex 20.2006 18.5903 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 21.508 22.3204 -3 - vertex 19.4421 21.9215 -3 - vertex 21.2518 23.2891 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.0911 20.5797 -3 - vertex 19.6596 20.6529 -3 - vertex 21.7245 21.3239 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 18.9185 22.6398 -3 - vertex 21.2518 23.2891 -3 - vertex 19.4421 21.9215 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 21.2518 23.2891 -3 - vertex 18.9185 22.6398 -3 - vertex 20.762 24.0784 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 20.762 24.0784 -3 - vertex 18.9185 22.6398 -3 - vertex 20.0338 24.6942 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 20.0338 24.6942 -3 - vertex 18.9185 22.6398 -3 - vertex 19.062 25.1422 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.6852 23.4449 -3 - vertex 19.062 25.1422 -3 - vertex 18.9185 22.6398 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.6852 23.4449 -3 - vertex 17.2513 25.98 -3 - vertex 19.062 25.1422 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.1211 24.4531 -3 - vertex 17.2513 25.98 -3 - vertex 17.6852 23.4449 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 17.2513 25.98 -3 - vertex 15.1211 24.4531 -3 - vertex 15.7223 27.2873 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.4969 25.2416 -3 - vertex 15.7223 27.2873 -3 - vertex 15.1211 24.4531 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 15.7223 27.2873 -3 - vertex 13.4969 25.2416 -3 - vertex 15.122 28.0941 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.5486 25.9653 -3 - vertex 15.122 28.0941 -3 - vertex 13.4969 25.2416 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.1521 -17.7131 -3 - vertex 20.2954 -22.4759 -3 - vertex 19.0386 -23.7798 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 19.0386 -23.7798 -3 - vertex 17.855 -25.2923 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.2954 -22.4759 -3 - vertex 17.1521 -17.7131 -3 - vertex 19.6777 -11.13 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 17.855 -25.2923 -3 - vertex 16.4055 -27.6373 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 16.4055 -27.6373 -3 - vertex 15.3794 -29.9771 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.4887 -31.4602 -3 - vertex 15.3794 -29.9771 -3 - vertex 14.7938 -32.2631 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.0386 -23.7798 -3 - vertex 14.5835 -23.8342 -3 - vertex 17.1521 -17.7131 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.871 -34.5351 -3 - vertex 14.7938 -32.2631 -3 - vertex 14.6656 -34.4466 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.7235 1.18648 -3 - vertex 20.9081 -2.19366 -3 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.0737 -20.4525 -3 - vertex 19.6777 -11.13 -3 - vertex 20.9081 -2.19366 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.6777 -11.13 -3 - vertex 21.6367 -21.3703 -3 - vertex 20.2954 -22.4759 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 19.6777 -11.13 -3 - vertex 20.4179 -3.0084 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5452 -10.7956 -3 - vertex 20.4179 -3.0084 -3 - vertex 19.6777 -11.13 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5452 -10.7956 -3 - vertex 19.4334 -3.80993 -3 - vertex 20.4179 -3.0084 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.7619 -4.80944 -3 - vertex 19.5452 -10.7956 -3 - vertex 19.0845 -10.6988 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5452 -10.7956 -3 - vertex 17.7619 -4.80944 -3 - vertex 19.4334 -3.80993 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0012 -6.23992 -3 - vertex 19.0845 -10.6988 -3 - vertex 16.7993 -11.2316 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.0845 -10.6988 -3 - vertex 15.0012 -6.23992 -3 - vertex 17.7619 -4.80944 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.6103 -7.15898 -3 - vertex 16.7993 -11.2316 -3 - vertex 13.71 -12.1451 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.6103 -7.15898 -3 - vertex 13.71 -12.1451 -3 - vertex 13.1035 -12.4147 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.2421 -7.67101 -3 - vertex 13.1035 -12.4147 -3 - vertex 12.6527 -12.8127 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.7993 -11.2316 -3 - vertex 12.6103 -7.15898 -3 - vertex 15.0012 -6.23992 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.2421 -7.67101 -3 - vertex 12.6527 -12.8127 -3 - vertex 12.4073 -13.2773 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 10.3474 -19.1774 -3 - vertex 12.417 -13.7469 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.2177 -19.5302 -3 - vertex 12.058 -19.7199 -3 - vertex 11.7785 -19.8211 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.75581 -19.1712 -3 - vertex 12.417 -13.7469 -3 - vertex 10.3474 -19.1774 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.06268 -19.3694 -3 - vertex 12.417 -13.7469 -3 - vertex 8.75581 -19.1712 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.1035 -12.4147 -3 - vertex 10.2421 -7.67101 -3 - vertex 12.6103 -7.15898 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.417 -13.7469 -3 - vertex 7.06268 -19.3694 -3 - vertex 12.4073 -13.2773 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.4073 -13.2773 -3 - vertex 7.54923 -7.88041 -3 - vertex 10.2421 -7.67101 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.4073 -13.2773 -3 - vertex 7.06268 -19.3694 -3 - vertex 7.54923 -7.88041 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.03167 -7.88498 -3 - vertex 7.06268 -19.3694 -3 - vertex 5.689 -19.9339 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.06268 -19.3694 -3 - vertex 5.03167 -7.88498 -3 - vertex 7.54923 -7.88041 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.689 -19.9339 -3 - vertex 3.854 -7.59505 -3 - vertex 5.03167 -7.88498 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.72385 -21.1527 -3 - vertex 3.854 -7.59505 -3 - vertex 5.689 -19.9339 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.06681 -20.6308 -3 - vertex 3.72385 -21.1527 -3 - vertex 1.84511 -22.661 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.72385 -21.1527 -3 - vertex -4.70045 -19.8327 -3 - vertex 3.854 -7.59505 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.85646 -21.6547 -3 - vertex 1.84511 -22.661 -3 - vertex 0.168338 -24.355 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.89417 -22.8317 -3 - vertex 0.168338 -24.355 -3 - vertex -1.19093 -26.1306 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.72385 -21.1527 -3 - vertex -4.06681 -20.6308 -3 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.89417 -22.8317 -3 - vertex -1.19093 -26.1306 -3 - vertex -2.25121 -28.0146 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.89417 -22.8317 -3 - vertex -2.25121 -28.0146 -3 - vertex -3.14673 -30.0798 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.84511 -22.661 -3 - vertex -3.85646 -21.6547 -3 - vertex -4.06681 -20.6308 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.57075 -19.2012 -3 - vertex 3.854 -7.59505 -3 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -6.41168 -29.738 -3 - vertex -3.14673 -30.0798 -3 - vertex -3.7659 -32.0301 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.2139 -19.2263 -3 - vertex 27.528 9.70386 -3 - vertex 27.6094 12.2412 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.989 -19.2301 -3 - vertex 26.953 2.16551 -3 - vertex 27.528 9.70386 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.9177 3.98634 -3 - vertex 27.528 9.70386 -3 - vertex 26.953 2.16551 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.989 -19.2301 -3 - vertex 26.8464 1.29842 -3 - vertex 26.953 2.16551 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.989 -19.2301 -3 - vertex 26.7235 1.18648 -3 - vertex 26.8464 1.29842 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 26.7235 1.18648 -3 - vertex 27.8281 -19.1444 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 27.8281 -19.1444 -3 - vertex 26.5413 -19.2026 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 26.7235 1.18648 -3 - vertex 21.0968 -1.15452 -3 - vertex 26.5455 1.2697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 26.5413 -19.2026 -3 - vertex 25.4359 -19.4082 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 23.9858 2.16372 -3 - vertex 26.5455 1.2697 -3 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.5455 1.2697 -3 - vertex 23.9858 2.16372 -3 - vertex 25.9977 1.96397 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3153 2.68052 -3 - vertex 24.7523 2.4559 -3 - vertex 25.0347 2.67962 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9977 1.96397 -3 - vertex 24.7523 2.4559 -3 - vertex 25.3153 2.68052 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9977 1.96397 -3 - vertex 23.9858 2.16372 -3 - vertex 24.7523 2.4559 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 25.4359 -19.4082 -3 - vertex 23.0737 -20.4525 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.9858 2.16372 -3 - vertex 21.0968 -1.15452 -3 - vertex 23.1222 1.97635 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.0282 0.220415 -3 - vertex 23.1222 1.97635 -3 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 23.1222 1.97635 -3 - vertex 21.0282 0.220415 -3 - vertex 22.8505 1.9828 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.6777 -11.13 -3 - vertex 23.0737 -20.4525 -3 - vertex 21.6367 -21.3703 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 22.8505 1.9828 -3 - vertex 21.0282 0.220415 -3 - vertex 22.7784 2.30129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.4865 -0.127098 -3 - vertex 22.7784 2.30129 -3 - vertex 21.0282 0.220415 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.7784 2.30129 -3 - vertex 16.0239 2.90744 -3 - vertex 21.7142 8.22365 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 22.7784 2.30129 -3 - vertex 19.4865 -0.127098 -3 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3368 5.33522 -3 - vertex 21.7142 8.22365 -3 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.8564 0.883682 -3 - vertex 19.4865 -0.127098 -3 - vertex 18.2674 -0.466912 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.8564 0.883682 -3 - vertex 18.2674 -0.466912 -3 - vertex 17.6745 -0.267811 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.4865 -0.127098 -3 - vertex 16.8564 0.883682 -3 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 21.7142 8.22365 -3 - vertex 15.3368 5.33522 -3 - vertex 19.7157 9.66569 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.9551 7.69881 -3 - vertex 19.7157 9.66569 -3 - vertex 15.3368 5.33522 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 19.7157 9.66569 -3 - vertex 14.9551 7.69881 -3 - vertex 18.6847 10.137 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 18.6847 10.137 -3 - vertex 14.9551 7.69881 -3 - vertex 17.337 10.3363 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.9426 8.95486 -3 - vertex 17.337 10.3363 -3 - vertex 14.9551 7.69881 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.337 10.3363 -3 - vertex 15.3572 9.74689 -3 - vertex 15.9933 10.3315 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.9933 10.3315 -3 - vertex 15.3572 9.74689 -3 - vertex 15.6762 10.1383 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.337 10.3363 -3 - vertex 14.9426 8.95486 -3 - vertex 15.3572 9.74689 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 34.7441 -22.7166 -3 - vertex 31.8275 -24.8188 -3 - vertex 32.0255 -23.3848 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.8709 -31.8517 -3 - vertex 32.5255 -33.371 -3 - vertex 31.6707 -35.0376 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 31.4974 -26.3899 -3 - vertex 31.8275 -24.8188 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 31.2318 -26.857 -3 - vertex 31.4974 -26.3899 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.8709 -31.8517 -3 - vertex 31.6707 -35.0376 -3 - vertex 30.8837 -35.7486 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 30.2029 -31.1764 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 30.7817 -27.1595 -3 - vertex 33.8444 -30.1753 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 32.5255 -33.371 -3 - vertex 29.8709 -31.8517 -3 - vertex 30.2029 -31.1764 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 30.8837 -35.7486 -3 - vertex 29.7686 -36.0779 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 29.7686 -36.0779 -3 - vertex 29.0223 -36.3831 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 29.0223 -36.3831 -3 - vertex 28.553 -36.8405 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9895 -35.834 -3 - vertex 28.553 -36.8405 -3 - vertex 28.4102 -37.3704 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.8837 -35.7486 -3 - vertex 27.8442 -34.1555 -3 - vertex 29.8709 -31.8517 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 30.7817 -27.1595 -3 - vertex 31.2318 -26.857 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.6885 -30.4984 -3 - vertex 30.7817 -27.1595 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.9763 -27.4135 -3 - vertex 29.6885 -30.4984 -3 - vertex 29.2916 -30.4642 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.6885 -30.4984 -3 - vertex 28.9763 -27.4135 -3 - vertex 30.7817 -27.1595 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.199 -31.2235 -3 - vertex 28.9763 -27.4135 -3 - vertex 29.2916 -30.4642 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 28.199 -31.2235 -3 - vertex 26.4192 -32.7448 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.199 -31.2235 -3 - vertex 25.3774 -27.4375 -3 - vertex 28.9763 -27.4135 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.9271 -33.7368 -3 - vertex 25.3774 -27.4375 -3 - vertex 26.4192 -32.7448 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.5138 -29.5327 -3 - vertex 24.9271 -33.7368 -3 - vertex 23.5816 -34.2758 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3087 -31.0557 -3 - vertex 23.5816 -34.2758 -3 - vertex 22.2417 -34.4379 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3087 -31.0557 -3 - vertex 22.2417 -34.4379 -3 - vertex 21.4183 -34.349 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 21.4183 -34.349 -3 - vertex 20.6651 -34.0963 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.5816 -34.2758 -3 - vertex 19.3087 -31.0557 -3 - vertex 19.5138 -29.5327 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 20.6651 -34.0963 -3 - vertex 20.0228 -33.6987 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 19.9054 -28.0436 -3 - vertex 20.1129 -27.4424 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 20.0228 -33.6987 -3 - vertex 19.5322 -33.1754 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 19.5138 -29.5327 -3 - vertex 19.9054 -28.0436 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.9271 -33.7368 -3 - vertex 19.5138 -29.5327 -3 - vertex 25.3774 -27.4375 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.4183 -34.349 -3 - vertex 19.3085 -32.3556 -3 - vertex 19.3087 -31.0557 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 26.9177 3.98634 -3 - vertex 27.209 8.08714 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.209 8.08714 -3 - vertex 26.9177 3.98634 -3 - vertex 26.8985 6.51977 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.2082 3.44442 -3 - vertex 23.5966 4.95794 -3 - vertex 23.5377 4.18291 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 23.5966 4.95794 -3 - vertex 23.2082 3.44442 -3 - vertex 23.3811 5.8089 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.2082 3.44442 -3 - vertex 22.8875 6.77518 -3 - vertex 23.3811 5.8089 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.7142 8.22365 -3 - vertex 23.2082 3.44442 -3 - vertex 22.7784 2.30129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.2082 3.44442 -3 - vertex 21.7142 8.22365 -3 - vertex 22.8875 6.77518 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0577 29.0611 -3 - vertex 12.0187 29.9363 -3 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.7374 28.4518 -3 - vertex 15.122 28.0941 -3 - vertex 11.8052 27.5343 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 11.8088 29.3224 -3 - vertex 15.0577 29.0611 -3 - vertex 11.7374 28.4518 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.122 28.0941 -3 - vertex 11.7374 28.4518 -3 - vertex 15.0577 29.0611 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0577 29.0611 -3 - vertex 11.8088 29.3224 -3 - vertex 12.0187 29.9363 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.871 -34.5351 -3 - vertex 14.6656 -34.4466 -3 - vertex 12.1385 -34.7994 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 14.7938 -32.2631 -3 - vertex 11.871 -34.5351 -3 - vertex 11.4887 -31.4602 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 15.3794 -29.9771 -3 - vertex 11.4887 -31.4602 -3 - vertex 14.5835 -23.8342 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.915 -33.0747 -3 - vertex 11.871 -34.5351 -3 - vertex 11.4551 -34.4353 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.871 -34.5351 -3 - vertex 10.915 -33.0747 -3 - vertex 11.4887 -31.4602 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.7197 -33.9677 -3 - vertex 11.4551 -34.4353 -3 - vertex 10.9006 -34.3507 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.4551 -34.4353 -3 - vertex 10.7197 -33.9677 -3 - vertex 10.915 -33.0747 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.2516 -3.15818 -3 - vertex 14.2455 -2.23644 -3 - vertex 14.333 -2.7489 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.8131 -3.7697 -3 - vertex 14.2455 -2.23644 -3 - vertex 14.2516 -3.15818 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 13.172 -4.2601 -3 - vertex 14.2455 -2.23644 -3 - vertex 13.8131 -3.7697 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 14.2455 -2.23644 -3 - vertex 13.172 -4.2601 -3 - vertex 13.5923 -0.94501 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.4032 -4.58609 -3 - vertex 13.5923 -0.94501 -3 - vertex 13.172 -4.2601 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.5814 -4.70438 -3 - vertex 13.5923 -0.94501 -3 - vertex 12.4032 -4.58609 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.2758 -4.53506 -3 - vertex 13.5923 -0.94501 -3 - vertex 11.5814 -4.70438 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 13.5923 -0.94501 -3 - vertex 10.2758 -4.53506 -3 - vertex 12.3489 0.629998 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.01294 -4.00814 -3 - vertex 12.3489 0.629998 -3 - vertex 10.2758 -4.53506 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.74282 -3.09522 -3 - vertex 12.3489 0.629998 -3 - vertex 9.01294 -4.00814 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 12.3489 0.629998 -3 - vertex 7.74282 -3.09522 -3 - vertex 10.5724 2.40247 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.41545 -1.76788 -3 - vertex 10.5724 2.40247 -3 - vertex 7.74282 -3.09522 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 10.5724 2.40247 -3 - vertex 6.41545 -1.76788 -3 - vertex 9.13441 3.60373 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.6091 0.441775 -3 - vertex 9.13441 3.60373 -3 - vertex 6.41545 -1.76788 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 9.13441 3.60373 -3 - vertex 4.6091 0.441775 -3 - vertex 8.18559 4.25764 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.39665 0.754678 -3 - vertex 8.18559 4.25764 -3 - vertex 4.6091 0.441775 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 8.18559 4.25764 -3 - vertex 4.39665 0.754678 -3 - vertex 5.26682 5.76024 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.66409 7.13679 -3 - vertex 4.39665 0.754678 -3 - vertex 4.24084 0.464987 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.39665 0.754678 -3 - vertex 1.66409 7.13679 -3 - vertex 5.26682 5.76024 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.72768 -3.30659 -3 - vertex 4.37015 -0.506109 -3 - vertex 1.09298 -4.60426 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.37015 -0.506109 -3 - vertex -1.72768 -3.30659 -3 - vertex 4.24084 0.464987 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.55278 -2.51803 -3 - vertex 4.24084 0.464987 -3 - vertex -1.72768 -3.30659 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.24084 0.464987 -3 - vertex -3.55278 -2.51803 -3 - vertex 1.66409 7.13679 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.66409 7.13679 -3 - vertex -3.55278 -2.51803 -3 - vertex -0.248642 7.94666 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -0.248642 7.94666 -3 - vertex -3.55278 -2.51803 -3 - vertex -2.78119 9.30203 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.99153 10.6633 -3 - vertex -3.55278 -2.51803 -3 - vertex -3.71458 -2.66291 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 3.854 -7.59505 -3 - vertex -5.57075 -19.2012 -3 - vertex 1.04019 -5.91722 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.04019 -5.91722 -3 - vertex -5.57075 -19.2012 -3 - vertex -2.05653 -4.03047 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.1272 -19.1706 -3 - vertex -2.05653 -4.03047 -3 - vertex -5.57075 -19.2012 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.55278 -2.51803 -3 - vertex -4.99153 10.6633 -3 - vertex -2.78119 9.30203 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -2.05653 -4.03047 -3 - vertex -7.1272 -19.1706 -3 - vertex -3.45272 -3.03042 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4385 -11.5861 -3 - vertex -3.45272 -3.03042 -3 - vertex -7.1272 -19.1706 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -3.71458 -2.66291 -3 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.45272 -3.03042 -3 - vertex -17.4385 -11.5861 -3 - vertex -3.71458 -2.66291 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.41055 11.926 -3 - vertex 1.8467 12.7398 -3 - vertex 1.87173 12.344 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.8467 12.7398 -3 - vertex 1.41055 11.926 -3 - vertex 1.50002 13.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.41055 11.926 -3 - vertex 0.918757 13.5702 -3 - vertex 1.50002 13.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.535115 11.4454 -3 - vertex 0.918757 13.5702 -3 - vertex 1.41055 11.926 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.394194 11.1972 -3 - vertex 0.918757 13.5702 -3 - vertex 0.535115 11.4454 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.394194 11.1972 -3 - vertex -0.928844 14.138 -3 - vertex 0.918757 13.5702 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.46211 11.1697 -3 - vertex -0.928844 14.138 -3 - vertex -0.394194 11.1972 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.75335 11.3511 -3 - vertex -0.928844 14.138 -3 - vertex -1.46211 11.1697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.75335 11.3511 -3 - vertex -3.65881 14.4362 -3 - vertex -0.928844 14.138 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.07797 11.6776 -3 - vertex -3.65881 14.4362 -3 - vertex -2.75335 11.3511 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.23385 14.4578 -3 - vertex -5.07797 11.6776 -3 - vertex -5.71478 11.6495 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.23385 14.4578 -3 - vertex -5.71478 11.6495 -3 - vertex -5.93765 11.491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.07797 11.6776 -3 - vertex -7.23385 14.4578 -3 - vertex -3.65881 14.4362 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -13.7227 13.3517 -3 - vertex -3.71458 -2.66291 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4385 -11.5861 -3 - vertex -7.1272 -19.1706 -3 - vertex -8.78621 -19.378 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.7016 -19.4898 -3 - vertex -8.78621 -19.378 -3 - vertex -10.3766 -20.1728 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -13.7227 13.3517 -3 - vertex -4.99153 10.6633 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.7016 -19.4898 -3 - vertex -10.3766 -20.1728 -3 - vertex -11.6824 -19.9072 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -10.3766 -20.1728 -3 - vertex -11.8627 -20.4599 -3 - vertex -11.6824 -19.9072 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -11.8627 -20.4599 -3 - vertex -10.3766 -20.1728 -3 - vertex -12.0544 -21.102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.6062 -18.108 -3 - vertex -22.6991 -20.0641 -3 - vertex -22.6057 -19.3555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -23.6767 -35.9691 -3 - vertex -22.458 -35.4568 -3 - vertex -23.007 -35.8619 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.4076 -24.3815 -3 - vertex -21.28 -33.2523 -3 - vertex -23.4462 -30.738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -23.1278 -21.2395 -3 - vertex -22.6991 -20.0641 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -22.458 -35.4568 -3 - vertex -23.6767 -35.9691 -3 - vertex -24.7956 -33.2498 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -23.8149 -31.5911 -3 - vertex -23.4462 -30.738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.7956 -33.2498 -3 - vertex -23.6767 -35.9691 -3 - vertex -24.4194 -36.2501 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -24.7956 -33.2498 -3 - vertex -23.8149 -31.5911 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.2791 -36.8782 -3 - vertex -24.4194 -36.2501 -3 - vertex -24.9699 -36.888 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.2791 -36.8782 -3 - vertex -24.9699 -36.888 -3 - vertex -25.157 -37.5754 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -24.4194 -36.2501 -3 - vertex -27.2791 -36.8782 -3 - vertex -24.7956 -33.2498 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.299 -23.335 -3 - vertex -17.8179 -22.6324 -3 - vertex -17.2695 -22.7276 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.299 -23.335 -3 - vertex -18.3659 -22.5704 -3 - vertex -17.8179 -22.6324 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.5428 -26.6889 -3 - vertex -18.3659 -22.5704 -3 - vertex -17.299 -23.335 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.5428 -26.6889 -3 - vertex -18.6886 -22.3738 -3 - vertex -18.3659 -22.5704 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -18.6886 -22.3738 -3 - vertex -18.5428 -26.6889 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -18.7986 -22.0269 -3 - vertex -18.6886 -22.3738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -19.683 -17.584 -3 - vertex -19.3785 -17.1305 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -20.1126 -17.9213 -3 - vertex -19.683 -17.584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -20.6062 -18.108 -3 - vertex -20.1126 -17.9213 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -20.6062 -18.108 -3 - vertex -18.7986 -22.0269 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -18.5428 -26.6889 -3 - vertex -21.28 -33.2523 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.6062 -18.108 -3 - vertex -22.6057 -19.3555 -3 - vertex -21.1029 -18.1093 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -21.1029 -18.1093 -3 - vertex -22.6057 -19.3555 -3 - vertex -21.3898 -18.0171 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.8641 -19.008 -3 - vertex -21.3898 -18.0171 -3 - vertex -22.6057 -19.3555 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -21.3898 -18.0171 -3 - vertex -22.8641 -19.008 -3 - vertex -21.538 -17.8042 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -23.4908 -18.9156 -3 - vertex -21.538 -17.8042 -3 - vertex -22.8641 -19.008 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.7956 -33.2498 -3 - vertex -21.9191 -34.6287 -3 - vertex -22.458 -35.4568 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -21.538 -17.8042 -3 - vertex -23.4908 -18.9156 -3 - vertex -21.5846 -16.4428 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.9191 -34.6287 -3 - vertex -24.7956 -33.2498 -3 - vertex -21.28 -33.2523 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -23.3419 -14.2877 -3 - vertex -21.5846 -16.4428 -3 - vertex -23.4908 -18.9156 -3 - endloop - endfacet - facet normal -0 -0 -1 - outer loop - vertex -22.1413 -14.5577 -3 - vertex -21.5846 -16.4428 -3 - vertex -23.3419 -14.2877 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.6401 -15.0493 -3 - vertex -22.1413 -14.5577 -3 - vertex -21.8106 -14.7733 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.5846 -16.4428 -3 - vertex -22.1413 -14.5577 -3 - vertex -21.6401 -15.0493 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -23.3419 -14.2877 -3 - vertex -23.4908 -18.9156 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.1195 -14.1654 -3 - vertex -24.1111 -19.1062 -3 - vertex -24.7225 -19.9745 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.8809 -15.6487 -3 - vertex -24.7225 -19.9745 -3 - vertex -25.7001 -21.2849 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -26.1195 -14.1654 -3 - vertex -23.3419 -14.2877 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -25.7001 -21.2849 -3 - vertex -26.9351 -22.1109 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -26.9351 -22.1109 -3 - vertex -28.6031 -22.5277 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.7225 -19.9745 -3 - vertex -30.8809 -15.6487 -3 - vertex -26.1195 -14.1654 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.1195 -14.1654 -3 - vertex -30.8809 -15.6487 -3 - vertex -29.5608 -14.1906 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -30.3887 -14.5514 -3 - vertex -29.5608 -14.1906 -3 - vertex -30.8809 -15.6487 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -28.6031 -22.5277 -3 - vertex -30.8797 -22.6102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.5608 -14.1906 -3 - vertex -30.3887 -14.5514 -3 - vertex -30.2116 -14.321 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.7001 -21.2849 -3 - vertex -32.1593 -18.5412 -3 - vertex -30.8809 -15.6487 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.3019 -21.4299 -3 - vertex -30.8797 -22.6102 -3 - vertex -32.5249 -22.5543 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.8797 -22.6102 -3 - vertex -33.3019 -21.4299 -3 - vertex -32.1593 -18.5412 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.3295 -22.4108 -3 - vertex -33.3019 -21.4299 -3 - vertex -32.5249 -22.5543 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.3019 -21.4299 -3 - vertex -33.3295 -22.4108 -3 - vertex -33.5147 -22.0719 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.78621 -19.378 -3 - vertex -17.4456 -12.0833 -3 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -15.1553 -19.8912 -3 - vertex -17.9982 -20.7653 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -17.9982 -20.7653 -3 - vertex -18.4336 -21.0091 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -18.4336 -21.0091 -3 - vertex -18.7084 -21.5139 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -18.7084 -21.5139 -3 - vertex -18.7986 -22.0269 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.1553 -19.8912 -3 - vertex -19.3785 -17.1305 -3 - vertex -17.4456 -12.0833 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.33648 -34.384 -3 - vertex -3.99709 -33.5697 -3 - vertex -7.51249 -36.3769 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.33648 -34.384 -3 - vertex -7.51249 -36.3769 -3 - vertex -7.98605 -36.0592 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.99709 -33.5697 -3 - vertex -8.33648 -34.384 -3 - vertex -6.41168 -29.738 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.56822 -35.3052 -3 - vertex -7.98605 -36.0592 -3 - vertex -8.51129 -35.7129 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.98605 -36.0592 -3 - vertex -8.56822 -35.3052 -3 - vertex -8.33648 -34.384 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -8.78621 -19.378 -3 - vertex -11.7016 -19.4898 -3 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -8.78621 -19.378 -3 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -11.9141 -19.2259 -3 - vertex -12.3137 -19.1333 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.93765 11.491 -3 - vertex -10.6367 14.238 -3 - vertex -7.23385 14.4578 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -12.3137 -19.1333 -3 - vertex -15.1553 -19.8912 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.93765 11.491 -3 - vertex -13.7227 13.3517 -3 - vertex -10.6367 14.238 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.99153 10.6633 -3 - vertex -13.7227 13.3517 -3 - vertex -5.93765 11.491 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -17.7993 -11.4712 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -20.0298 12.0063 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -22.4428 11.7593 -3 - vertex -20.0298 12.0063 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.1868 -11.3523 -3 - vertex -22.4428 11.7593 -3 - vertex -17.7993 -11.4712 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.4428 11.7593 -3 - vertex -27.1868 -11.3523 -3 - vertex -25.7097 11.6586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.1868 -11.3523 -3 - vertex -28.6588 11.7129 -3 - vertex -25.7097 11.6586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -34.87 -11.3196 -3 - vertex -28.6588 11.7129 -3 - vertex -27.1868 -11.3523 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -28.6588 11.7129 -3 - vertex -34.87 -11.3196 -3 - vertex -30.1182 11.9311 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -36.1936 -11.4238 -3 - vertex -30.1182 11.9311 -3 - vertex -34.87 -11.3196 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -36.792 -11.6364 -3 - vertex -30.1182 11.9311 -3 - vertex -36.1936 -11.4238 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -30.1182 11.9311 -3 - vertex -36.792 -11.6364 -3 - vertex -30.3887 12.6783 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3887 12.6783 -3 - vertex -35.7552 21.6337 -3 - vertex -33.0651 20.3093 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.6991 23.0789 -3 - vertex -30.3887 12.6783 -3 - vertex -36.792 -11.6364 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.6991 23.0789 -3 - vertex -36.792 -11.6364 -3 - vertex -37.3951 -12.1929 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.1303 25.4589 -3 - vertex -37.3951 -12.1929 -3 - vertex -37.5366 -12.7854 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3887 12.6783 -3 - vertex -37.6991 23.0789 -3 - vertex -35.7552 21.6337 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -9.69161 -22.56 -3 - vertex -8.46819 -23.4267 -3 - vertex -8.72405 -24.8218 -3 - endloop - endfacet - facet normal -0 -0 -1 - outer loop - vertex -8.78909 -22.7249 -3 - vertex -8.46819 -23.4267 -3 - vertex -9.69161 -22.56 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -12.4124 -23.7203 -3 - vertex -8.72405 -24.8218 -3 - vertex -9.55184 -27.0667 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.46819 -23.4267 -3 - vertex -8.78909 -22.7249 -3 - vertex -8.55624 -22.9989 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -10.5461 -22.7271 -3 - vertex -9.69161 -22.56 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -11.3967 -23.0769 -3 - vertex -10.5461 -22.7271 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.3894 -29.1914 -3 - vertex -9.55184 -27.0667 -3 - vertex -11.5932 -32.143 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -11.5932 -32.143 -3 - vertex -12.3385 -33.8339 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -14.2216 -26.3227 -3 - vertex -13.7062 -25.2068 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -12.3385 -33.8339 -3 - vertex -13.0448 -35.0276 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -12.4124 -23.7203 -3 - vertex -11.3967 -23.0769 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -13.1427 -24.3848 -3 - vertex -9.55184 -27.0667 -3 - vertex -13.7062 -25.2068 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -14.3732 -35.9691 -3 - vertex -13.0448 -35.0276 -3 - vertex -13.7203 -35.7356 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -13.1427 -24.3848 -3 - vertex -12.4124 -23.7203 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -13.0448 -35.0276 -3 - vertex -14.3732 -35.9691 -3 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -14.3732 -35.9691 -3 - vertex -14.8949 -36.1495 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -15.3894 -29.1914 -3 - vertex -14.2216 -26.3227 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.5846 -36.2152 -3 - vertex -14.8949 -36.1495 -3 - vertex -15.4682 -36.5832 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.2226 -36.752 -3 - vertex -15.4682 -36.5832 -3 - vertex -15.9213 -37.1689 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.6989 -37.6188 -3 - vertex -15.9213 -37.1689 -3 - vertex -15.9433 -37.6764 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.5846 -36.2152 -3 - vertex -15.4682 -36.5832 -3 - vertex -16.2226 -36.752 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -14.8949 -36.1495 -3 - vertex -16.5846 -36.2152 -3 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -11.5932 -32.143 -3 - vertex -16.8281 -32.7116 -3 - vertex -15.3894 -29.1914 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7285 -35.3062 -3 - vertex -16.5846 -36.2152 -3 - vertex -17.3742 -35.9691 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.7285 -35.3062 -3 - vertex -17.3742 -35.9691 -3 - vertex -17.6987 -35.8223 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -16.5846 -36.2152 -3 - vertex -17.7285 -35.3062 -3 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.4076 -24.3815 -3 - vertex -23.4462 -30.738 -3 - vertex -23.655 -30.4649 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.4741 -26.9141 -3 - vertex -23.655 -30.4649 -3 - vertex -24.0819 -30.2475 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.28 -33.2523 -3 - vertex -24.4076 -24.3815 -3 - vertex -23.1278 -21.2395 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.4741 -26.9141 -3 - vertex -24.0819 -30.2475 -3 - vertex -24.4667 -30.1541 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.2338 -28.3696 -3 - vertex -24.4667 -30.1541 -3 - vertex -24.8569 -30.2998 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -23.655 -30.4649 -3 - vertex -25.4741 -26.9141 -3 - vertex -24.4076 -24.3815 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.4667 -30.1541 -3 - vertex -26.2338 -28.3696 -3 - vertex -25.4741 -26.9141 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.8752 -29.0336 -3 - vertex -24.8569 -30.2998 -3 - vertex -26.8283 -32.1012 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.8569 -30.2998 -3 - vertex -26.8752 -29.0336 -3 - vertex -26.2338 -28.3696 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.8283 -32.1012 -3 - vertex -27.5872 -29.1914 -3 - vertex -26.8752 -29.0336 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -26.8283 -32.1012 -3 - vertex -28.1878 -29.097 -3 - vertex -27.5872 -29.1914 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.0969 -33.8499 -3 - vertex -28.1878 -29.097 -3 - vertex -26.8283 -32.1012 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.2578 -34.4631 -3 - vertex -28.1878 -29.097 -3 - vertex -29.0969 -33.8499 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.3644 -34.8586 -3 - vertex -28.1878 -29.097 -3 - vertex -30.2578 -34.4631 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4824 -26.6225 -3 - vertex -28.1878 -29.097 -3 - vertex -31.3644 -34.8586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.1878 -29.097 -3 - vertex -32.142 -25.4759 -3 - vertex -28.5713 -25.7117 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.1878 -29.097 -3 - vertex -35.4824 -26.6225 -3 - vertex -32.142 -25.4759 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.4824 -26.6225 -3 - vertex -31.3644 -34.8586 -3 - vertex -35.0529 -35.0835 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -32.142 -25.4759 -3 - vertex -35.4824 -26.6225 -3 - vertex -34.9626 -25.4747 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -38.7331 -34.5543 -3 - vertex -35.0529 -35.0835 -3 - vertex -38.4261 -34.9619 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -35.0529 -35.0835 -3 - vertex -38.7331 -34.5543 -3 - vertex -35.4824 -26.6225 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.5713 -25.7117 -3 - vertex -27.9105 -26.2055 -3 - vertex -28.1838 -28.4809 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.9105 -26.2055 -3 - vertex -28.5713 -25.7117 -3 - vertex -28.1036 -25.8829 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.5713 -25.7117 -3 - vertex -28.1838 -28.4809 -3 - vertex -28.1878 -29.097 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.1208 19.5935 -3 - vertex -11.5389 20.1801 -3 - vertex -10.9412 20.0018 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -12.0133 18.8648 -3 - vertex -11.5389 20.1801 -3 - vertex -11.1208 19.5935 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -12.0133 18.8648 -3 - vertex -12.9783 20.2187 -3 - vertex -11.5389 20.1801 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.009 16.7116 -3 - vertex -12.9783 20.2187 -3 - vertex -12.0133 18.8648 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.009 16.7116 -3 - vertex -16.3196 19.9968 -3 - vertex -12.9783 20.2187 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.0754 15.711 -3 - vertex -16.3196 19.9968 -3 - vertex -15.009 16.7116 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.1789 19.4139 -3 - vertex -17.0754 15.711 -3 - vertex -19.733 14.7364 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.0754 15.711 -3 - vertex -20.1789 19.4139 -3 - vertex -16.3196 19.9968 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.3118 14.0374 -3 - vertex -20.1789 19.4139 -3 - vertex -19.733 14.7364 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.3118 14.0374 -3 - vertex -24.1572 19.0472 -3 - vertex -20.1789 19.4139 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.873 13.6003 -3 - vertex -24.1572 19.0472 -3 - vertex -22.3118 14.0374 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.5587 18.9414 -3 - vertex -24.873 13.6003 -3 - vertex -27.4778 13.4117 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.873 13.6003 -3 - vertex -27.5587 18.9414 -3 - vertex -24.1572 19.0472 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -27.4778 13.4117 -3 - vertex -29.687 19.1409 -3 - vertex -27.5587 18.9414 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.9412 13.2465 -3 - vertex -29.687 19.1409 -3 - vertex -27.4778 13.4117 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3118 13.0393 -3 - vertex -29.687 19.1409 -3 - vertex -29.9412 13.2465 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -33.0651 20.3093 -3 - vertex -30.3118 13.0393 -3 - vertex -30.3887 12.6783 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.3118 13.0393 -3 - vertex -33.0651 20.3093 -3 - vertex -29.687 19.1409 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.2859 -23.7121 -3 - vertex 36.104 -22.9178 -3 - vertex 36.3422 -23.0402 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 35.2001 -22.9271 -3 - vertex 36.2859 -23.7121 -3 - vertex 35.3305 -26.5156 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.2859 -23.7121 -3 - vertex 35.2001 -22.9271 -3 - vertex 36.104 -22.9178 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 35.3305 -26.5156 -3 - vertex 34.7441 -22.7166 -3 - vertex 35.2001 -22.9271 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.8275 -24.8188 -3 - vertex 34.7441 -22.7166 -3 - vertex 35.3305 -26.5156 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.8275 -24.8188 -3 - vertex 35.3305 -26.5156 -3 - vertex 33.8444 -30.1753 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 42.943 -20.2657 -3 - vertex 42.0238 -20.3507 -3 - vertex 42.1032 -19.4743 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 41.971 -20.8453 -3 - vertex 42.0238 -20.3507 -3 - vertex 42.943 -20.2657 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 42.0238 -20.3507 -3 - vertex 41.971 -20.8453 -3 - vertex 41.8981 -20.7296 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.9875 -20.1225 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.8425 -21.0531 -3 - vertex 47.9875 -20.1225 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.5305 -21.9981 -3 - vertex 47.8425 -21.0531 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 47.0957 -22.796 -3 - vertex 47.5305 -21.9981 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 46.5684 -23.4293 -3 - vertex 47.0957 -22.796 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.9939 -37.5705 -3 - vertex 46.5684 -23.4293 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 46.5684 -23.4293 -3 - vertex 37.9939 -37.5705 -3 - vertex 45.9792 -23.8802 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 38.113 -36.8464 -3 - vertex 45.9792 -23.8802 -3 - vertex 37.9939 -37.5705 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 45.9792 -23.8802 -3 - vertex 38.113 -36.8464 -3 - vertex 45.3585 -24.1311 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.9618 -36.3241 -3 - vertex 45.3585 -24.1311 -3 - vertex 38.113 -36.8464 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 38.2188 -29.6614 -3 - vertex 45.3585 -24.1311 -3 - vertex 37.9618 -36.3241 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 45.3585 -24.1311 -3 - vertex 38.2188 -29.6614 -3 - vertex 44.7368 -24.1643 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 40.5923 -24.6171 -3 - vertex 44.1445 -23.9621 -3 - vertex 40.0289 -25.46 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 41.2986 -23.9223 -3 - vertex 44.1445 -23.9621 -3 - vertex 40.5923 -24.6171 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 44.1445 -23.9621 -3 - vertex 41.2986 -23.9223 -3 - vertex 43.6122 -23.5069 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 43.6122 -23.5069 -3 - vertex 41.2986 -23.9223 -3 - vertex 42.7682 -22.851 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 44.7368 -24.1643 -3 - vertex 40.0289 -25.46 -3 - vertex 44.1445 -23.9621 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 37.381 -37.9628 -3 - vertex 37.9939 -37.5705 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 35.8907 -38.1241 -3 - vertex 37.381 -37.9628 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 33.1396 -38.1555 -3 - vertex 35.8907 -38.1241 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 29.8074 -38.0948 -3 - vertex 33.1396 -38.1555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 20.3084 -38.5182 -3 - vertex 29.8074 -38.0948 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.553 -36.8405 -3 - vertex 25.9895 -35.834 -3 - vertex 27.8442 -34.1555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.0601 -37.0678 -3 - vertex 28.4102 -37.3704 -3 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 21.4079 -38.2833 -3 - vertex 29.8074 -38.0948 -3 - vertex 20.3084 -38.5182 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 28.4102 -37.3704 -3 - vertex 24.0601 -37.0678 -3 - vertex 25.9895 -35.834 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 28.6431 -37.8931 -3 - vertex 21.4079 -38.2833 -3 - vertex 24.0601 -37.0678 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 29.8074 -38.0948 -3 - vertex 21.4079 -38.2833 -3 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex 19.0956 -38.5852 -3 - vertex 20.3084 -38.5182 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.33583 -38.4712 -3 - vertex 19.0956 -38.5852 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 19.0956 -38.5852 -3 - vertex 5.33583 -38.4712 -3 - vertex 17.8945 -38.4707 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 17.8945 -38.4707 -3 - vertex 5.33583 -38.4712 -3 - vertex 16.8412 -38.0675 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.1385 -34.7994 -3 - vertex 14.6656 -34.4466 -3 - vertex 12.2351 -35.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.8379 -35.6738 -3 - vertex 12.2351 -35.1874 -3 - vertex 14.6656 -34.4466 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.1379 -35.6584 -3 - vertex 14.8379 -35.6738 -3 - vertex 15.2376 -36.6526 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.1962 -36.5595 -3 - vertex 15.2376 -36.6526 -3 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 8.47177 -37.477 -3 - vertex 16.8412 -38.0675 -3 - vertex 5.33583 -38.4712 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 14.8379 -35.6738 -3 - vertex 12.1379 -35.6584 -3 - vertex 12.2351 -35.1874 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.2376 -36.6526 -3 - vertex 11.7916 -36.1064 -3 - vertex 12.1379 -35.6584 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.2376 -36.6526 -3 - vertex 11.1962 -36.5595 -3 - vertex 11.7916 -36.1064 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.8953 -37.4336 -3 - vertex 10.519 -36.9119 -3 - vertex 11.1962 -36.5595 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 10.519 -36.9119 -3 - vertex 16.8412 -38.0675 -3 - vertex 9.92719 -37.0575 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 16.8412 -38.0675 -3 - vertex 10.519 -36.9119 -3 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 9.92719 -37.0575 -3 - vertex 16.8412 -38.0675 -3 - vertex 8.47177 -37.477 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.962702 -38.4962 -3 - vertex 5.33583 -38.4712 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.73542 -37.8041 -3 - vertex 3.43985 -37.8545 -3 - vertex 4.64415 -37.2809 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.84381 -38.3343 -3 - vertex 3.43985 -37.8545 -3 - vertex 4.73542 -37.8041 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 2.31266 -38.26 -3 - vertex 5.33583 -38.4712 -3 - vertex 0.962702 -38.4962 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.84381 -38.3343 -3 - vertex 2.31266 -38.26 -3 - vertex 3.43985 -37.8545 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.33583 -38.4712 -3 - vertex 2.31266 -38.26 -3 - vertex 4.84381 -38.3343 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 117.5 -117.5 -3 - vertex -0.366978 -38.538 -3 - vertex 0.962702 -38.4962 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 -117.5 -3 - vertex -0.366978 -38.538 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -12.0013 -38.1555 -3 - vertex -0.366978 -38.538 -3 - vertex -117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.14673 -30.0798 -3 - vertex -6.41168 -29.738 -3 - vertex -4.26405 -24.3543 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.51249 -36.3769 -3 - vertex -3.80393 -35.193 -3 - vertex -7.31439 -36.7536 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.31439 -36.7536 -3 - vertex -3.80393 -35.193 -3 - vertex -3.26834 -36.6145 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -3.80393 -35.193 -3 - vertex -7.51249 -36.3769 -3 - vertex -3.99709 -33.5697 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.3919 -37.1883 -3 - vertex -3.26834 -36.6145 -3 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -8.07933 -37.9462 -3 - vertex -1.43333 -38.36 -3 - vertex -8.66873 -38.0883 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.26834 -36.6145 -3 - vertex -7.3919 -37.1883 -3 - vertex -7.31439 -36.7536 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.45619 -37.7112 -3 - vertex -7.74517 -37.6801 -3 - vertex -7.3919 -37.1883 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -2.45619 -37.7112 -3 - vertex -8.07933 -37.9462 -3 - vertex -7.74517 -37.6801 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.43333 -38.36 -3 - vertex -8.07933 -37.9462 -3 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -8.66873 -38.0883 -3 - vertex -0.366978 -38.538 -3 - vertex -12.0013 -38.1555 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.366978 -38.538 -3 - vertex -8.66873 -38.0883 -3 - vertex -1.43333 -38.36 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -12.0013 -38.1555 -3 - vertex -117.5 -117.5 -3 - vertex -15.3277 -38.0928 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -15.9213 -37.1689 -3 - vertex -16.6989 -37.6188 -3 - vertex -16.2226 -36.752 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.7983 -37.9502 -3 - vertex -16.6989 -37.6188 -3 - vertex -15.9433 -37.6764 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -17.5781 -38.0841 -3 - vertex -15.3277 -38.0928 -3 - vertex -117.5 -117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.7983 -37.9502 -3 - vertex -17.033 -37.9274 -3 - vertex -16.6989 -37.6188 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -15.7983 -37.9502 -3 - vertex -17.5781 -38.0841 -3 - vertex -17.033 -37.9274 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.3277 -38.0928 -3 - vertex -17.5781 -38.0841 -3 - vertex -15.7983 -37.9502 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -17.5781 -38.0841 -3 - vertex -117.5 -117.5 -3 - vertex -20.8226 -38.1301 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -25.0608 -37.8416 -3 - vertex -27.2791 -36.8782 -3 - vertex -25.157 -37.5754 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -25.0608 -37.8416 -3 - vertex -24.8096 -38.0047 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -20.8226 -38.1301 -3 - vertex -117.5 -117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -25.0608 -37.8416 -3 - vertex -28.2835 -38.1638 -3 - vertex -27.2791 -36.8782 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -20.8226 -38.1301 -3 - vertex -28.2835 -38.1638 -3 - vertex -24.8096 -38.0047 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -117.5 -117.5 -3 - vertex -37.632 -38.1325 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -47.8161 -37.7712 -3 - vertex -117.5 -117.5 -3 - vertex -47.9875 -37.5097 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -47.4646 -37.9547 -3 - vertex -117.5 -117.5 -3 - vertex -47.8161 -37.7712 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -37.632 -38.1325 -3 - vertex -117.5 -117.5 -3 - vertex -47.4646 -37.9547 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.7267 -19.5813 -3 - vertex 117.5 117.5 -3 - vertex 47.9875 -20.1225 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.5422 14.7505 -3 - vertex 47.7267 -19.5813 -3 - vertex 47.2139 -19.2263 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 47.2139 -19.2263 -3 - vertex 46.2623 -19.1343 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 41.5319 -19.1343 -3 - vertex 46.2623 -19.1343 -3 - vertex 44.5909 -19.3768 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 42.1032 -19.4743 -3 - vertex 44.5909 -19.3768 -3 - vertex 42.943 -20.2657 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 44.5909 -19.3768 -3 - vertex 42.1032 -19.4743 -3 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 41.5319 -19.1343 -3 - vertex 44.5909 -19.3768 -3 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 46.2623 -19.1343 -3 - vertex 41.5319 -19.1343 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 29.9429 -19.4981 -3 - vertex 41.5319 -19.1343 -3 - vertex 38.4798 -20.1181 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.7248 -19.9631 -3 - vertex 38.4798 -20.1181 -3 - vertex 35.5661 -21.102 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.7248 -19.9631 -3 - vertex 35.5661 -21.102 -3 - vertex 35.2187 -21.2043 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.3699 -20.64 -3 - vertex 35.2187 -21.2043 -3 - vertex 34.9156 -21.474 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 30.2029 -31.1764 -3 - vertex 33.8444 -30.1753 -3 - vertex 32.5255 -33.371 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 34.7441 -22.7166 -3 - vertex 32.0255 -23.3848 -3 - vertex 34.62 -22.2927 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 32.0232 -22.2828 -3 - vertex 34.62 -22.2927 -3 - vertex 32.0255 -23.3848 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.8086 -21.404 -3 - vertex 34.62 -22.2927 -3 - vertex 32.0232 -22.2828 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 34.62 -22.2927 -3 - vertex 31.8086 -21.404 -3 - vertex 34.9156 -21.474 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 31.3699 -20.64 -3 - vertex 34.9156 -21.474 -3 - vertex 31.8086 -21.404 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 35.2187 -21.2043 -3 - vertex 31.3699 -20.64 -3 - vertex 30.7248 -19.9631 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 38.4798 -20.1181 -3 - vertex 30.7248 -19.9631 -3 - vertex 29.9429 -19.4981 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 41.5319 -19.1343 -3 - vertex 29.9429 -19.4981 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.528 9.70386 -3 - vertex 29.9429 -19.4981 -3 - vertex 28.989 -19.2301 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.7235 1.18648 -3 - vertex 28.989 -19.2301 -3 - vertex 27.8281 -19.1444 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.2139 -19.2263 -3 - vertex 27.6094 12.2412 -3 - vertex 27.5422 14.7505 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 47.7267 -19.5813 -3 - vertex 27.5422 14.7505 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.4742 18.624 -3 - vertex 27.5422 14.7505 -3 - vertex 27.1755 15.8473 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.4742 18.624 -3 - vertex 27.1755 15.8473 -3 - vertex 26.6933 17.4601 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.5422 14.7505 -3 - vertex 26.4742 18.624 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9424 19.4837 -3 - vertex 117.5 117.5 -3 - vertex 26.4742 18.624 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.8319 23.6658 -3 - vertex 25.9424 19.4837 -3 - vertex 25.0752 20.0627 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.0827 22.427 -3 - vertex 25.0752 20.0627 -3 - vertex 23.8499 20.3844 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.2698 21.5943 -3 - vertex 23.8499 20.3844 -3 - vertex 23.1387 20.59 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 22.2698 21.5943 -3 - vertex 23.1387 20.59 -3 - vertex 22.6169 20.9877 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 23.8499 20.3844 -3 - vertex 22.2698 21.5943 -3 - vertex 22.0827 22.427 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.0752 20.0627 -3 - vertex 22.0827 22.427 -3 - vertex 21.8319 23.6658 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9424 19.4837 -3 - vertex 21.8319 23.6658 -3 - vertex 21.2755 24.568 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 25.9424 19.4837 -3 - vertex 21.2755 24.568 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 21.2755 24.568 -3 - vertex 20.1819 25.3734 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.4783 29.8698 -3 - vertex 20.1819 25.3734 -3 - vertex 18.3193 26.3216 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.4783 29.8698 -3 - vertex 18.3193 26.3216 -3 - vertex 17.0772 26.9817 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.6084 29.1601 -3 - vertex 17.0772 26.9817 -3 - vertex 16.2688 27.6146 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.6084 29.1601 -3 - vertex 16.2688 27.6146 -3 - vertex 15.808 28.3106 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 17.0772 26.9817 -3 - vertex 15.6084 29.1601 -3 - vertex 15.4783 29.8698 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 20.1819 25.3734 -3 - vertex 15.4783 29.8698 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 21.2755 24.568 -3 - vertex 15.3134 30.0845 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.0123 26.7794 -3 - vertex 15.122 28.0941 -3 - vertex 12.5486 25.9653 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 11.8052 27.5343 -3 - vertex 15.122 28.0941 -3 - vertex 12.0123 26.7794 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.0577 29.0611 -3 - vertex 12.2907 30.5214 -3 - vertex 15.1584 29.8123 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.1584 29.8123 -3 - vertex 12.2907 30.5214 -3 - vertex 15.3134 30.0845 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 12.0544 30.7144 -3 - vertex 15.3134 30.0845 -3 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 12.0544 30.7144 -3 - vertex 5.25321 38.4452 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.19939 38.083 -3 - vertex 12.0544 30.7144 -3 - vertex 11.5971 30.3591 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.51885 25.3107 -3 - vertex 11.5037 26.4501 -3 - vertex 9.07032 24.476 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 11.5037 26.4501 -3 - vertex 8.51885 25.3107 -3 - vertex 11.1066 27.3577 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.91411 25.7528 -3 - vertex 11.1066 27.3577 -3 - vertex 8.51885 25.3107 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 11.1066 27.3577 -3 - vertex 7.91411 25.7528 -3 - vertex 11.0411 28.3898 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.11433 25.9588 -3 - vertex 11.0411 28.3898 -3 - vertex 7.91411 25.7528 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.72413 26.6445 -3 - vertex 11.0411 28.3898 -3 - vertex 7.11433 25.9588 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 11.0411 28.3898 -3 - vertex 5.72413 26.6445 -3 - vertex 11.2319 29.4873 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.72413 26.6445 -3 - vertex 7.11433 25.9588 -3 - vertex 6.4022 26.1795 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 4.3138 28.4461 -3 - vertex 11.2319 29.4873 -3 - vertex 5.72413 26.6445 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.57109 31.3388 -3 - vertex 11.2319 29.4873 -3 - vertex 4.3138 28.4461 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 5.25321 38.4452 -3 - vertex 5.15152 38.5852 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 15.3134 30.0845 -3 - vertex 5.15152 38.5852 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.115935 27.2162 -3 - vertex 1.04836 28.6106 -3 - vertex 0.858783 27.1101 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -0.786632 27.5359 -3 - vertex 1.04836 28.6106 -3 - vertex -0.115935 27.2162 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -1.46161 28.0795 -3 - vertex 1.04836 28.6106 -3 - vertex -0.786632 27.5359 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.04836 28.6106 -3 - vertex -1.46161 28.0795 -3 - vertex 1.1273 29.8907 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -2.77953 29.7664 -3 - vertex 1.1273 29.8907 -3 - vertex -1.46161 28.0795 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 1.1273 29.8907 -3 - vertex -2.77953 29.7664 -3 - vertex 1.37489 31.173 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -3.97987 32.1322 -3 - vertex 1.37489 31.173 -3 - vertex -2.77953 29.7664 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.37489 31.173 -3 - vertex -3.97987 32.1322 -3 - vertex 2.44067 33.9939 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -4.97284 35.0324 -3 - vertex 2.44067 33.9939 -3 - vertex -3.97987 32.1322 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.55994 36.5001 -3 - vertex 2.44067 33.9939 -3 - vertex -4.97284 35.0324 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 2.44067 33.9939 -3 - vertex -5.55994 36.5001 -3 - vertex 4.08079 37.0842 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 4.08079 37.0842 -3 - vertex -5.55994 36.5001 -3 - vertex 5.15152 38.5852 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -5.8163 36.5812 -3 - vertex 5.15152 38.5852 -3 - vertex -5.55994 36.5001 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 117.5 -3 - vertex 5.15152 38.5852 -3 - vertex -5.8163 36.5812 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.25507 27.2437 -3 - vertex -6.28322 28.2565 -3 - vertex -6.38329 27.6173 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -6.28322 28.2565 -3 - vertex -8.80952 27.3973 -3 - vertex -6.22131 31.7226 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -7.25507 27.2437 -3 - vertex -6.38329 27.6173 -3 - vertex -6.55612 27.3597 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -6.28322 28.2565 -3 - vertex -7.25507 27.2437 -3 - vertex -8.80952 27.3973 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -11.546 27.7352 -3 - vertex -6.22131 31.7226 -3 - vertex -8.80952 27.3973 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -6.22131 31.7226 -3 - vertex -11.546 27.7352 -3 - vertex -6.055 36.2349 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -13.5562 27.8374 -3 - vertex -6.055 36.2349 -3 - vertex -11.546 27.7352 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -15.2376 27.7001 -3 - vertex -6.055 36.2349 -3 - vertex -13.5562 27.8374 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.8096 27.6578 -3 - vertex -6.055 36.2349 -3 - vertex -15.2376 27.7001 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.8096 27.6578 -3 - vertex -15.2376 27.7001 -3 - vertex -16.9875 27.3196 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.9485 27.2141 -3 - vertex -16.9875 27.3196 -3 - vertex -19.335 26.703 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.8096 27.6578 -3 - vertex -16.9875 27.3196 -3 - vertex -19.9485 27.2141 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.4093 27.9007 -3 - vertex -6.055 36.2349 -3 - vertex -20.8096 27.6578 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -6.055 36.2349 -3 - vertex -22.4093 27.9007 -3 - vertex -5.8163 36.5812 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.3632 27.9554 -3 - vertex -5.8163 36.5812 -3 - vertex -22.4093 27.9007 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -30.666 27.4912 -3 - vertex -5.8163 36.5812 -3 - vertex -24.3632 27.9554 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -24.3225 27.6757 -3 - vertex -27.4214 26.3653 -3 - vertex -24.3632 27.9554 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -29.2879 26.9865 -3 - vertex -24.3632 27.9554 -3 - vertex -27.4214 26.3653 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -24.3632 27.9554 -3 - vertex -29.2879 26.9865 -3 - vertex -30.666 27.4912 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -31.2177 27.4629 -3 - vertex -5.8163 36.5812 -3 - vertex -30.666 27.4912 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -5.8163 36.5812 -3 - vertex -31.2177 27.4629 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.2773 24.779 -3 - vertex -34.2108 23.023 -3 - vertex -31.2912 27.2229 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -36.1697 23.9798 -3 - vertex -31.2912 27.2229 -3 - vertex -34.2108 23.023 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.7877 25.1404 -3 - vertex -31.2912 27.2229 -3 - vertex -36.1697 23.9798 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.2912 27.2229 -3 - vertex -37.7877 25.1404 -3 - vertex -31.2177 27.4629 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -38.5782 25.7376 -3 - vertex -31.2177 27.4629 -3 - vertex -37.7877 25.1404 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.0347 25.8392 -3 - vertex -31.2177 27.4629 -3 - vertex -38.5782 25.7376 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -31.2177 27.4629 -3 - vertex -39.0347 25.8392 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -39.9072 -25.4747 -3 - vertex -42.237 -30.9405 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -42.237 -30.9405 -3 - vertex -43.2543 -33.2915 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -46.1801 -35.8499 -3 - vertex -43.2543 -33.2915 -3 - vertex -44.1198 -34.7306 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -46.1801 -35.8499 -3 - vertex -44.1198 -34.7306 -3 - vertex -45.0296 -35.5019 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -43.2543 -33.2915 -3 - vertex -46.1801 -35.8499 -3 - vertex -47.2102 -36.2359 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -37.5366 -12.7854 -3 - vertex -47.2102 -36.2359 -3 - vertex -47.8577 -36.863 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -37.5366 -12.7854 -3 - vertex -47.8577 -36.863 -3 - vertex -39.1303 25.4589 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -117.5 -117.5 -3 - vertex -47.8577 -36.863 -3 - vertex -47.9875 -37.5097 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -47.8577 -36.863 -3 - vertex -117.5 -117.5 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -47.8577 -36.863 -3 - vertex -117.5 117.5 -3 - vertex -39.1303 25.4589 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 5.15152 38.5852 -3 - vertex -117.5 117.5 -3 - vertex 117.5 117.5 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -39.1303 25.4589 -3 - vertex -117.5 117.5 -3 - vertex -39.0347 25.8392 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 40.0289 -25.46 -3 - vertex 44.7368 -24.1643 -3 - vertex 38.2188 -29.6614 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.8272 -33.2656 -3 - vertex 37.9618 -36.3241 -3 - vertex 37.1913 -36.0604 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.9618 -36.3241 -3 - vertex 36.8272 -33.2656 -3 - vertex 38.2188 -29.6614 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 36.2918 -35.0946 -3 - vertex 37.1913 -36.0604 -3 - vertex 36.3972 -35.7834 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 37.1913 -36.0604 -3 - vertex 36.2918 -35.0946 -3 - vertex 36.8272 -33.2656 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.72145 16.1788 -3 - vertex 9.76373 17.1908 -3 - vertex 10.4258 16.5104 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.86535 15.8492 -3 - vertex 9.76373 17.1908 -3 - vertex 9.72145 16.1788 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.028 17.0592 -3 - vertex 9.76373 17.1908 -3 - vertex 8.86535 15.8492 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex 9.76373 17.1908 -3 - vertex 8.028 17.0592 -3 - vertex 8.30319 18.4459 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.15178 18.7442 -3 - vertex 8.30319 18.4459 -3 - vertex 8.028 17.0592 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 8.30319 18.4459 -3 - vertex 7.15178 18.7442 -3 - vertex 7.1994 19.1268 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -10.5829 24.4 -3 - vertex -11.2742 24.7069 -3 - vertex -10.6709 24.5009 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -14.1729 23.8467 -3 - vertex -11.2742 24.7069 -3 - vertex -10.5829 24.4 -3 - endloop - endfacet - facet normal -0 0 -1 - outer loop - vertex -11.2742 24.7069 -3 - vertex -14.1729 23.8467 -3 - vertex -13.9393 24.99 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -14.1729 23.8467 -3 - vertex -16.6107 24.7853 -3 - vertex -13.9393 24.99 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3275 23.0662 -3 - vertex -16.6107 24.7853 -3 - vertex -14.1729 23.8467 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -19.3275 23.0662 -3 - vertex -20.4324 24.2101 -3 - vertex -16.6107 24.7853 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -21.5591 22.7309 -3 - vertex -20.4324 24.2101 -3 - vertex -19.3275 23.0662 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.0432 22.8497 -3 - vertex -20.4324 24.2101 -3 - vertex -21.5591 22.7309 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -22.6641 23.2546 -3 - vertex -20.4324 24.2101 -3 - vertex -22.0432 22.8497 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex -20.4324 24.2101 -3 - vertex -22.6641 23.2546 -3 - vertex -23.3809 23.8604 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 27.3613 -24.0204 -3 - vertex 27.2283 -24.8188 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 26.0804 -21.8157 -3 - vertex 27.3613 -24.0204 -3 - vertex 24.4233 -24.8188 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.3668 -22.8574 -3 - vertex 26.0804 -21.8157 -3 - vertex 26.9354 -22.1189 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 27.3613 -24.0204 -3 - vertex 26.0804 -21.8157 -3 - vertex 27.3668 -22.8574 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 26.0804 -21.8157 -3 - vertex 24.4233 -24.8188 -3 - vertex 24.8153 -21.9586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 23.7526 -22.3987 -3 - vertex 24.8153 -21.9586 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 22.6861 -23.3258 -3 - vertex 23.7526 -22.3987 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 22.6861 -23.3258 -3 - vertex 24.4233 -24.8188 -3 - vertex 21.6183 -24.6221 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.70773 -21.5983 -3 - vertex 10.169 -23.3758 -3 - vertex 10.0775 -24.2416 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.85097 -21.9079 -3 - vertex 10.0775 -24.2416 -3 - vertex 9.7411 -25.4359 -3 - endloop - endfacet - facet normal 0 -0 -1 - outer loop - vertex 8.49325 -21.5121 -3 - vertex 10.169 -23.3758 -3 - vertex 7.70773 -21.5983 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.169 -23.3758 -3 - vertex 8.49325 -21.5121 -3 - vertex 10.0454 -22.5812 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.0454 -22.5812 -3 - vertex 9.16984 -21.6481 -3 - vertex 9.69979 -22.0048 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.84714 -24.6213 -3 - vertex 9.7411 -25.4359 -3 - vertex 7.96204 -29.9101 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 10.0775 -24.2416 -3 - vertex 6.85097 -21.9079 -3 - vertex 7.70773 -21.5983 -3 - endloop - endfacet - facet normal -0 -0 -1 - outer loop - vertex 9.16984 -21.6481 -3 - vertex 10.0454 -22.5812 -3 - vertex 8.49325 -21.5121 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.3456 -29.5107 -3 - vertex 7.96204 -29.9101 -3 - vertex 6.30534 -33.4759 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 5.96068 -22.4422 -3 - vertex 6.85097 -21.9079 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 6.30534 -33.4759 -3 - vertex 5.71313 -34.2297 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 5.07455 -23.2024 -3 - vertex 5.96068 -22.4422 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 5.71313 -34.2297 -3 - vertex 5.04571 -34.678 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 5.04571 -34.678 -3 - vertex 4.11511 -35.011 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 3.84714 -24.6213 -3 - vertex 5.07455 -23.2024 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 4.11511 -35.011 -3 - vertex 3.17687 -35.0966 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 2.80055 -26.1986 -3 - vertex 3.84714 -24.6213 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.11766 -33.6813 -3 - vertex 3.17687 -35.0966 -3 - vertex 2.32628 -34.9386 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 1.95873 -27.8549 -3 - vertex 2.80055 -26.1986 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 1.11766 -33.6813 -3 - vertex 2.32628 -34.9386 -3 - vertex 1.65861 -34.5411 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 1.3456 -29.5107 -3 - vertex 1.95873 -27.8549 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 3.17687 -35.0966 -3 - vertex 1.11766 -33.6813 -3 - vertex 0.901133 -32.5034 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.30534 -33.4759 -3 - vertex 0.985088 -31.0867 -3 - vertex 1.3456 -29.5107 -3 - endloop - endfacet - facet normal 0 0 -1 - outer loop - vertex 6.30534 -33.4759 -3 - vertex 0.901133 -32.5034 -3 - vertex 0.985088 -31.0867 -3 - endloop - endfacet - facet normal -0.929682 -0.368364 0 - outer loop - vertex 19.6777 -11.13 -3 - vertex 19.5452 -10.7956 0 - vertex 19.5452 -10.7956 -3 - endloop - endfacet - facet normal -0.929682 -0.368364 0 - outer loop - vertex 19.5452 -10.7956 0 - vertex 19.6777 -11.13 -3 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal -0.933646 0.358197 0 - outer loop - vertex 17.1521 -17.7131 -3 - vertex 19.6777 -11.13 0 - vertex 19.6777 -11.13 -3 - endloop - endfacet - facet normal -0.933646 0.358197 0 - outer loop - vertex 19.6777 -11.13 0 - vertex 17.1521 -17.7131 -3 - vertex 17.1521 -17.7131 0 - endloop - endfacet - facet normal -0.922106 0.386938 0 - outer loop - vertex 14.5835 -23.8342 -3 - vertex 17.1521 -17.7131 0 - vertex 17.1521 -17.7131 -3 - endloop - endfacet - facet normal -0.922106 0.386938 0 - outer loop - vertex 17.1521 -17.7131 0 - vertex 14.5835 -23.8342 -3 - vertex 14.5835 -23.8342 0 - endloop - endfacet - facet normal -0.926605 0.376035 0 - outer loop - vertex 11.4887 -31.4602 -3 - vertex 14.5835 -23.8342 0 - vertex 14.5835 -23.8342 -3 - endloop - endfacet - facet normal -0.926605 0.376035 0 - outer loop - vertex 14.5835 -23.8342 0 - vertex 11.4887 -31.4602 -3 - vertex 11.4887 -31.4602 0 - endloop - endfacet - facet normal -0.942271 0.334852 0 - outer loop - vertex 10.915 -33.0747 -3 - vertex 11.4887 -31.4602 0 - vertex 11.4887 -31.4602 -3 - endloop - endfacet - facet normal -0.942271 0.334852 0 - outer loop - vertex 11.4887 -31.4602 0 - vertex 10.915 -33.0747 -3 - vertex 10.915 -33.0747 0 - endloop - endfacet - facet normal -0.976917 0.213621 0 - outer loop - vertex 10.7197 -33.9677 -3 - vertex 10.915 -33.0747 0 - vertex 10.915 -33.0747 -3 - endloop - endfacet - facet normal -0.976917 0.213621 0 - outer loop - vertex 10.915 -33.0747 0 - vertex 10.7197 -33.9677 -3 - vertex 10.7197 -33.9677 0 - endloop - endfacet - facet normal -0.904266 -0.42697 0 - outer loop - vertex 10.9006 -34.3507 -3 - vertex 10.7197 -33.9677 0 - vertex 10.7197 -33.9677 -3 - endloop - endfacet - facet normal -0.904266 -0.42697 0 - outer loop - vertex 10.7197 -33.9677 0 - vertex 10.9006 -34.3507 -3 - vertex 10.9006 -34.3507 0 - endloop - endfacet - facet normal -0.15089 -0.988551 0 - outer loop - vertex 10.9006 -34.3507 -3 - vertex 11.4551 -34.4353 0 - vertex 10.9006 -34.3507 0 - endloop - endfacet - facet normal -0.15089 -0.988551 -0 - outer loop - vertex 11.4551 -34.4353 0 - vertex 10.9006 -34.3507 -3 - vertex 11.4551 -34.4353 -3 - endloop - endfacet - facet normal -0.233297 -0.972406 0 - outer loop - vertex 11.4551 -34.4353 -3 - vertex 11.871 -34.5351 0 - vertex 11.4551 -34.4353 0 - endloop - endfacet - facet normal -0.233297 -0.972406 -0 - outer loop - vertex 11.871 -34.5351 0 - vertex 11.4551 -34.4353 -3 - vertex 11.871 -34.5351 -3 - endloop - endfacet - facet normal -0.702731 -0.711456 0 - outer loop - vertex 11.871 -34.5351 -3 - vertex 12.1385 -34.7994 0 - vertex 11.871 -34.5351 0 - endloop - endfacet - facet normal -0.702731 -0.711456 -0 - outer loop - vertex 12.1385 -34.7994 0 - vertex 11.871 -34.5351 -3 - vertex 12.1385 -34.7994 -3 - endloop - endfacet - facet normal -0.970405 -0.241485 0 - outer loop - vertex 12.2351 -35.1874 -3 - vertex 12.1385 -34.7994 0 - vertex 12.1385 -34.7994 -3 - endloop - endfacet - facet normal -0.970405 -0.241485 0 - outer loop - vertex 12.1385 -34.7994 0 - vertex 12.2351 -35.1874 -3 - vertex 12.2351 -35.1874 0 - endloop - endfacet - facet normal -0.979345 0.202199 0 - outer loop - vertex 12.1379 -35.6584 -3 - vertex 12.2351 -35.1874 0 - vertex 12.2351 -35.1874 -3 - endloop - endfacet - facet normal -0.979345 0.202199 0 - outer loop - vertex 12.2351 -35.1874 0 - vertex 12.1379 -35.6584 -3 - vertex 12.1379 -35.6584 0 - endloop - endfacet - facet normal -0.791253 0.611489 0 - outer loop - vertex 11.7916 -36.1064 -3 - vertex 12.1379 -35.6584 0 - vertex 12.1379 -35.6584 -3 - endloop - endfacet - facet normal -0.791253 0.611489 0 - outer loop - vertex 12.1379 -35.6584 0 - vertex 11.7916 -36.1064 -3 - vertex 11.7916 -36.1064 0 - endloop - endfacet - facet normal -0.605591 0.795776 0 - outer loop - vertex 11.7916 -36.1064 -3 - vertex 11.1962 -36.5595 0 - vertex 11.7916 -36.1064 0 - endloop - endfacet - facet normal -0.605591 0.795776 0 - outer loop - vertex 11.1962 -36.5595 0 - vertex 11.7916 -36.1064 -3 - vertex 11.1962 -36.5595 -3 - endloop - endfacet - facet normal -0.461492 0.887144 0 - outer loop - vertex 11.1962 -36.5595 -3 - vertex 10.519 -36.9119 0 - vertex 11.1962 -36.5595 0 - endloop - endfacet - facet normal -0.461492 0.887144 0 - outer loop - vertex 10.519 -36.9119 0 - vertex 11.1962 -36.5595 -3 - vertex 10.519 -36.9119 -3 - endloop - endfacet - facet normal -0.238946 0.971033 0 - outer loop - vertex 10.519 -36.9119 -3 - vertex 9.92719 -37.0575 0 - vertex 10.519 -36.9119 0 - endloop - endfacet - facet normal -0.238946 0.971033 0 - outer loop - vertex 9.92719 -37.0575 0 - vertex 10.519 -36.9119 -3 - vertex 9.92719 -37.0575 -3 - endloop - endfacet - facet normal -0.276943 0.960886 0 - outer loop - vertex 9.92719 -37.0575 -3 - vertex 8.47177 -37.477 0 - vertex 9.92719 -37.0575 0 - endloop - endfacet - facet normal -0.276943 0.960886 0 - outer loop - vertex 8.47177 -37.477 0 - vertex 9.92719 -37.0575 -3 - vertex 8.47177 -37.477 -3 - endloop - endfacet - facet normal -0.302213 0.95324 0 - outer loop - vertex 8.47177 -37.477 -3 - vertex 5.33583 -38.4712 0 - vertex 8.47177 -37.477 0 - endloop - endfacet - facet normal -0.302213 0.95324 0 - outer loop - vertex 5.33583 -38.4712 0 - vertex 8.47177 -37.477 -3 - vertex 5.33583 -38.4712 -3 - endloop - endfacet - facet normal 0.267926 0.96344 -0 - outer loop - vertex 5.33583 -38.4712 -3 - vertex 4.84381 -38.3343 0 - vertex 5.33583 -38.4712 0 - endloop - endfacet - facet normal 0.267926 0.96344 0 - outer loop - vertex 4.84381 -38.3343 0 - vertex 5.33583 -38.4712 -3 - vertex 4.84381 -38.3343 -3 - endloop - endfacet - facet normal 0.979739 0.200279 0 - outer loop - vertex 4.84381 -38.3343 0 - vertex 4.73542 -37.8041 -3 - vertex 4.73542 -37.8041 0 - endloop - endfacet - facet normal 0.979739 0.200279 0 - outer loop - vertex 4.73542 -37.8041 -3 - vertex 4.84381 -38.3343 0 - vertex 4.84381 -38.3343 -3 - endloop - endfacet - facet normal 0.985121 0.171864 0 - outer loop - vertex 4.73542 -37.8041 0 - vertex 4.64415 -37.2809 -3 - vertex 4.64415 -37.2809 0 - endloop - endfacet - facet normal 0.985121 0.171864 0 - outer loop - vertex 4.64415 -37.2809 -3 - vertex 4.73542 -37.8041 0 - vertex 4.73542 -37.8041 -3 - endloop - endfacet - facet normal -0.43 0.902829 0 - outer loop - vertex 4.64415 -37.2809 -3 - vertex 3.43985 -37.8545 0 - vertex 4.64415 -37.2809 0 - endloop - endfacet - facet normal -0.43 0.902829 0 - outer loop - vertex 3.43985 -37.8545 0 - vertex 4.64415 -37.2809 -3 - vertex 3.43985 -37.8545 -3 - endloop - endfacet - facet normal -0.338512 0.940962 0 - outer loop - vertex 3.43985 -37.8545 -3 - vertex 2.31266 -38.26 0 - vertex 3.43985 -37.8545 0 - endloop - endfacet - facet normal -0.338512 0.940962 0 - outer loop - vertex 2.31266 -38.26 0 - vertex 3.43985 -37.8545 -3 - vertex 2.31266 -38.26 -3 - endloop - endfacet - facet normal -0.172368 0.985033 0 - outer loop - vertex 2.31266 -38.26 -3 - vertex 0.962702 -38.4962 0 - vertex 2.31266 -38.26 0 - endloop - endfacet - facet normal -0.172368 0.985033 0 - outer loop - vertex 0.962702 -38.4962 0 - vertex 2.31266 -38.26 -3 - vertex 0.962702 -38.4962 -3 - endloop - endfacet - facet normal -0.0313759 0.999508 0 - outer loop - vertex 0.962702 -38.4962 -3 - vertex -0.366978 -38.538 0 - vertex 0.962702 -38.4962 0 - endloop - endfacet - facet normal -0.0313759 0.999508 0 - outer loop - vertex -0.366978 -38.538 0 - vertex 0.962702 -38.4962 -3 - vertex -0.366978 -38.538 -3 - endloop - endfacet - facet normal 0.16461 0.986359 -0 - outer loop - vertex -0.366978 -38.538 -3 - vertex -1.43333 -38.36 0 - vertex -0.366978 -38.538 0 - endloop - endfacet - facet normal 0.16461 0.986359 0 - outer loop - vertex -1.43333 -38.36 0 - vertex -0.366978 -38.538 -3 - vertex -1.43333 -38.36 -3 - endloop - endfacet - facet normal 0.535641 0.844446 -0 - outer loop - vertex -1.43333 -38.36 -3 - vertex -2.45619 -37.7112 0 - vertex -1.43333 -38.36 0 - endloop - endfacet - facet normal 0.535641 0.844446 0 - outer loop - vertex -2.45619 -37.7112 0 - vertex -1.43333 -38.36 -3 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0.80363 0.595129 0 - outer loop - vertex -2.45619 -37.7112 0 - vertex -3.26834 -36.6145 -3 - vertex -3.26834 -36.6145 0 - endloop - endfacet - facet normal 0.80363 0.595129 0 - outer loop - vertex -3.26834 -36.6145 -3 - vertex -2.45619 -37.7112 0 - vertex -2.45619 -37.7112 -3 - endloop - endfacet - facet normal 0.935783 0.352578 0 - outer loop - vertex -3.26834 -36.6145 0 - vertex -3.80393 -35.193 -3 - vertex -3.80393 -35.193 0 - endloop - endfacet - facet normal 0.935783 0.352578 0 - outer loop - vertex -3.80393 -35.193 -3 - vertex -3.26834 -36.6145 0 - vertex -3.26834 -36.6145 -3 - endloop - endfacet - facet normal 0.992994 0.118162 0 - outer loop - vertex -3.80393 -35.193 0 - vertex -3.99709 -33.5697 -3 - vertex -3.99709 -33.5697 0 - endloop - endfacet - facet normal 0.992994 0.118162 0 - outer loop - vertex -3.99709 -33.5697 -3 - vertex -3.80393 -35.193 0 - vertex -3.80393 -35.193 -3 - endloop - endfacet - facet normal 0.988913 -0.148494 0 - outer loop - vertex -3.99709 -33.5697 0 - vertex -3.7659 -32.0301 -3 - vertex -3.7659 -32.0301 0 - endloop - endfacet - facet normal 0.988913 -0.148494 0 - outer loop - vertex -3.7659 -32.0301 -3 - vertex -3.99709 -33.5697 0 - vertex -3.99709 -33.5697 -3 - endloop - endfacet - facet normal 0.953123 -0.302584 0 - outer loop - vertex -3.7659 -32.0301 0 - vertex -3.14673 -30.0798 -3 - vertex -3.14673 -30.0798 0 - endloop - endfacet - facet normal 0.953123 -0.302584 0 - outer loop - vertex -3.14673 -30.0798 -3 - vertex -3.7659 -32.0301 0 - vertex -3.7659 -32.0301 -3 - endloop - endfacet - facet normal 0.917453 -0.397844 0 - outer loop - vertex -3.14673 -30.0798 0 - vertex -2.25121 -28.0146 -3 - vertex -2.25121 -28.0146 0 - endloop - endfacet - facet normal 0.917453 -0.397844 0 - outer loop - vertex -2.25121 -28.0146 -3 - vertex -3.14673 -30.0798 0 - vertex -3.14673 -30.0798 -3 - endloop - endfacet - facet normal 0.871478 -0.490435 0 - outer loop - vertex -2.25121 -28.0146 0 - vertex -1.19093 -26.1306 -3 - vertex -1.19093 -26.1306 0 - endloop - endfacet - facet normal 0.871478 -0.490435 0 - outer loop - vertex -1.19093 -26.1306 -3 - vertex -2.25121 -28.0146 0 - vertex -2.25121 -28.0146 -3 - endloop - endfacet - facet normal 0.794031 -0.607877 0 - outer loop - vertex -1.19093 -26.1306 0 - vertex 0.168338 -24.355 -3 - vertex 0.168338 -24.355 0 - endloop - endfacet - facet normal 0.794031 -0.607877 0 - outer loop - vertex 0.168338 -24.355 -3 - vertex -1.19093 -26.1306 0 - vertex -1.19093 -26.1306 -3 - endloop - endfacet - facet normal 0.710709 -0.703486 0 - outer loop - vertex 0.168338 -24.355 0 - vertex 1.84511 -22.661 -3 - vertex 1.84511 -22.661 0 - endloop - endfacet - facet normal 0.710709 -0.703486 0 - outer loop - vertex 1.84511 -22.661 -3 - vertex 0.168338 -24.355 0 - vertex 0.168338 -24.355 -3 - endloop - endfacet - facet normal 0.626061 -0.779774 0 - outer loop - vertex 1.84511 -22.661 -3 - vertex 3.72385 -21.1527 0 - vertex 1.84511 -22.661 0 - endloop - endfacet - facet normal 0.626061 -0.779774 0 - outer loop - vertex 3.72385 -21.1527 0 - vertex 1.84511 -22.661 -3 - vertex 3.72385 -21.1527 -3 - endloop - endfacet - facet normal 0.527042 -0.849839 0 - outer loop - vertex 3.72385 -21.1527 -3 - vertex 5.689 -19.9339 0 - vertex 3.72385 -21.1527 0 - endloop - endfacet - facet normal 0.527042 -0.849839 0 - outer loop - vertex 5.689 -19.9339 0 - vertex 3.72385 -21.1527 -3 - vertex 5.689 -19.9339 -3 - endloop - endfacet - facet normal 0.380142 -0.924928 0 - outer loop - vertex 5.689 -19.9339 -3 - vertex 7.06268 -19.3694 0 - vertex 5.689 -19.9339 0 - endloop - endfacet - facet normal 0.380142 -0.924928 0 - outer loop - vertex 7.06268 -19.3694 0 - vertex 5.689 -19.9339 -3 - vertex 7.06268 -19.3694 -3 - endloop - endfacet - facet normal 0.11624 -0.993221 0 - outer loop - vertex 7.06268 -19.3694 -3 - vertex 8.75581 -19.1712 0 - vertex 7.06268 -19.3694 0 - endloop - endfacet - facet normal 0.11624 -0.993221 0 - outer loop - vertex 8.75581 -19.1712 0 - vertex 7.06268 -19.3694 -3 - vertex 8.75581 -19.1712 -3 - endloop - endfacet - facet normal -0.00391511 -0.999992 0 - outer loop - vertex 8.75581 -19.1712 -3 - vertex 10.3474 -19.1774 0 - vertex 8.75581 -19.1712 0 - endloop - endfacet - facet normal -0.00391511 -0.999992 -0 - outer loop - vertex 10.3474 -19.1774 0 - vertex 8.75581 -19.1712 -3 - vertex 10.3474 -19.1774 -3 - endloop - endfacet - facet normal -0.375648 -0.926763 0 - outer loop - vertex 10.3474 -19.1774 -3 - vertex 11.2177 -19.5302 0 - vertex 10.3474 -19.1774 0 - endloop - endfacet - facet normal -0.375648 -0.926763 -0 - outer loop - vertex 11.2177 -19.5302 0 - vertex 10.3474 -19.1774 -3 - vertex 11.2177 -19.5302 -3 - endloop - endfacet - facet normal -0.460444 -0.887689 0 - outer loop - vertex 11.2177 -19.5302 -3 - vertex 11.7785 -19.8211 0 - vertex 11.2177 -19.5302 0 - endloop - endfacet - facet normal -0.460444 -0.887689 -0 - outer loop - vertex 11.7785 -19.8211 0 - vertex 11.2177 -19.5302 -3 - vertex 11.7785 -19.8211 -3 - endloop - endfacet - facet normal 0.340288 -0.940321 0 - outer loop - vertex 11.7785 -19.8211 -3 - vertex 12.058 -19.7199 0 - vertex 11.7785 -19.8211 0 - endloop - endfacet - facet normal 0.340288 -0.940321 0 - outer loop - vertex 12.058 -19.7199 0 - vertex 11.7785 -19.8211 -3 - vertex 12.058 -19.7199 -3 - endloop - endfacet - facet normal 0.919444 -0.393221 0 - outer loop - vertex 12.058 -19.7199 0 - vertex 13.2867 -16.8469 -3 - vertex 13.2867 -16.8469 0 - endloop - endfacet - facet normal 0.919444 -0.393221 0 - outer loop - vertex 13.2867 -16.8469 -3 - vertex 12.058 -19.7199 0 - vertex 12.058 -19.7199 -3 - endloop - endfacet - facet normal 0.948333 -0.317278 0 - outer loop - vertex 13.2867 -16.8469 0 - vertex 14.1246 -14.3424 -3 - vertex 14.1246 -14.3424 0 - endloop - endfacet - facet normal 0.948333 -0.317278 0 - outer loop - vertex 14.1246 -14.3424 -3 - vertex 13.2867 -16.8469 0 - vertex 13.2867 -16.8469 -3 - endloop - endfacet - facet normal 0.170025 0.98544 -0 - outer loop - vertex 14.1246 -14.3424 -3 - vertex 12.858 -14.1239 0 - vertex 14.1246 -14.3424 0 - endloop - endfacet - facet normal 0.170025 0.98544 0 - outer loop - vertex 12.858 -14.1239 0 - vertex 14.1246 -14.3424 -3 - vertex 12.858 -14.1239 -3 - endloop - endfacet - facet normal 0.649749 0.760149 -0 - outer loop - vertex 12.858 -14.1239 -3 - vertex 12.417 -13.7469 0 - vertex 12.858 -14.1239 0 - endloop - endfacet - facet normal 0.649749 0.760149 0 - outer loop - vertex 12.417 -13.7469 0 - vertex 12.858 -14.1239 -3 - vertex 12.417 -13.7469 -3 - endloop - endfacet - facet normal 0.999788 0.0206018 0 - outer loop - vertex 12.417 -13.7469 0 - vertex 12.4073 -13.2773 -3 - vertex 12.4073 -13.2773 0 - endloop - endfacet - facet normal 0.999788 0.0206018 0 - outer loop - vertex 12.4073 -13.2773 -3 - vertex 12.417 -13.7469 0 - vertex 12.417 -13.7469 -3 - endloop - endfacet - facet normal 0.884204 -0.467101 0 - outer loop - vertex 12.4073 -13.2773 0 - vertex 12.6527 -12.8127 -3 - vertex 12.6527 -12.8127 0 - endloop - endfacet - facet normal 0.884204 -0.467101 0 - outer loop - vertex 12.6527 -12.8127 -3 - vertex 12.4073 -13.2773 0 - vertex 12.4073 -13.2773 -3 - endloop - endfacet - facet normal 0.661795 -0.749685 0 - outer loop - vertex 12.6527 -12.8127 -3 - vertex 13.1035 -12.4147 0 - vertex 12.6527 -12.8127 0 - endloop - endfacet - facet normal 0.661795 -0.749685 0 - outer loop - vertex 13.1035 -12.4147 0 - vertex 12.6527 -12.8127 -3 - vertex 13.1035 -12.4147 -3 - endloop - endfacet - facet normal 0.406349 -0.913718 0 - outer loop - vertex 13.1035 -12.4147 -3 - vertex 13.71 -12.1451 0 - vertex 13.1035 -12.4147 0 - endloop - endfacet - facet normal 0.406349 -0.913718 0 - outer loop - vertex 13.71 -12.1451 0 - vertex 13.1035 -12.4147 -3 - vertex 13.71 -12.1451 -3 - endloop - endfacet - facet normal 0.283559 -0.958955 0 - outer loop - vertex 13.71 -12.1451 -3 - vertex 16.7993 -11.2316 0 - vertex 13.71 -12.1451 0 - endloop - endfacet - facet normal 0.283559 -0.958955 0 - outer loop - vertex 16.7993 -11.2316 0 - vertex 13.71 -12.1451 -3 - vertex 16.7993 -11.2316 -3 - endloop - endfacet - facet normal 0.227026 -0.973889 0 - outer loop - vertex 16.7993 -11.2316 -3 - vertex 19.0845 -10.6988 0 - vertex 16.7993 -11.2316 0 - endloop - endfacet - facet normal 0.227026 -0.973889 0 - outer loop - vertex 19.0845 -10.6988 0 - vertex 16.7993 -11.2316 -3 - vertex 19.0845 -10.6988 -3 - endloop - endfacet - facet normal -0.20555 -0.978647 0 - outer loop - vertex 19.0845 -10.6988 -3 - vertex 19.5452 -10.7956 0 - vertex 19.0845 -10.6988 0 - endloop - endfacet - facet normal -0.20555 -0.978647 -0 - outer loop - vertex 19.5452 -10.7956 0 - vertex 19.0845 -10.6988 -3 - vertex 19.5452 -10.7956 -3 - endloop - endfacet - facet normal -0.339851 0.940479 0 - outer loop - vertex 7.70773 -21.5983 -3 - vertex 6.85097 -21.9079 0 - vertex 7.70773 -21.5983 0 - endloop - endfacet - facet normal -0.339851 0.940479 0 - outer loop - vertex 6.85097 -21.9079 0 - vertex 7.70773 -21.5983 -3 - vertex 6.85097 -21.9079 -3 - endloop - endfacet - facet normal -0.514575 0.857445 0 - outer loop - vertex 6.85097 -21.9079 -3 - vertex 5.96068 -22.4422 0 - vertex 6.85097 -21.9079 0 - endloop - endfacet - facet normal -0.514575 0.857445 0 - outer loop - vertex 5.96068 -22.4422 0 - vertex 6.85097 -21.9079 -3 - vertex 5.96068 -22.4422 -3 - endloop - endfacet - facet normal -0.651148 0.758951 0 - outer loop - vertex 5.96068 -22.4422 -3 - vertex 5.07455 -23.2024 0 - vertex 5.96068 -22.4422 0 - endloop - endfacet - facet normal -0.651148 0.758951 0 - outer loop - vertex 5.07455 -23.2024 0 - vertex 5.96068 -22.4422 -3 - vertex 5.07455 -23.2024 -3 - endloop - endfacet - facet normal -0.756285 0.654243 0 - outer loop - vertex 3.84714 -24.6213 -3 - vertex 5.07455 -23.2024 0 - vertex 5.07455 -23.2024 -3 - endloop - endfacet - facet normal -0.756285 0.654243 0 - outer loop - vertex 5.07455 -23.2024 0 - vertex 3.84714 -24.6213 -3 - vertex 3.84714 -24.6213 0 - endloop - endfacet - facet normal -0.833253 0.552891 0 - outer loop - vertex 2.80055 -26.1986 -3 - vertex 3.84714 -24.6213 0 - vertex 3.84714 -24.6213 -3 - endloop - endfacet - facet normal -0.833253 0.552891 0 - outer loop - vertex 3.84714 -24.6213 0 - vertex 2.80055 -26.1986 -3 - vertex 2.80055 -26.1986 0 - endloop - endfacet - facet normal -0.891463 0.453094 0 - outer loop - vertex 1.95873 -27.8549 -3 - vertex 2.80055 -26.1986 0 - vertex 2.80055 -26.1986 -3 - endloop - endfacet - facet normal -0.891463 0.453094 0 - outer loop - vertex 2.80055 -26.1986 0 - vertex 1.95873 -27.8549 -3 - vertex 1.95873 -27.8549 0 - endloop - endfacet - facet normal -0.937776 0.347241 0 - outer loop - vertex 1.3456 -29.5107 -3 - vertex 1.95873 -27.8549 0 - vertex 1.95873 -27.8549 -3 - endloop - endfacet - facet normal -0.937776 0.347241 0 - outer loop - vertex 1.95873 -27.8549 0 - vertex 1.3456 -29.5107 -3 - vertex 1.3456 -29.5107 0 - endloop - endfacet - facet normal -0.97482 0.222992 0 - outer loop - vertex 0.985088 -31.0867 -3 - vertex 1.3456 -29.5107 0 - vertex 1.3456 -29.5107 -3 - endloop - endfacet - facet normal -0.97482 0.222992 0 - outer loop - vertex 1.3456 -29.5107 0 - vertex 0.985088 -31.0867 -3 - vertex 0.985088 -31.0867 0 - endloop - endfacet - facet normal -0.998249 0.0591584 0 - outer loop - vertex 0.901133 -32.5034 -3 - vertex 0.985088 -31.0867 0 - vertex 0.985088 -31.0867 -3 - endloop - endfacet - facet normal -0.998249 0.0591584 0 - outer loop - vertex 0.985088 -31.0867 0 - vertex 0.901133 -32.5034 -3 - vertex 0.901133 -32.5034 0 - endloop - endfacet - facet normal -0.983521 -0.180795 0 - outer loop - vertex 1.11766 -33.6813 -3 - vertex 0.901133 -32.5034 0 - vertex 0.901133 -32.5034 -3 - endloop - endfacet - facet normal -0.983521 -0.180795 0 - outer loop - vertex 0.901133 -32.5034 0 - vertex 1.11766 -33.6813 -3 - vertex 1.11766 -33.6813 0 - endloop - endfacet - facet normal -0.846397 -0.532553 0 - outer loop - vertex 1.65861 -34.5411 -3 - vertex 1.11766 -33.6813 0 - vertex 1.11766 -33.6813 -3 - endloop - endfacet - facet normal -0.846397 -0.532553 0 - outer loop - vertex 1.11766 -33.6813 0 - vertex 1.65861 -34.5411 -3 - vertex 1.65861 -34.5411 0 - endloop - endfacet - facet normal -0.511641 -0.859199 0 - outer loop - vertex 1.65861 -34.5411 -3 - vertex 2.32628 -34.9386 0 - vertex 1.65861 -34.5411 0 - endloop - endfacet - facet normal -0.511641 -0.859199 -0 - outer loop - vertex 2.32628 -34.9386 0 - vertex 1.65861 -34.5411 -3 - vertex 2.32628 -34.9386 -3 - endloop - endfacet - facet normal -0.182531 -0.9832 0 - outer loop - vertex 2.32628 -34.9386 -3 - vertex 3.17687 -35.0966 0 - vertex 2.32628 -34.9386 0 - endloop - endfacet - facet normal -0.182531 -0.9832 -0 - outer loop - vertex 3.17687 -35.0966 0 - vertex 2.32628 -34.9386 -3 - vertex 3.17687 -35.0966 -3 - endloop - endfacet - facet normal 0.0908592 -0.995864 0 - outer loop - vertex 3.17687 -35.0966 -3 - vertex 4.11511 -35.011 0 - vertex 3.17687 -35.0966 0 - endloop - endfacet - facet normal 0.0908592 -0.995864 0 - outer loop - vertex 4.11511 -35.011 0 - vertex 3.17687 -35.0966 -3 - vertex 4.11511 -35.011 -3 - endloop - endfacet - facet normal 0.336892 -0.941543 0 - outer loop - vertex 4.11511 -35.011 -3 - vertex 5.04571 -34.678 0 - vertex 4.11511 -35.011 0 - endloop - endfacet - facet normal 0.336892 -0.941543 0 - outer loop - vertex 5.04571 -34.678 0 - vertex 4.11511 -35.011 -3 - vertex 5.04571 -34.678 -3 - endloop - endfacet - facet normal 0.557528 -0.830158 0 - outer loop - vertex 5.04571 -34.678 -3 - vertex 5.71313 -34.2297 0 - vertex 5.04571 -34.678 0 - endloop - endfacet - facet normal 0.557528 -0.830158 0 - outer loop - vertex 5.71313 -34.2297 0 - vertex 5.04571 -34.678 -3 - vertex 5.71313 -34.2297 -3 - endloop - endfacet - facet normal 0.786383 -0.61774 0 - outer loop - vertex 5.71313 -34.2297 0 - vertex 6.30534 -33.4759 -3 - vertex 6.30534 -33.4759 0 - endloop - endfacet - facet normal 0.786383 -0.61774 0 - outer loop - vertex 6.30534 -33.4759 -3 - vertex 5.71313 -34.2297 0 - vertex 5.71313 -34.2297 -3 - endloop - endfacet - facet normal 0.906895 -0.421357 0 - outer loop - vertex 6.30534 -33.4759 0 - vertex 7.96204 -29.9101 -3 - vertex 7.96204 -29.9101 0 - endloop - endfacet - facet normal 0.906895 -0.421357 0 - outer loop - vertex 7.96204 -29.9101 -3 - vertex 6.30534 -33.4759 0 - vertex 6.30534 -33.4759 -3 - endloop - endfacet - facet normal 0.929235 -0.36949 0 - outer loop - vertex 7.96204 -29.9101 0 - vertex 9.7411 -25.4359 -3 - vertex 9.7411 -25.4359 0 - endloop - endfacet - facet normal 0.929235 -0.36949 0 - outer loop - vertex 9.7411 -25.4359 -3 - vertex 7.96204 -29.9101 0 - vertex 7.96204 -29.9101 -3 - endloop - endfacet - facet normal 0.962546 -0.271117 0 - outer loop - vertex 9.7411 -25.4359 0 - vertex 10.0775 -24.2416 -3 - vertex 10.0775 -24.2416 0 - endloop - endfacet - facet normal 0.962546 -0.271117 0 - outer loop - vertex 10.0775 -24.2416 -3 - vertex 9.7411 -25.4359 0 - vertex 9.7411 -25.4359 -3 - endloop - endfacet - facet normal 0.994463 -0.105087 0 - outer loop - vertex 10.0775 -24.2416 0 - vertex 10.169 -23.3758 -3 - vertex 10.169 -23.3758 0 - endloop - endfacet - facet normal 0.994463 -0.105087 0 - outer loop - vertex 10.169 -23.3758 -3 - vertex 10.0775 -24.2416 0 - vertex 10.0775 -24.2416 -3 - endloop - endfacet - facet normal 0.988121 0.153677 0 - outer loop - vertex 10.169 -23.3758 0 - vertex 10.0454 -22.5812 -3 - vertex 10.0454 -22.5812 0 - endloop - endfacet - facet normal 0.988121 0.153677 0 - outer loop - vertex 10.0454 -22.5812 -3 - vertex 10.169 -23.3758 0 - vertex 10.169 -23.3758 -3 - endloop - endfacet - facet normal 0.857617 0.514289 0 - outer loop - vertex 10.0454 -22.5812 0 - vertex 9.69979 -22.0048 -3 - vertex 9.69979 -22.0048 0 - endloop - endfacet - facet normal 0.857617 0.514289 0 - outer loop - vertex 9.69979 -22.0048 -3 - vertex 10.0454 -22.5812 0 - vertex 10.0454 -22.5812 -3 - endloop - endfacet - facet normal 0.558467 0.829527 -0 - outer loop - vertex 9.69979 -22.0048 -3 - vertex 9.16984 -21.6481 0 - vertex 9.69979 -22.0048 0 - endloop - endfacet - facet normal 0.558467 0.829527 0 - outer loop - vertex 9.16984 -21.6481 0 - vertex 9.69979 -22.0048 -3 - vertex 9.16984 -21.6481 -3 - endloop - endfacet - facet normal 0.196985 0.980407 -0 - outer loop - vertex 9.16984 -21.6481 -3 - vertex 8.49325 -21.5121 0 - vertex 9.16984 -21.6481 0 - endloop - endfacet - facet normal 0.196985 0.980407 0 - outer loop - vertex 8.49325 -21.5121 0 - vertex 9.16984 -21.6481 -3 - vertex 8.49325 -21.5121 -3 - endloop - endfacet - facet normal -0.109065 0.994035 0 - outer loop - vertex 8.49325 -21.5121 -3 - vertex 7.70773 -21.5983 0 - vertex 8.49325 -21.5121 0 - endloop - endfacet - facet normal -0.109065 0.994035 0 - outer loop - vertex 7.70773 -21.5983 0 - vertex 8.49325 -21.5121 -3 - vertex 7.70773 -21.5983 -3 - endloop - endfacet - facet normal -0.270451 -0.962734 0 - outer loop - vertex 28.989 -19.2301 -3 - vertex 29.9429 -19.4981 0 - vertex 28.989 -19.2301 0 - endloop - endfacet - facet normal -0.270451 -0.962734 -0 - outer loop - vertex 29.9429 -19.4981 0 - vertex 28.989 -19.2301 -3 - vertex 29.9429 -19.4981 -3 - endloop - endfacet - facet normal -0.511153 -0.85949 0 - outer loop - vertex 29.9429 -19.4981 -3 - vertex 30.7248 -19.9631 0 - vertex 29.9429 -19.4981 0 - endloop - endfacet - facet normal -0.511153 -0.85949 -0 - outer loop - vertex 30.7248 -19.9631 0 - vertex 29.9429 -19.4981 -3 - vertex 30.7248 -19.9631 -3 - endloop - endfacet - facet normal -0.723919 -0.689885 0 - outer loop - vertex 31.3699 -20.64 -3 - vertex 30.7248 -19.9631 0 - vertex 30.7248 -19.9631 -3 - endloop - endfacet - facet normal -0.723919 -0.689885 0 - outer loop - vertex 30.7248 -19.9631 0 - vertex 31.3699 -20.64 -3 - vertex 31.3699 -20.64 0 - endloop - endfacet - facet normal -0.867187 -0.497983 0 - outer loop - vertex 31.8086 -21.404 -3 - vertex 31.3699 -20.64 0 - vertex 31.3699 -20.64 -3 - endloop - endfacet - facet normal -0.867187 -0.497983 0 - outer loop - vertex 31.3699 -20.64 0 - vertex 31.8086 -21.404 -3 - vertex 31.8086 -21.404 0 - endloop - endfacet - facet normal -0.971458 -0.237212 0 - outer loop - vertex 32.0232 -22.2828 -3 - vertex 31.8086 -21.404 0 - vertex 31.8086 -21.404 -3 - endloop - endfacet - facet normal -0.971458 -0.237212 0 - outer loop - vertex 31.8086 -21.404 0 - vertex 32.0232 -22.2828 -3 - vertex 32.0232 -22.2828 0 - endloop - endfacet - facet normal -0.999998 -0.00210454 0 - outer loop - vertex 32.0255 -23.3848 -3 - vertex 32.0232 -22.2828 0 - vertex 32.0232 -22.2828 -3 - endloop - endfacet - facet normal -0.999998 -0.00210454 0 - outer loop - vertex 32.0232 -22.2828 0 - vertex 32.0255 -23.3848 -3 - vertex 32.0255 -23.3848 0 - endloop - endfacet - facet normal -0.990595 0.136824 0 - outer loop - vertex 31.8275 -24.8188 -3 - vertex 32.0255 -23.3848 0 - vertex 32.0255 -23.3848 -3 - endloop - endfacet - facet normal -0.990595 0.136824 0 - outer loop - vertex 32.0255 -23.3848 0 - vertex 31.8275 -24.8188 -3 - vertex 31.8275 -24.8188 0 - endloop - endfacet - facet normal -0.978641 0.205575 0 - outer loop - vertex 31.4974 -26.3899 -3 - vertex 31.8275 -24.8188 0 - vertex 31.8275 -24.8188 -3 - endloop - endfacet - facet normal -0.978641 0.205575 0 - outer loop - vertex 31.8275 -24.8188 0 - vertex 31.4974 -26.3899 -3 - vertex 31.4974 -26.3899 0 - endloop - endfacet - facet normal -0.869264 0.494348 0 - outer loop - vertex 31.2318 -26.857 -3 - vertex 31.4974 -26.3899 0 - vertex 31.4974 -26.3899 -3 - endloop - endfacet - facet normal -0.869264 0.494348 0 - outer loop - vertex 31.4974 -26.3899 0 - vertex 31.2318 -26.857 -3 - vertex 31.2318 -26.857 0 - endloop - endfacet - facet normal -0.557816 0.829965 0 - outer loop - vertex 31.2318 -26.857 -3 - vertex 30.7817 -27.1595 0 - vertex 31.2318 -26.857 0 - endloop - endfacet - facet normal -0.557816 0.829965 0 - outer loop - vertex 30.7817 -27.1595 0 - vertex 31.2318 -26.857 -3 - vertex 30.7817 -27.1595 -3 - endloop - endfacet - facet normal -0.13929 0.990252 0 - outer loop - vertex 30.7817 -27.1595 -3 - vertex 28.9763 -27.4135 0 - vertex 30.7817 -27.1595 0 - endloop - endfacet - facet normal -0.13929 0.990252 0 - outer loop - vertex 28.9763 -27.4135 0 - vertex 30.7817 -27.1595 -3 - vertex 28.9763 -27.4135 -3 - endloop - endfacet - facet normal -0.00668289 0.999978 0 - outer loop - vertex 28.9763 -27.4135 -3 - vertex 25.3774 -27.4375 0 - vertex 28.9763 -27.4135 0 - endloop - endfacet - facet normal -0.00668289 0.999978 0 - outer loop - vertex 25.3774 -27.4375 0 - vertex 28.9763 -27.4135 -3 - vertex 25.3774 -27.4375 -3 - endloop - endfacet - facet normal -0.00092424 1 0 - outer loop - vertex 25.3774 -27.4375 -3 - vertex 20.1129 -27.4424 0 - vertex 25.3774 -27.4375 0 - endloop - endfacet - facet normal -0.00092424 1 0 - outer loop - vertex 20.1129 -27.4424 0 - vertex 25.3774 -27.4375 -3 - vertex 20.1129 -27.4424 -3 - endloop - endfacet - facet normal -0.945282 0.326255 0 - outer loop - vertex 19.9054 -28.0436 -3 - vertex 20.1129 -27.4424 0 - vertex 20.1129 -27.4424 -3 - endloop - endfacet - facet normal -0.945282 0.326255 0 - outer loop - vertex 20.1129 -27.4424 0 - vertex 19.9054 -28.0436 -3 - vertex 19.9054 -28.0436 0 - endloop - endfacet - facet normal -0.967122 0.254313 0 - outer loop - vertex 19.5138 -29.5327 -3 - vertex 19.9054 -28.0436 0 - vertex 19.9054 -28.0436 -3 - endloop - endfacet - facet normal -0.967122 0.254313 0 - outer loop - vertex 19.9054 -28.0436 0 - vertex 19.5138 -29.5327 -3 - vertex 19.5138 -29.5327 0 - endloop - endfacet - facet normal -0.991046 0.133521 0 - outer loop - vertex 19.3087 -31.0557 -3 - vertex 19.5138 -29.5327 0 - vertex 19.5138 -29.5327 -3 - endloop - endfacet - facet normal -0.991046 0.133521 0 - outer loop - vertex 19.5138 -29.5327 0 - vertex 19.3087 -31.0557 -3 - vertex 19.3087 -31.0557 0 - endloop - endfacet - facet normal -1 8.95066e-05 0 - outer loop - vertex 19.3085 -32.3556 -3 - vertex 19.3087 -31.0557 0 - vertex 19.3087 -31.0557 -3 - endloop - endfacet - facet normal -1 8.95066e-05 0 - outer loop - vertex 19.3087 -31.0557 0 - vertex 19.3085 -32.3556 -3 - vertex 19.3085 -32.3556 0 - endloop - endfacet - facet normal -0.964746 -0.263183 0 - outer loop - vertex 19.5322 -33.1754 -3 - vertex 19.3085 -32.3556 0 - vertex 19.3085 -32.3556 -3 - endloop - endfacet - facet normal -0.964746 -0.263183 0 - outer loop - vertex 19.3085 -32.3556 0 - vertex 19.5322 -33.1754 -3 - vertex 19.5322 -33.1754 0 - endloop - endfacet - facet normal -0.729596 -0.683879 0 - outer loop - vertex 20.0228 -33.6987 -3 - vertex 19.5322 -33.1754 0 - vertex 19.5322 -33.1754 -3 - endloop - endfacet - facet normal -0.729596 -0.683879 0 - outer loop - vertex 19.5322 -33.1754 0 - vertex 20.0228 -33.6987 -3 - vertex 20.0228 -33.6987 0 - endloop - endfacet - facet normal -0.526282 -0.85031 0 - outer loop - vertex 20.0228 -33.6987 -3 - vertex 20.6651 -34.0963 0 - vertex 20.0228 -33.6987 0 - endloop - endfacet - facet normal -0.526282 -0.85031 -0 - outer loop - vertex 20.6651 -34.0963 0 - vertex 20.0228 -33.6987 -3 - vertex 20.6651 -34.0963 -3 - endloop - endfacet - facet normal -0.318074 -0.948066 0 - outer loop - vertex 20.6651 -34.0963 -3 - vertex 21.4183 -34.349 0 - vertex 20.6651 -34.0963 0 - endloop - endfacet - facet normal -0.318074 -0.948066 -0 - outer loop - vertex 21.4183 -34.349 0 - vertex 20.6651 -34.0963 -3 - vertex 21.4183 -34.349 -3 - endloop - endfacet - facet normal -0.107309 -0.994226 0 - outer loop - vertex 21.4183 -34.349 -3 - vertex 22.2417 -34.4379 0 - vertex 21.4183 -34.349 0 - endloop - endfacet - facet normal -0.107309 -0.994226 -0 - outer loop - vertex 22.2417 -34.4379 0 - vertex 21.4183 -34.349 -3 - vertex 22.2417 -34.4379 -3 - endloop - endfacet - facet normal 0.120086 -0.992763 0 - outer loop - vertex 22.2417 -34.4379 -3 - vertex 23.5816 -34.2758 0 - vertex 22.2417 -34.4379 0 - endloop - endfacet - facet normal 0.120086 -0.992763 0 - outer loop - vertex 23.5816 -34.2758 0 - vertex 22.2417 -34.4379 -3 - vertex 23.5816 -34.2758 -3 - endloop - endfacet - facet normal 0.371865 -0.928287 0 - outer loop - vertex 23.5816 -34.2758 -3 - vertex 24.9271 -33.7368 0 - vertex 23.5816 -34.2758 0 - endloop - endfacet - facet normal 0.371865 -0.928287 0 - outer loop - vertex 24.9271 -33.7368 0 - vertex 23.5816 -34.2758 -3 - vertex 24.9271 -33.7368 -3 - endloop - endfacet - facet normal 0.553658 -0.832744 0 - outer loop - vertex 24.9271 -33.7368 -3 - vertex 26.4192 -32.7448 0 - vertex 24.9271 -33.7368 0 - endloop - endfacet - facet normal 0.553658 -0.832744 0 - outer loop - vertex 26.4192 -32.7448 0 - vertex 24.9271 -33.7368 -3 - vertex 26.4192 -32.7448 -3 - endloop - endfacet - facet normal 0.649717 -0.760176 0 - outer loop - vertex 26.4192 -32.7448 -3 - vertex 28.199 -31.2235 0 - vertex 26.4192 -32.7448 0 - endloop - endfacet - facet normal 0.649717 -0.760176 0 - outer loop - vertex 28.199 -31.2235 0 - vertex 26.4192 -32.7448 -3 - vertex 28.199 -31.2235 -3 - endloop - endfacet - facet normal 0.570708 -0.821153 0 - outer loop - vertex 28.199 -31.2235 -3 - vertex 29.2916 -30.4642 0 - vertex 28.199 -31.2235 0 - endloop - endfacet - facet normal 0.570708 -0.821153 0 - outer loop - vertex 29.2916 -30.4642 0 - vertex 28.199 -31.2235 -3 - vertex 29.2916 -30.4642 -3 - endloop - endfacet - facet normal -0.0859885 -0.996296 0 - outer loop - vertex 29.2916 -30.4642 -3 - vertex 29.6885 -30.4984 0 - vertex 29.2916 -30.4642 0 - endloop - endfacet - facet normal -0.0859885 -0.996296 -0 - outer loop - vertex 29.6885 -30.4984 0 - vertex 29.2916 -30.4642 -3 - vertex 29.6885 -30.4984 -3 - endloop - endfacet - facet normal -0.559844 -0.828598 0 - outer loop - vertex 29.6885 -30.4984 -3 - vertex 30.1062 -30.7807 0 - vertex 29.6885 -30.4984 0 - endloop - endfacet - facet normal -0.559844 -0.828598 -0 - outer loop - vertex 30.1062 -30.7807 0 - vertex 29.6885 -30.4984 -3 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal -0.971403 -0.237438 0 - outer loop - vertex 30.2029 -31.1764 -3 - vertex 30.1062 -30.7807 0 - vertex 30.1062 -30.7807 -3 - endloop - endfacet - facet normal -0.971403 -0.237438 0 - outer loop - vertex 30.1062 -30.7807 0 - vertex 30.2029 -31.1764 -3 - vertex 30.2029 -31.1764 0 - endloop - endfacet - facet normal -0.897428 0.441162 0 - outer loop - vertex 29.8709 -31.8517 -3 - vertex 30.2029 -31.1764 0 - vertex 30.2029 -31.1764 -3 - endloop - endfacet - facet normal -0.897428 0.441162 0 - outer loop - vertex 30.2029 -31.1764 0 - vertex 29.8709 -31.8517 -3 - vertex 29.8709 -31.8517 0 - endloop - endfacet - facet normal -0.750818 0.660509 0 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 29.8709 -31.8517 0 - vertex 29.8709 -31.8517 -3 - endloop - endfacet - facet normal -0.750818 0.660509 0 - outer loop - vertex 29.8709 -31.8517 0 - vertex 27.8442 -34.1555 -3 - vertex 27.8442 -34.1555 0 - endloop - endfacet - facet normal -0.671006 0.741452 0 - outer loop - vertex 27.8442 -34.1555 -3 - vertex 25.9895 -35.834 0 - vertex 27.8442 -34.1555 0 - endloop - endfacet - facet normal -0.671006 0.741452 0 - outer loop - vertex 25.9895 -35.834 0 - vertex 27.8442 -34.1555 -3 - vertex 25.9895 -35.834 -3 - endloop - endfacet - facet normal -0.538751 0.842465 0 - outer loop - vertex 25.9895 -35.834 -3 - vertex 24.0601 -37.0678 0 - vertex 25.9895 -35.834 0 - endloop - endfacet - facet normal -0.538751 0.842465 0 - outer loop - vertex 24.0601 -37.0678 0 - vertex 25.9895 -35.834 -3 - vertex 24.0601 -37.0678 -3 - endloop - endfacet - facet normal -0.416623 0.909079 0 - outer loop - vertex 24.0601 -37.0678 -3 - vertex 21.4079 -38.2833 0 - vertex 24.0601 -37.0678 0 - endloop - endfacet - facet normal -0.416623 0.909079 0 - outer loop - vertex 21.4079 -38.2833 0 - vertex 24.0601 -37.0678 -3 - vertex 21.4079 -38.2833 -3 - endloop - endfacet - facet normal -0.208885 0.97794 0 - outer loop - vertex 21.4079 -38.2833 -3 - vertex 20.3084 -38.5182 0 - vertex 21.4079 -38.2833 0 - endloop - endfacet - facet normal -0.208885 0.97794 0 - outer loop - vertex 20.3084 -38.5182 0 - vertex 21.4079 -38.2833 -3 - vertex 20.3084 -38.5182 -3 - endloop - endfacet - facet normal -0.0552232 0.998474 0 - outer loop - vertex 20.3084 -38.5182 -3 - vertex 19.0956 -38.5852 0 - vertex 20.3084 -38.5182 0 - endloop - endfacet - facet normal -0.0552232 0.998474 0 - outer loop - vertex 19.0956 -38.5852 0 - vertex 20.3084 -38.5182 -3 - vertex 19.0956 -38.5852 -3 - endloop - endfacet - facet normal 0.0949344 0.995484 -0 - outer loop - vertex 19.0956 -38.5852 -3 - vertex 17.8945 -38.4707 0 - vertex 19.0956 -38.5852 0 - endloop - endfacet - facet normal 0.0949344 0.995484 0 - outer loop - vertex 17.8945 -38.4707 0 - vertex 19.0956 -38.5852 -3 - vertex 17.8945 -38.4707 -3 - endloop - endfacet - facet normal 0.357488 0.933918 -0 - outer loop - vertex 17.8945 -38.4707 -3 - vertex 16.8412 -38.0675 0 - vertex 17.8945 -38.4707 0 - endloop - endfacet - facet normal 0.357488 0.933918 0 - outer loop - vertex 16.8412 -38.0675 0 - vertex 17.8945 -38.4707 -3 - vertex 16.8412 -38.0675 -3 - endloop - endfacet - facet normal 0.556683 0.830725 -0 - outer loop - vertex 16.8412 -38.0675 -3 - vertex 15.8953 -37.4336 0 - vertex 16.8412 -38.0675 0 - endloop - endfacet - facet normal 0.556683 0.830725 0 - outer loop - vertex 15.8953 -37.4336 0 - vertex 16.8412 -38.0675 -3 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0.764952 0.644087 0 - outer loop - vertex 15.8953 -37.4336 0 - vertex 15.2376 -36.6526 -3 - vertex 15.2376 -36.6526 0 - endloop - endfacet - facet normal 0.764952 0.644087 0 - outer loop - vertex 15.2376 -36.6526 -3 - vertex 15.8953 -37.4336 0 - vertex 15.8953 -37.4336 -3 - endloop - endfacet - facet normal 0.925772 0.378082 0 - outer loop - vertex 15.2376 -36.6526 0 - vertex 14.8379 -35.6738 -3 - vertex 14.8379 -35.6738 0 - endloop - endfacet - facet normal 0.925772 0.378082 0 - outer loop - vertex 14.8379 -35.6738 -3 - vertex 15.2376 -36.6526 0 - vertex 15.2376 -36.6526 -3 - endloop - endfacet - facet normal 0.990293 0.138993 0 - outer loop - vertex 14.8379 -35.6738 0 - vertex 14.6656 -34.4466 -3 - vertex 14.6656 -34.4466 0 - endloop - endfacet - facet normal 0.990293 0.138993 0 - outer loop - vertex 14.6656 -34.4466 -3 - vertex 14.8379 -35.6738 0 - vertex 14.8379 -35.6738 -3 - endloop - endfacet - facet normal 0.99828 -0.0586187 0 - outer loop - vertex 14.6656 -34.4466 0 - vertex 14.7938 -32.2631 -3 - vertex 14.7938 -32.2631 0 - endloop - endfacet - facet normal 0.99828 -0.0586187 0 - outer loop - vertex 14.7938 -32.2631 -3 - vertex 14.6656 -34.4466 0 - vertex 14.6656 -34.4466 -3 - endloop - endfacet - facet normal 0.96872 -0.248157 0 - outer loop - vertex 14.7938 -32.2631 0 - vertex 15.3794 -29.9771 -3 - vertex 15.3794 -29.9771 0 - endloop - endfacet - facet normal 0.96872 -0.248157 0 - outer loop - vertex 15.3794 -29.9771 -3 - vertex 14.7938 -32.2631 0 - vertex 14.7938 -32.2631 -3 - endloop - endfacet - facet normal 0.915816 -0.401597 0 - outer loop - vertex 15.3794 -29.9771 0 - vertex 16.4055 -27.6373 -3 - vertex 16.4055 -27.6373 0 - endloop - endfacet - facet normal 0.915816 -0.401597 0 - outer loop - vertex 16.4055 -27.6373 -3 - vertex 15.3794 -29.9771 0 - vertex 15.3794 -29.9771 -3 - endloop - endfacet - facet normal 0.850611 -0.525795 0 - outer loop - vertex 16.4055 -27.6373 0 - vertex 17.855 -25.2923 -3 - vertex 17.855 -25.2923 0 - endloop - endfacet - facet normal 0.850611 -0.525795 0 - outer loop - vertex 17.855 -25.2923 -3 - vertex 16.4055 -27.6373 0 - vertex 16.4055 -27.6373 -3 - endloop - endfacet - facet normal 0.787541 -0.616262 0 - outer loop - vertex 17.855 -25.2923 0 - vertex 19.0386 -23.7798 -3 - vertex 19.0386 -23.7798 0 - endloop - endfacet - facet normal 0.787541 -0.616262 0 - outer loop - vertex 19.0386 -23.7798 -3 - vertex 17.855 -25.2923 0 - vertex 17.855 -25.2923 -3 - endloop - endfacet - facet normal 0.719973 -0.694002 0 - outer loop - vertex 19.0386 -23.7798 0 - vertex 20.2954 -22.4759 -3 - vertex 20.2954 -22.4759 0 - endloop - endfacet - facet normal 0.719973 -0.694002 0 - outer loop - vertex 20.2954 -22.4759 -3 - vertex 19.0386 -23.7798 0 - vertex 19.0386 -23.7798 -3 - endloop - endfacet - facet normal 0.636055 -0.771644 0 - outer loop - vertex 20.2954 -22.4759 -3 - vertex 21.6367 -21.3703 0 - vertex 20.2954 -22.4759 0 - endloop - endfacet - facet normal 0.636055 -0.771644 0 - outer loop - vertex 21.6367 -21.3703 0 - vertex 20.2954 -22.4759 -3 - vertex 21.6367 -21.3703 -3 - endloop - endfacet - facet normal 0.538257 -0.842781 0 - outer loop - vertex 21.6367 -21.3703 -3 - vertex 23.0737 -20.4525 0 - vertex 21.6367 -21.3703 0 - endloop - endfacet - facet normal 0.538257 -0.842781 0 - outer loop - vertex 23.0737 -20.4525 0 - vertex 21.6367 -21.3703 -3 - vertex 23.0737 -20.4525 -3 - endloop - endfacet - facet normal 0.404347 -0.914606 0 - outer loop - vertex 23.0737 -20.4525 -3 - vertex 25.4359 -19.4082 0 - vertex 23.0737 -20.4525 0 - endloop - endfacet - facet normal 0.404347 -0.914606 0 - outer loop - vertex 25.4359 -19.4082 0 - vertex 23.0737 -20.4525 -3 - vertex 25.4359 -19.4082 -3 - endloop - endfacet - facet normal 0.182814 -0.983148 0 - outer loop - vertex 25.4359 -19.4082 -3 - vertex 26.5413 -19.2026 0 - vertex 25.4359 -19.4082 0 - endloop - endfacet - facet normal 0.182814 -0.983148 0 - outer loop - vertex 26.5413 -19.2026 0 - vertex 25.4359 -19.4082 -3 - vertex 26.5413 -19.2026 -3 - endloop - endfacet - facet normal 0.0452162 -0.998977 0 - outer loop - vertex 26.5413 -19.2026 -3 - vertex 27.8281 -19.1444 0 - vertex 26.5413 -19.2026 0 - endloop - endfacet - facet normal 0.0452162 -0.998977 0 - outer loop - vertex 27.8281 -19.1444 0 - vertex 26.5413 -19.2026 -3 - vertex 27.8281 -19.1444 -3 - endloop - endfacet - facet normal -0.0736221 -0.997286 0 - outer loop - vertex 27.8281 -19.1444 -3 - vertex 28.989 -19.2301 0 - vertex 27.8281 -19.1444 0 - endloop - endfacet - facet normal -0.0736221 -0.997286 -0 - outer loop - vertex 28.989 -19.2301 0 - vertex 27.8281 -19.1444 -3 - vertex 28.989 -19.2301 -3 - endloop - endfacet - facet normal -0.382628 0.923903 0 - outer loop - vertex 24.8153 -21.9586 -3 - vertex 23.7526 -22.3987 0 - vertex 24.8153 -21.9586 0 - endloop - endfacet - facet normal -0.382628 0.923903 0 - outer loop - vertex 23.7526 -22.3987 0 - vertex 24.8153 -21.9586 -3 - vertex 23.7526 -22.3987 -3 - endloop - endfacet - facet normal -0.656055 0.754713 0 - outer loop - vertex 23.7526 -22.3987 -3 - vertex 22.6861 -23.3258 0 - vertex 23.7526 -22.3987 0 - endloop - endfacet - facet normal -0.656055 0.754713 0 - outer loop - vertex 22.6861 -23.3258 0 - vertex 23.7526 -22.3987 -3 - vertex 22.6861 -23.3258 -3 - endloop - endfacet - facet normal -0.77183 0.635829 0 - outer loop - vertex 21.6183 -24.6221 -3 - vertex 22.6861 -23.3258 0 - vertex 22.6861 -23.3258 -3 - endloop - endfacet - facet normal -0.77183 0.635829 0 - outer loop - vertex 22.6861 -23.3258 0 - vertex 21.6183 -24.6221 -3 - vertex 21.6183 -24.6221 0 - endloop - endfacet - facet normal -0.0699516 -0.99755 0 - outer loop - vertex 21.6183 -24.6221 -3 - vertex 24.4233 -24.8188 0 - vertex 21.6183 -24.6221 0 - endloop - endfacet - facet normal -0.0699516 -0.99755 -0 - outer loop - vertex 24.4233 -24.8188 0 - vertex 21.6183 -24.6221 -3 - vertex 24.4233 -24.8188 -3 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex 24.4233 -24.8188 -3 - vertex 27.2283 -24.8188 0 - vertex 24.4233 -24.8188 0 - endloop - endfacet - facet normal 0 -1 -0 - outer loop - vertex 27.2283 -24.8188 0 - vertex 24.4233 -24.8188 -3 - vertex 27.2283 -24.8188 -3 - endloop - endfacet - facet normal 0.986418 -0.164252 0 - outer loop - vertex 27.2283 -24.8188 0 - vertex 27.3613 -24.0204 -3 - vertex 27.3613 -24.0204 0 - endloop - endfacet - facet normal 0.986418 -0.164252 0 - outer loop - vertex 27.3613 -24.0204 -3 - vertex 27.2283 -24.8188 0 - vertex 27.2283 -24.8188 -3 - endloop - endfacet - facet normal 0.999989 -0.00473466 0 - outer loop - vertex 27.3613 -24.0204 0 - vertex 27.3668 -22.8574 -3 - vertex 27.3668 -22.8574 0 - endloop - endfacet - facet normal 0.999989 -0.00473466 0 - outer loop - vertex 27.3668 -22.8574 -3 - vertex 27.3613 -24.0204 0 - vertex 27.3613 -24.0204 -3 - endloop - endfacet - facet normal 0.863473 0.504395 0 - outer loop - vertex 27.3668 -22.8574 0 - vertex 26.9354 -22.1189 -3 - vertex 26.9354 -22.1189 0 - endloop - endfacet - facet normal 0.863473 0.504395 0 - outer loop - vertex 26.9354 -22.1189 -3 - vertex 27.3668 -22.8574 0 - vertex 27.3668 -22.8574 -3 - endloop - endfacet - facet normal 0.334224 0.942494 -0 - outer loop - vertex 26.9354 -22.1189 -3 - vertex 26.0804 -21.8157 0 - vertex 26.9354 -22.1189 0 - endloop - endfacet - facet normal 0.334224 0.942494 0 - outer loop - vertex 26.0804 -21.8157 0 - vertex 26.9354 -22.1189 -3 - vertex 26.0804 -21.8157 -3 - endloop - endfacet - facet normal -0.112261 0.993679 0 - outer loop - vertex 26.0804 -21.8157 -3 - vertex 24.8153 -21.9586 0 - vertex 26.0804 -21.8157 0 - endloop - endfacet - facet normal -0.112261 0.993679 0 - outer loop - vertex 24.8153 -21.9586 0 - vertex 26.0804 -21.8157 -3 - vertex 24.8153 -21.9586 -3 - endloop - endfacet - facet normal -0.0126654 -0.99992 0 - outer loop - vertex -27.1868 -11.3523 -3 - vertex -17.7993 -11.4712 0 - vertex -27.1868 -11.3523 0 - endloop - endfacet - facet normal -0.0126654 -0.99992 -0 - outer loop - vertex -17.7993 -11.4712 0 - vertex -27.1868 -11.3523 -3 - vertex -17.7993 -11.4712 -3 - endloop - endfacet - facet normal -0.303355 -0.952878 0 - outer loop - vertex -17.7993 -11.4712 -3 - vertex -17.4385 -11.5861 0 - vertex -17.7993 -11.4712 0 - endloop - endfacet - facet normal -0.303355 -0.952878 -0 - outer loop - vertex -17.4385 -11.5861 0 - vertex -17.7993 -11.4712 -3 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal -0.999899 0.0142188 0 - outer loop - vertex -17.4456 -12.0833 -3 - vertex -17.4385 -11.5861 0 - vertex -17.4385 -11.5861 -3 - endloop - endfacet - facet normal -0.999899 0.0142188 0 - outer loop - vertex -17.4385 -11.5861 0 - vertex -17.4456 -12.0833 -3 - vertex -17.4456 -12.0833 0 - endloop - endfacet - facet normal -0.933863 0.35763 0 - outer loop - vertex -19.3785 -17.1305 -3 - vertex -17.4456 -12.0833 0 - vertex -17.4456 -12.0833 -3 - endloop - endfacet - facet normal -0.933863 0.35763 0 - outer loop - vertex -17.4456 -12.0833 0 - vertex -19.3785 -17.1305 -3 - vertex -19.3785 -17.1305 0 - endloop - endfacet - facet normal -0.830148 0.557543 0 - outer loop - vertex -19.683 -17.584 -3 - vertex -19.3785 -17.1305 0 - vertex -19.3785 -17.1305 -3 - endloop - endfacet - facet normal -0.830148 0.557543 0 - outer loop - vertex -19.3785 -17.1305 0 - vertex -19.683 -17.584 -3 - vertex -19.683 -17.584 0 - endloop - endfacet - facet normal -0.617609 0.786485 0 - outer loop - vertex -19.683 -17.584 -3 - vertex -20.1126 -17.9213 0 - vertex -19.683 -17.584 0 - endloop - endfacet - facet normal -0.617609 0.786485 0 - outer loop - vertex -20.1126 -17.9213 0 - vertex -19.683 -17.584 -3 - vertex -20.1126 -17.9213 -3 - endloop - endfacet - facet normal -0.353642 0.935381 0 - outer loop - vertex -20.1126 -17.9213 -3 - vertex -20.6062 -18.108 0 - vertex -20.1126 -17.9213 0 - endloop - endfacet - facet normal -0.353642 0.935381 0 - outer loop - vertex -20.6062 -18.108 0 - vertex -20.1126 -17.9213 -3 - vertex -20.6062 -18.108 -3 - endloop - endfacet - facet normal -0.00259595 0.999997 0 - outer loop - vertex -20.6062 -18.108 -3 - vertex -21.1029 -18.1093 0 - vertex -20.6062 -18.108 0 - endloop - endfacet - facet normal -0.00259595 0.999997 0 - outer loop - vertex -21.1029 -18.1093 0 - vertex -20.6062 -18.108 -3 - vertex -21.1029 -18.1093 -3 - endloop - endfacet - facet normal 0.306009 0.952029 -0 - outer loop - vertex -21.1029 -18.1093 -3 - vertex -21.3898 -18.0171 0 - vertex -21.1029 -18.1093 0 - endloop - endfacet - facet normal 0.306009 0.952029 0 - outer loop - vertex -21.3898 -18.0171 0 - vertex -21.1029 -18.1093 -3 - vertex -21.3898 -18.0171 -3 - endloop - endfacet - facet normal 0.820593 0.571513 0 - outer loop - vertex -21.3898 -18.0171 0 - vertex -21.538 -17.8042 -3 - vertex -21.538 -17.8042 0 - endloop - endfacet - facet normal 0.820593 0.571513 0 - outer loop - vertex -21.538 -17.8042 -3 - vertex -21.3898 -18.0171 0 - vertex -21.3898 -18.0171 -3 - endloop - endfacet - facet normal 0.999415 0.0341969 0 - outer loop - vertex -21.538 -17.8042 0 - vertex -21.5846 -16.4428 -3 - vertex -21.5846 -16.4428 0 - endloop - endfacet - facet normal 0.999415 0.0341969 0 - outer loop - vertex -21.5846 -16.4428 -3 - vertex -21.538 -17.8042 0 - vertex -21.538 -17.8042 -3 - endloop - endfacet - facet normal 0.999208 0.039804 0 - outer loop - vertex -21.5846 -16.4428 0 - vertex -21.6401 -15.0493 -3 - vertex -21.6401 -15.0493 0 - endloop - endfacet - facet normal 0.999208 0.039804 0 - outer loop - vertex -21.6401 -15.0493 -3 - vertex -21.5846 -16.4428 0 - vertex -21.5846 -16.4428 -3 - endloop - endfacet - facet normal 0.85074 0.525587 0 - outer loop - vertex -21.6401 -15.0493 0 - vertex -21.8106 -14.7733 -3 - vertex -21.8106 -14.7733 0 - endloop - endfacet - facet normal 0.85074 0.525587 0 - outer loop - vertex -21.8106 -14.7733 -3 - vertex -21.6401 -15.0493 0 - vertex -21.6401 -15.0493 -3 - endloop - endfacet - facet normal 0.546243 0.837626 -0 - outer loop - vertex -21.8106 -14.7733 -3 - vertex -22.1413 -14.5577 0 - vertex -21.8106 -14.7733 0 - endloop - endfacet - facet normal 0.546243 0.837626 0 - outer loop - vertex -22.1413 -14.5577 0 - vertex -21.8106 -14.7733 -3 - vertex -22.1413 -14.5577 -3 - endloop - endfacet - facet normal 0.21941 0.975633 -0 - outer loop - vertex -22.1413 -14.5577 -3 - vertex -23.3419 -14.2877 0 - vertex -22.1413 -14.5577 0 - endloop - endfacet - facet normal 0.21941 0.975633 0 - outer loop - vertex -23.3419 -14.2877 0 - vertex -22.1413 -14.5577 -3 - vertex -23.3419 -14.2877 -3 - endloop - endfacet - facet normal 0.0439983 0.999032 -0 - outer loop - vertex -23.3419 -14.2877 -3 - vertex -26.1195 -14.1654 0 - vertex -23.3419 -14.2877 0 - endloop - endfacet - facet normal 0.0439983 0.999032 0 - outer loop - vertex -26.1195 -14.1654 0 - vertex -23.3419 -14.2877 -3 - vertex -26.1195 -14.1654 -3 - endloop - endfacet - facet normal -0.00734919 0.999973 0 - outer loop - vertex -26.1195 -14.1654 -3 - vertex -29.5608 -14.1906 0 - vertex -26.1195 -14.1654 0 - endloop - endfacet - facet normal -0.00734919 0.999973 0 - outer loop - vertex -29.5608 -14.1906 0 - vertex -26.1195 -14.1654 -3 - vertex -29.5608 -14.1906 -3 - endloop - endfacet - facet normal -0.196359 0.980532 0 - outer loop - vertex -29.5608 -14.1906 -3 - vertex -30.2116 -14.321 0 - vertex -29.5608 -14.1906 0 - endloop - endfacet - facet normal -0.196359 0.980532 0 - outer loop - vertex -30.2116 -14.321 0 - vertex -29.5608 -14.1906 -3 - vertex -30.2116 -14.321 -3 - endloop - endfacet - facet normal -0.792981 0.609246 0 - outer loop - vertex -30.3887 -14.5514 -3 - vertex -30.2116 -14.321 0 - vertex -30.2116 -14.321 -3 - endloop - endfacet - facet normal -0.792981 0.609246 0 - outer loop - vertex -30.2116 -14.321 0 - vertex -30.3887 -14.5514 -3 - vertex -30.3887 -14.5514 0 - endloop - endfacet - facet normal -0.912409 0.409279 0 - outer loop - vertex -30.8809 -15.6487 -3 - vertex -30.3887 -14.5514 0 - vertex -30.3887 -14.5514 -3 - endloop - endfacet - facet normal -0.912409 0.409279 0 - outer loop - vertex -30.3887 -14.5514 0 - vertex -30.8809 -15.6487 -3 - vertex -30.8809 -15.6487 0 - endloop - endfacet - facet normal -0.91465 0.404247 0 - outer loop - vertex -32.1593 -18.5412 -3 - vertex -30.8809 -15.6487 0 - vertex -30.8809 -15.6487 -3 - endloop - endfacet - facet normal -0.91465 0.404247 0 - outer loop - vertex -30.8809 -15.6487 0 - vertex -32.1593 -18.5412 -3 - vertex -32.1593 -18.5412 0 - endloop - endfacet - facet normal -0.929897 0.36782 0 - outer loop - vertex -33.3019 -21.4299 -3 - vertex -32.1593 -18.5412 0 - vertex -32.1593 -18.5412 -3 - endloop - endfacet - facet normal -0.929897 0.36782 0 - outer loop - vertex -32.1593 -18.5412 0 - vertex -33.3019 -21.4299 -3 - vertex -33.3019 -21.4299 0 - endloop - endfacet - facet normal -0.949218 0.314618 0 - outer loop - vertex -33.5147 -22.0719 -3 - vertex -33.3019 -21.4299 0 - vertex -33.3019 -21.4299 -3 - endloop - endfacet - facet normal -0.949218 0.314618 0 - outer loop - vertex -33.3019 -21.4299 0 - vertex -33.5147 -22.0719 -3 - vertex -33.5147 -22.0719 0 - endloop - endfacet - facet normal -0.877443 -0.47968 0 - outer loop - vertex -33.3295 -22.4108 -3 - vertex -33.5147 -22.0719 0 - vertex -33.5147 -22.0719 -3 - endloop - endfacet - facet normal -0.877443 -0.47968 0 - outer loop - vertex -33.5147 -22.0719 0 - vertex -33.3295 -22.4108 -3 - vertex -33.3295 -22.4108 0 - endloop - endfacet - facet normal -0.175573 -0.984466 0 - outer loop - vertex -33.3295 -22.4108 -3 - vertex -32.5249 -22.5543 0 - vertex -33.3295 -22.4108 0 - endloop - endfacet - facet normal -0.175573 -0.984466 -0 - outer loop - vertex -32.5249 -22.5543 0 - vertex -33.3295 -22.4108 -3 - vertex -32.5249 -22.5543 -3 - endloop - endfacet - facet normal -0.0340039 -0.999422 0 - outer loop - vertex -32.5249 -22.5543 -3 - vertex -30.8797 -22.6102 0 - vertex -32.5249 -22.5543 0 - endloop - endfacet - facet normal -0.0340039 -0.999422 -0 - outer loop - vertex -30.8797 -22.6102 0 - vertex -32.5249 -22.5543 -3 - vertex -30.8797 -22.6102 -3 - endloop - endfacet - facet normal 0.0362533 -0.999343 0 - outer loop - vertex -30.8797 -22.6102 -3 - vertex -28.6031 -22.5277 0 - vertex -30.8797 -22.6102 0 - endloop - endfacet - facet normal 0.0362533 -0.999343 0 - outer loop - vertex -28.6031 -22.5277 0 - vertex -30.8797 -22.6102 -3 - vertex -28.6031 -22.5277 -3 - endloop - endfacet - facet normal 0.242378 -0.970182 0 - outer loop - vertex -28.6031 -22.5277 -3 - vertex -26.9351 -22.1109 0 - vertex -28.6031 -22.5277 0 - endloop - endfacet - facet normal 0.242378 -0.970182 0 - outer loop - vertex -26.9351 -22.1109 0 - vertex -28.6031 -22.5277 -3 - vertex -26.9351 -22.1109 -3 - endloop - endfacet - facet normal 0.555939 -0.831223 0 - outer loop - vertex -26.9351 -22.1109 -3 - vertex -25.7001 -21.2849 0 - vertex -26.9351 -22.1109 0 - endloop - endfacet - facet normal 0.555939 -0.831223 0 - outer loop - vertex -25.7001 -21.2849 0 - vertex -26.9351 -22.1109 -3 - vertex -25.7001 -21.2849 -3 - endloop - endfacet - facet normal 0.801538 -0.597944 0 - outer loop - vertex -25.7001 -21.2849 0 - vertex -24.7225 -19.9745 -3 - vertex -24.7225 -19.9745 0 - endloop - endfacet - facet normal 0.801538 -0.597944 0 - outer loop - vertex -24.7225 -19.9745 -3 - vertex -25.7001 -21.2849 0 - vertex -25.7001 -21.2849 -3 - endloop - endfacet - facet normal 0.817601 -0.575785 0 - outer loop - vertex -24.7225 -19.9745 0 - vertex -24.1111 -19.1062 -3 - vertex -24.1111 -19.1062 0 - endloop - endfacet - facet normal 0.817601 -0.575785 0 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -24.7225 -19.9745 0 - vertex -24.7225 -19.9745 -3 - endloop - endfacet - facet normal 0.293726 -0.95589 0 - outer loop - vertex -24.1111 -19.1062 -3 - vertex -23.4908 -18.9156 0 - vertex -24.1111 -19.1062 0 - endloop - endfacet - facet normal 0.293726 -0.95589 0 - outer loop - vertex -23.4908 -18.9156 0 - vertex -24.1111 -19.1062 -3 - vertex -23.4908 -18.9156 -3 - endloop - endfacet - facet normal -0.145773 -0.989318 0 - outer loop - vertex -23.4908 -18.9156 -3 - vertex -22.8641 -19.008 0 - vertex -23.4908 -18.9156 0 - endloop - endfacet - facet normal -0.145773 -0.989318 -0 - outer loop - vertex -22.8641 -19.008 0 - vertex -23.4908 -18.9156 -3 - vertex -22.8641 -19.008 -3 - endloop - endfacet - facet normal -0.802531 -0.59661 0 - outer loop - vertex -22.6057 -19.3555 -3 - vertex -22.8641 -19.008 0 - vertex -22.8641 -19.008 -3 - endloop - endfacet - facet normal -0.802531 -0.59661 0 - outer loop - vertex -22.8641 -19.008 0 - vertex -22.6057 -19.3555 -3 - vertex -22.6057 -19.3555 0 - endloop - endfacet - facet normal -0.991425 0.130676 0 - outer loop - vertex -22.6991 -20.0641 -3 - vertex -22.6057 -19.3555 0 - vertex -22.6057 -19.3555 -3 - endloop - endfacet - facet normal -0.991425 0.130676 0 - outer loop - vertex -22.6057 -19.3555 0 - vertex -22.6991 -20.0641 -3 - vertex -22.6991 -20.0641 0 - endloop - endfacet - facet normal -0.939482 0.342598 0 - outer loop - vertex -23.1278 -21.2395 -3 - vertex -22.6991 -20.0641 0 - vertex -22.6991 -20.0641 -3 - endloop - endfacet - facet normal -0.939482 0.342598 0 - outer loop - vertex -22.6991 -20.0641 0 - vertex -23.1278 -21.2395 -3 - vertex -23.1278 -21.2395 0 - endloop - endfacet - facet normal -0.926121 0.377226 0 - outer loop - vertex -24.4076 -24.3815 -3 - vertex -23.1278 -21.2395 0 - vertex -23.1278 -21.2395 -3 - endloop - endfacet - facet normal -0.926121 0.377226 0 - outer loop - vertex -23.1278 -21.2395 0 - vertex -24.4076 -24.3815 -3 - vertex -24.4076 -24.3815 0 - endloop - endfacet - facet normal -0.921607 0.388125 0 - outer loop - vertex -25.4741 -26.9141 -3 - vertex -24.4076 -24.3815 0 - vertex -24.4076 -24.3815 -3 - endloop - endfacet - facet normal -0.921607 0.388125 0 - outer loop - vertex -24.4076 -24.3815 0 - vertex -25.4741 -26.9141 -3 - vertex -25.4741 -26.9141 0 - endloop - endfacet - facet normal -0.886525 0.462682 0 - outer loop - vertex -26.2338 -28.3696 -3 - vertex -25.4741 -26.9141 0 - vertex -25.4741 -26.9141 -3 - endloop - endfacet - facet normal -0.886525 0.462682 0 - outer loop - vertex -25.4741 -26.9141 0 - vertex -26.2338 -28.3696 -3 - vertex -26.2338 -28.3696 0 - endloop - endfacet - facet normal -0.719187 0.694816 0 - outer loop - vertex -26.8752 -29.0336 -3 - vertex -26.2338 -28.3696 0 - vertex -26.2338 -28.3696 -3 - endloop - endfacet - facet normal -0.719187 0.694816 0 - outer loop - vertex -26.2338 -28.3696 0 - vertex -26.8752 -29.0336 -3 - vertex -26.8752 -29.0336 0 - endloop - endfacet - facet normal -0.216473 0.976289 0 - outer loop - vertex -26.8752 -29.0336 -3 - vertex -27.5872 -29.1914 0 - vertex -26.8752 -29.0336 0 - endloop - endfacet - facet normal -0.216473 0.976289 0 - outer loop - vertex -27.5872 -29.1914 0 - vertex -26.8752 -29.0336 -3 - vertex -27.5872 -29.1914 -3 - endloop - endfacet - facet normal 0.155401 0.987851 -0 - outer loop - vertex -27.5872 -29.1914 -3 - vertex -28.1878 -29.097 0 - vertex -27.5872 -29.1914 0 - endloop - endfacet - facet normal 0.155401 0.987851 0 - outer loop - vertex -28.1878 -29.097 0 - vertex -27.5872 -29.1914 -3 - vertex -28.1878 -29.097 -3 - endloop - endfacet - facet normal 0.99998 -0.00638056 0 - outer loop - vertex -28.1878 -29.097 0 - vertex -28.1838 -28.4809 -3 - vertex -28.1838 -28.4809 0 - endloop - endfacet - facet normal 0.99998 -0.00638056 0 - outer loop - vertex -28.1838 -28.4809 -3 - vertex -28.1878 -29.097 0 - vertex -28.1878 -29.097 -3 - endloop - endfacet - facet normal 0.992864 -0.119255 0 - outer loop - vertex -28.1838 -28.4809 0 - vertex -27.9105 -26.2055 -3 - vertex -27.9105 -26.2055 0 - endloop - endfacet - facet normal 0.992864 -0.119255 0 - outer loop - vertex -27.9105 -26.2055 -3 - vertex -28.1838 -28.4809 0 - vertex -28.1838 -28.4809 -3 - endloop - endfacet - facet normal 0.858031 0.513598 0 - outer loop - vertex -27.9105 -26.2055 0 - vertex -28.1036 -25.8829 -3 - vertex -28.1036 -25.8829 0 - endloop - endfacet - facet normal 0.858031 0.513598 0 - outer loop - vertex -28.1036 -25.8829 -3 - vertex -27.9105 -26.2055 0 - vertex -27.9105 -26.2055 -3 - endloop - endfacet - facet normal 0.343726 0.93907 -0 - outer loop - vertex -28.1036 -25.8829 -3 - vertex -28.5713 -25.7117 0 - vertex -28.1036 -25.8829 0 - endloop - endfacet - facet normal 0.343726 0.93907 0 - outer loop - vertex -28.5713 -25.7117 0 - vertex -28.1036 -25.8829 -3 - vertex -28.5713 -25.7117 -3 - endloop - endfacet - facet normal 0.0659122 0.997825 -0 - outer loop - vertex -28.5713 -25.7117 -3 - vertex -32.142 -25.4759 0 - vertex -28.5713 -25.7117 0 - endloop - endfacet - facet normal 0.0659122 0.997825 0 - outer loop - vertex -32.142 -25.4759 0 - vertex -28.5713 -25.7117 -3 - vertex -32.142 -25.4759 -3 - endloop - endfacet - facet normal 0.000432103 1 -0 - outer loop - vertex -32.142 -25.4759 -3 - vertex -34.9626 -25.4747 0 - vertex -32.142 -25.4759 0 - endloop - endfacet - facet normal 0.000432103 1 0 - outer loop - vertex -34.9626 -25.4747 0 - vertex -32.142 -25.4759 -3 - vertex -34.9626 -25.4747 -3 - endloop - endfacet - facet normal -0.910935 0.41255 0 - outer loop - vertex -35.4824 -26.6225 -3 - vertex -34.9626 -25.4747 0 - vertex -34.9626 -25.4747 -3 - endloop - endfacet - facet normal -0.910935 0.41255 0 - outer loop - vertex -34.9626 -25.4747 0 - vertex -35.4824 -26.6225 -3 - vertex -35.4824 -26.6225 0 - endloop - endfacet - facet normal -0.92531 0.379212 0 - outer loop - vertex -38.7331 -34.5543 -3 - vertex -35.4824 -26.6225 0 - vertex -35.4824 -26.6225 -3 - endloop - endfacet - facet normal -0.92531 0.379212 0 - outer loop - vertex -35.4824 -26.6225 0 - vertex -38.7331 -34.5543 -3 - vertex -38.7331 -34.5543 0 - endloop - endfacet - facet normal -0.798774 -0.601632 0 - outer loop - vertex -38.4261 -34.9619 -3 - vertex -38.7331 -34.5543 0 - vertex -38.7331 -34.5543 -3 - endloop - endfacet - facet normal -0.798774 -0.601632 0 - outer loop - vertex -38.7331 -34.5543 0 - vertex -38.4261 -34.9619 -3 - vertex -38.4261 -34.9619 0 - endloop - endfacet - facet normal -0.0360382 -0.99935 0 - outer loop - vertex -38.4261 -34.9619 -3 - vertex -35.0529 -35.0835 0 - vertex -38.4261 -34.9619 0 - endloop - endfacet - facet normal -0.0360382 -0.99935 -0 - outer loop - vertex -35.0529 -35.0835 0 - vertex -38.4261 -34.9619 -3 - vertex -35.0529 -35.0835 -3 - endloop - endfacet - facet normal 0.0608671 -0.998146 0 - outer loop - vertex -35.0529 -35.0835 -3 - vertex -31.3644 -34.8586 0 - vertex -35.0529 -35.0835 0 - endloop - endfacet - facet normal 0.0608671 -0.998146 0 - outer loop - vertex -31.3644 -34.8586 0 - vertex -35.0529 -35.0835 -3 - vertex -31.3644 -34.8586 -3 - endloop - endfacet - facet normal 0.33651 -0.94168 0 - outer loop - vertex -31.3644 -34.8586 -3 - vertex -30.2578 -34.4631 0 - vertex -31.3644 -34.8586 0 - endloop - endfacet - facet normal 0.33651 -0.94168 0 - outer loop - vertex -30.2578 -34.4631 0 - vertex -31.3644 -34.8586 -3 - vertex -30.2578 -34.4631 -3 - endloop - endfacet - facet normal 0.467106 -0.884201 0 - outer loop - vertex -30.2578 -34.4631 -3 - vertex -29.0969 -33.8499 0 - vertex -30.2578 -34.4631 0 - endloop - endfacet - facet normal 0.467106 -0.884201 0 - outer loop - vertex -29.0969 -33.8499 0 - vertex -30.2578 -34.4631 -3 - vertex -29.0969 -33.8499 -3 - endloop - endfacet - facet normal 0.610499 -0.792017 0 - outer loop - vertex -29.0969 -33.8499 -3 - vertex -26.8283 -32.1012 0 - vertex -29.0969 -33.8499 0 - endloop - endfacet - facet normal 0.610499 -0.792017 0 - outer loop - vertex -26.8283 -32.1012 0 - vertex -29.0969 -33.8499 -3 - vertex -26.8283 -32.1012 -3 - endloop - endfacet - facet normal 0.674561 -0.738219 0 - outer loop - vertex -26.8283 -32.1012 -3 - vertex -24.8569 -30.2998 0 - vertex -26.8283 -32.1012 0 - endloop - endfacet - facet normal 0.674561 -0.738219 0 - outer loop - vertex -24.8569 -30.2998 0 - vertex -26.8283 -32.1012 -3 - vertex -24.8569 -30.2998 -3 - endloop - endfacet - facet normal 0.349743 -0.936846 0 - outer loop - vertex -24.8569 -30.2998 -3 - vertex -24.4667 -30.1541 0 - vertex -24.8569 -30.2998 0 - endloop - endfacet - facet normal 0.349743 -0.936846 0 - outer loop - vertex -24.4667 -30.1541 0 - vertex -24.8569 -30.2998 -3 - vertex -24.4667 -30.1541 -3 - endloop - endfacet - facet normal -0.235678 -0.971831 0 - outer loop - vertex -24.4667 -30.1541 -3 - vertex -24.0819 -30.2475 0 - vertex -24.4667 -30.1541 0 - endloop - endfacet - facet normal -0.235678 -0.971831 -0 - outer loop - vertex -24.0819 -30.2475 0 - vertex -24.4667 -30.1541 -3 - vertex -24.0819 -30.2475 -3 - endloop - endfacet - facet normal -0.453986 -0.891009 0 - outer loop - vertex -24.0819 -30.2475 -3 - vertex -23.655 -30.4649 0 - vertex -24.0819 -30.2475 0 - endloop - endfacet - facet normal -0.453986 -0.891009 -0 - outer loop - vertex -23.655 -30.4649 0 - vertex -24.0819 -30.2475 -3 - vertex -23.655 -30.4649 -3 - endloop - endfacet - facet normal -0.79441 -0.607382 0 - outer loop - vertex -23.4462 -30.738 -3 - vertex -23.655 -30.4649 0 - vertex -23.655 -30.4649 -3 - endloop - endfacet - facet normal -0.79441 -0.607382 0 - outer loop - vertex -23.655 -30.4649 0 - vertex -23.4462 -30.738 -3 - vertex -23.4462 -30.738 0 - endloop - endfacet - facet normal -0.917968 0.396655 0 - outer loop - vertex -23.8149 -31.5911 -3 - vertex -23.4462 -30.738 0 - vertex -23.4462 -30.738 -3 - endloop - endfacet - facet normal -0.917968 0.396655 0 - outer loop - vertex -23.4462 -30.738 0 - vertex -23.8149 -31.5911 -3 - vertex -23.8149 -31.5911 0 - endloop - endfacet - facet normal -0.860785 0.508968 0 - outer loop - vertex -24.7956 -33.2498 -3 - vertex -23.8149 -31.5911 0 - vertex -23.8149 -31.5911 -3 - endloop - endfacet - facet normal -0.860785 0.508968 0 - outer loop - vertex -23.8149 -31.5911 0 - vertex -24.7956 -33.2498 -3 - vertex -24.7956 -33.2498 0 - endloop - endfacet - facet normal -0.825216 0.564817 0 - outer loop - vertex -27.2791 -36.8782 -3 - vertex -24.7956 -33.2498 0 - vertex -24.7956 -33.2498 -3 - endloop - endfacet - facet normal -0.825216 0.564817 0 - outer loop - vertex -24.7956 -33.2498 0 - vertex -27.2791 -36.8782 -3 - vertex -27.2791 -36.8782 0 - endloop - endfacet - facet normal -0.788011 0.615661 0 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -27.2791 -36.8782 0 - vertex -27.2791 -36.8782 -3 - endloop - endfacet - facet normal -0.788011 0.615661 0 - outer loop - vertex -27.2791 -36.8782 0 - vertex -28.2835 -38.1638 -3 - vertex -28.2835 -38.1638 0 - endloop - endfacet - facet normal 0.0033546 0.999994 -0 - outer loop - vertex -28.2835 -38.1638 -3 - vertex -37.632 -38.1325 0 - vertex -28.2835 -38.1638 0 - endloop - endfacet - facet normal 0.0033546 0.999994 0 - outer loop - vertex -37.632 -38.1325 0 - vertex -28.2835 -38.1638 -3 - vertex -37.632 -38.1325 -3 - endloop - endfacet - facet normal 0.018075 0.999837 -0 - outer loop - vertex -37.632 -38.1325 -3 - vertex -47.4646 -37.9547 0 - vertex -37.632 -38.1325 0 - endloop - endfacet - facet normal 0.018075 0.999837 0 - outer loop - vertex -47.4646 -37.9547 0 - vertex -37.632 -38.1325 -3 - vertex -47.4646 -37.9547 -3 - endloop - endfacet - facet normal 0.462743 0.886493 -0 - outer loop - vertex -47.4646 -37.9547 -3 - vertex -47.8161 -37.7712 0 - vertex -47.4646 -37.9547 0 - endloop - endfacet - facet normal 0.462743 0.886493 0 - outer loop - vertex -47.8161 -37.7712 0 - vertex -47.4646 -37.9547 -3 - vertex -47.8161 -37.7712 -3 - endloop - endfacet - facet normal 0.836367 0.54817 0 - outer loop - vertex -47.8161 -37.7712 0 - vertex -47.9875 -37.5097 -3 - vertex -47.9875 -37.5097 0 - endloop - endfacet - facet normal 0.836367 0.54817 0 - outer loop - vertex -47.9875 -37.5097 -3 - vertex -47.8161 -37.7712 0 - vertex -47.8161 -37.7712 -3 - endloop - endfacet - facet normal 0.980441 -0.196811 0 - outer loop - vertex -47.9875 -37.5097 0 - vertex -47.8577 -36.863 -3 - vertex -47.8577 -36.863 0 - endloop - endfacet - facet normal 0.980441 -0.196811 0 - outer loop - vertex -47.8577 -36.863 -3 - vertex -47.9875 -37.5097 0 - vertex -47.9875 -37.5097 -3 - endloop - endfacet - facet normal 0.695658 -0.718373 0 - outer loop - vertex -47.8577 -36.863 -3 - vertex -47.2102 -36.2359 0 - vertex -47.8577 -36.863 0 - endloop - endfacet - facet normal 0.695658 -0.718373 0 - outer loop - vertex -47.2102 -36.2359 0 - vertex -47.8577 -36.863 -3 - vertex -47.2102 -36.2359 -3 - endloop - endfacet - facet normal 0.350904 -0.936412 0 - outer loop - vertex -47.2102 -36.2359 -3 - vertex -46.1801 -35.8499 0 - vertex -47.2102 -36.2359 0 - endloop - endfacet - facet normal 0.350904 -0.936412 0 - outer loop - vertex -46.1801 -35.8499 0 - vertex -47.2102 -36.2359 -3 - vertex -46.1801 -35.8499 -3 - endloop - endfacet - facet normal 0.289535 -0.957168 0 - outer loop - vertex -46.1801 -35.8499 -3 - vertex -45.0296 -35.5019 0 - vertex -46.1801 -35.8499 0 - endloop - endfacet - facet normal 0.289535 -0.957168 0 - outer loop - vertex -45.0296 -35.5019 0 - vertex -46.1801 -35.8499 -3 - vertex -45.0296 -35.5019 -3 - endloop - endfacet - facet normal 0.646662 -0.762777 0 - outer loop - vertex -45.0296 -35.5019 -3 - vertex -44.1198 -34.7306 0 - vertex -45.0296 -35.5019 0 - endloop - endfacet - facet normal 0.646662 -0.762777 0 - outer loop - vertex -44.1198 -34.7306 0 - vertex -45.0296 -35.5019 -3 - vertex -44.1198 -34.7306 -3 - endloop - endfacet - facet normal 0.856952 -0.515395 0 - outer loop - vertex -44.1198 -34.7306 0 - vertex -43.2543 -33.2915 -3 - vertex -43.2543 -33.2915 0 - endloop - endfacet - facet normal 0.856952 -0.515395 0 - outer loop - vertex -43.2543 -33.2915 -3 - vertex -44.1198 -34.7306 0 - vertex -44.1198 -34.7306 -3 - endloop - endfacet - facet normal 0.917761 -0.397133 0 - outer loop - vertex -43.2543 -33.2915 0 - vertex -42.237 -30.9405 -3 - vertex -42.237 -30.9405 0 - endloop - endfacet - facet normal 0.917761 -0.397133 0 - outer loop - vertex -42.237 -30.9405 -3 - vertex -43.2543 -33.2915 0 - vertex -43.2543 -33.2915 -3 - endloop - endfacet - facet normal 0.919921 -0.392104 0 - outer loop - vertex -42.237 -30.9405 0 - vertex -39.9072 -25.4747 -3 - vertex -39.9072 -25.4747 0 - endloop - endfacet - facet normal 0.919921 -0.392104 0 - outer loop - vertex -39.9072 -25.4747 -3 - vertex -42.237 -30.9405 0 - vertex -42.237 -30.9405 -3 - endloop - endfacet - facet normal 0.92143 -0.388544 0 - outer loop - vertex -39.9072 -25.4747 0 - vertex -37.0548 -18.7102 -3 - vertex -37.0548 -18.7102 0 - endloop - endfacet - facet normal 0.92143 -0.388544 0 - outer loop - vertex -37.0548 -18.7102 -3 - vertex -39.9072 -25.4747 0 - vertex -39.9072 -25.4747 -3 - endloop - endfacet - facet normal 0.937894 -0.346922 0 - outer loop - vertex -37.0548 -18.7102 0 - vertex -35.6081 -14.799 -3 - vertex -35.6081 -14.799 0 - endloop - endfacet - facet normal 0.937894 -0.346922 0 - outer loop - vertex -35.6081 -14.799 -3 - vertex -37.0548 -18.7102 0 - vertex -37.0548 -18.7102 -3 - endloop - endfacet - facet normal 0.984127 -0.177463 0 - outer loop - vertex -35.6081 -14.799 0 - vertex -35.4871 -14.1281 -3 - vertex -35.4871 -14.1281 0 - endloop - endfacet - facet normal 0.984127 -0.177463 0 - outer loop - vertex -35.4871 -14.1281 -3 - vertex -35.6081 -14.799 0 - vertex -35.6081 -14.799 -3 - endloop - endfacet - facet normal 0.978316 0.207116 0 - outer loop - vertex -35.4871 -14.1281 0 - vertex -35.5739 -13.718 -3 - vertex -35.5739 -13.718 0 - endloop - endfacet - facet normal 0.978316 0.207116 0 - outer loop - vertex -35.5739 -13.718 -3 - vertex -35.4871 -14.1281 0 - vertex -35.4871 -14.1281 -3 - endloop - endfacet - facet normal 0.525627 0.850715 -0 - outer loop - vertex -35.5739 -13.718 -3 - vertex -35.9073 -13.512 0 - vertex -35.5739 -13.718 0 - endloop - endfacet - facet normal 0.525627 0.850715 0 - outer loop - vertex -35.9073 -13.512 0 - vertex -35.5739 -13.718 -3 - vertex -35.9073 -13.512 -3 - endloop - endfacet - facet normal 0.0947129 0.995505 -0 - outer loop - vertex -35.9073 -13.512 -3 - vertex -36.5262 -13.4531 0 - vertex -35.9073 -13.512 0 - endloop - endfacet - facet normal 0.0947129 0.995505 0 - outer loop - vertex -36.5262 -13.4531 0 - vertex -35.9073 -13.512 -3 - vertex -36.5262 -13.4531 -3 - endloop - endfacet - facet normal 0.264376 0.96442 -0 - outer loop - vertex -36.5262 -13.4531 -3 - vertex -37.2393 -13.2576 0 - vertex -36.5262 -13.4531 0 - endloop - endfacet - facet normal 0.264376 0.96442 0 - outer loop - vertex -37.2393 -13.2576 0 - vertex -36.5262 -13.4531 -3 - vertex -37.2393 -13.2576 -3 - endloop - endfacet - facet normal 0.846268 0.532757 0 - outer loop - vertex -37.2393 -13.2576 0 - vertex -37.5366 -12.7854 -3 - vertex -37.5366 -12.7854 0 - endloop - endfacet - facet normal 0.846268 0.532757 0 - outer loop - vertex -37.5366 -12.7854 -3 - vertex -37.2393 -13.2576 0 - vertex -37.2393 -13.2576 -3 - endloop - endfacet - facet normal 0.972647 -0.232287 0 - outer loop - vertex -37.5366 -12.7854 0 - vertex -37.3951 -12.1929 -3 - vertex -37.3951 -12.1929 0 - endloop - endfacet - facet normal 0.972647 -0.232287 0 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -37.5366 -12.7854 0 - vertex -37.5366 -12.7854 -3 - endloop - endfacet - facet normal 0.678121 -0.73495 0 - outer loop - vertex -37.3951 -12.1929 -3 - vertex -36.792 -11.6364 0 - vertex -37.3951 -12.1929 0 - endloop - endfacet - facet normal 0.678121 -0.73495 0 - outer loop - vertex -36.792 -11.6364 0 - vertex -37.3951 -12.1929 -3 - vertex -36.792 -11.6364 -3 - endloop - endfacet - facet normal 0.33489 -0.942257 0 - outer loop - vertex -36.792 -11.6364 -3 - vertex -36.1936 -11.4238 0 - vertex -36.792 -11.6364 0 - endloop - endfacet - facet normal 0.33489 -0.942257 0 - outer loop - vertex -36.1936 -11.4238 0 - vertex -36.792 -11.6364 -3 - vertex -36.1936 -11.4238 -3 - endloop - endfacet - facet normal 0.0784345 -0.996919 0 - outer loop - vertex -36.1936 -11.4238 -3 - vertex -34.87 -11.3196 0 - vertex -36.1936 -11.4238 0 - endloop - endfacet - facet normal 0.0784345 -0.996919 0 - outer loop - vertex -34.87 -11.3196 0 - vertex -36.1936 -11.4238 -3 - vertex -34.87 -11.3196 -3 - endloop - endfacet - facet normal -0.00425069 -0.999991 0 - outer loop - vertex -34.87 -11.3196 -3 - vertex -27.1868 -11.3523 0 - vertex -34.87 -11.3196 0 - endloop - endfacet - facet normal -0.00425069 -0.999991 -0 - outer loop - vertex -27.1868 -11.3523 0 - vertex -34.87 -11.3196 -3 - vertex -27.1868 -11.3523 -3 - endloop - endfacet - facet normal -0.778969 -0.627062 0 - outer loop - vertex -11.7016 -19.4898 -3 - vertex -11.9141 -19.2259 0 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal -0.778969 -0.627062 0 - outer loop - vertex -11.9141 -19.2259 0 - vertex -11.7016 -19.4898 -3 - vertex -11.7016 -19.4898 0 - endloop - endfacet - facet normal -0.998948 -0.0458637 0 - outer loop - vertex -11.6824 -19.9072 -3 - vertex -11.7016 -19.4898 0 - vertex -11.7016 -19.4898 -3 - endloop - endfacet - facet normal -0.998948 -0.0458637 0 - outer loop - vertex -11.7016 -19.4898 0 - vertex -11.6824 -19.9072 -3 - vertex -11.6824 -19.9072 0 - endloop - endfacet - facet normal -0.950718 0.310058 0 - outer loop - vertex -11.8627 -20.4599 -3 - vertex -11.6824 -19.9072 0 - vertex -11.6824 -19.9072 -3 - endloop - endfacet - facet normal -0.950718 0.310058 0 - outer loop - vertex -11.6824 -19.9072 0 - vertex -11.8627 -20.4599 -3 - vertex -11.8627 -20.4599 0 - endloop - endfacet - facet normal -0.958208 0.286074 0 - outer loop - vertex -12.0544 -21.102 -3 - vertex -11.8627 -20.4599 0 - vertex -11.8627 -20.4599 -3 - endloop - endfacet - facet normal -0.958208 0.286074 0 - outer loop - vertex -11.8627 -20.4599 0 - vertex -12.0544 -21.102 -3 - vertex -12.0544 -21.102 0 - endloop - endfacet - facet normal 0.484491 -0.874796 0 - outer loop - vertex -12.0544 -21.102 -3 - vertex -10.3766 -20.1728 0 - vertex -12.0544 -21.102 0 - endloop - endfacet - facet normal 0.484491 -0.874796 0 - outer loop - vertex -10.3766 -20.1728 0 - vertex -12.0544 -21.102 -3 - vertex -10.3766 -20.1728 -3 - endloop - endfacet - facet normal 0.447022 -0.894523 0 - outer loop - vertex -10.3766 -20.1728 -3 - vertex -8.78621 -19.378 0 - vertex -10.3766 -20.1728 0 - endloop - endfacet - facet normal 0.447022 -0.894523 0 - outer loop - vertex -8.78621 -19.378 0 - vertex -10.3766 -20.1728 -3 - vertex -8.78621 -19.378 -3 - endloop - endfacet - facet normal 0.124012 -0.992281 0 - outer loop - vertex -8.78621 -19.378 -3 - vertex -7.1272 -19.1706 0 - vertex -8.78621 -19.378 0 - endloop - endfacet - facet normal 0.124012 -0.992281 0 - outer loop - vertex -7.1272 -19.1706 0 - vertex -8.78621 -19.378 -3 - vertex -7.1272 -19.1706 -3 - endloop - endfacet - facet normal -0.019656 -0.999807 0 - outer loop - vertex -7.1272 -19.1706 -3 - vertex -5.57075 -19.2012 0 - vertex -7.1272 -19.1706 0 - endloop - endfacet - facet normal -0.019656 -0.999807 -0 - outer loop - vertex -5.57075 -19.2012 0 - vertex -7.1272 -19.1706 -3 - vertex -5.57075 -19.2012 -3 - endloop - endfacet - facet normal -0.587249 -0.809407 0 - outer loop - vertex -5.57075 -19.2012 -3 - vertex -4.70045 -19.8327 0 - vertex -5.57075 -19.2012 0 - endloop - endfacet - facet normal -0.587249 -0.809407 -0 - outer loop - vertex -4.70045 -19.8327 0 - vertex -5.57075 -19.2012 -3 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal -0.783181 -0.621793 0 - outer loop - vertex -4.06681 -20.6308 -3 - vertex -4.70045 -19.8327 0 - vertex -4.70045 -19.8327 -3 - endloop - endfacet - facet normal -0.783181 -0.621793 0 - outer loop - vertex -4.70045 -19.8327 0 - vertex -4.06681 -20.6308 -3 - vertex -4.06681 -20.6308 0 - endloop - endfacet - facet normal -0.979543 -0.201235 0 - outer loop - vertex -3.85646 -21.6547 -3 - vertex -4.06681 -20.6308 0 - vertex -4.06681 -20.6308 -3 - endloop - endfacet - facet normal -0.979543 -0.201235 0 - outer loop - vertex -4.06681 -20.6308 0 - vertex -3.85646 -21.6547 -3 - vertex -3.85646 -21.6547 0 - endloop - endfacet - facet normal -0.999487 0.0320236 0 - outer loop - vertex -3.89417 -22.8317 -3 - vertex -3.85646 -21.6547 0 - vertex -3.85646 -21.6547 -3 - endloop - endfacet - facet normal -0.999487 0.0320236 0 - outer loop - vertex -3.85646 -21.6547 0 - vertex -3.89417 -22.8317 -3 - vertex -3.89417 -22.8317 0 - endloop - endfacet - facet normal -0.971741 0.236051 0 - outer loop - vertex -4.26405 -24.3543 -3 - vertex -3.89417 -22.8317 0 - vertex -3.89417 -22.8317 -3 - endloop - endfacet - facet normal -0.971741 0.236051 0 - outer loop - vertex -3.89417 -22.8317 0 - vertex -4.26405 -24.3543 -3 - vertex -4.26405 -24.3543 0 - endloop - endfacet - facet normal -0.928824 0.370521 0 - outer loop - vertex -6.41168 -29.738 -3 - vertex -4.26405 -24.3543 0 - vertex -4.26405 -24.3543 -3 - endloop - endfacet - facet normal -0.928824 0.370521 0 - outer loop - vertex -4.26405 -24.3543 0 - vertex -6.41168 -29.738 -3 - vertex -6.41168 -29.738 0 - endloop - endfacet - facet normal -0.923854 0.382746 0 - outer loop - vertex -8.33648 -34.384 -3 - vertex -6.41168 -29.738 0 - vertex -6.41168 -29.738 -3 - endloop - endfacet - facet normal -0.923854 0.382746 0 - outer loop - vertex -6.41168 -29.738 0 - vertex -8.33648 -34.384 -3 - vertex -8.33648 -34.384 0 - endloop - endfacet - facet normal -0.969782 0.243973 0 - outer loop - vertex -8.56822 -35.3052 -3 - vertex -8.33648 -34.384 0 - vertex -8.33648 -34.384 -3 - endloop - endfacet - facet normal -0.969782 0.243973 0 - outer loop - vertex -8.33648 -34.384 0 - vertex -8.56822 -35.3052 -3 - vertex -8.56822 -35.3052 0 - endloop - endfacet - facet normal -0.990389 -0.138307 0 - outer loop - vertex -8.51129 -35.7129 -3 - vertex -8.56822 -35.3052 0 - vertex -8.56822 -35.3052 -3 - endloop - endfacet - facet normal -0.990389 -0.138307 0 - outer loop - vertex -8.56822 -35.3052 0 - vertex -8.51129 -35.7129 -3 - vertex -8.51129 -35.7129 0 - endloop - endfacet - facet normal -0.550548 -0.834803 0 - outer loop - vertex -8.51129 -35.7129 -3 - vertex -7.98605 -36.0592 0 - vertex -8.51129 -35.7129 0 - endloop - endfacet - facet normal -0.550548 -0.834803 -0 - outer loop - vertex -7.98605 -36.0592 0 - vertex -8.51129 -35.7129 -3 - vertex -7.98605 -36.0592 -3 - endloop - endfacet - facet normal -0.557022 -0.830498 0 - outer loop - vertex -7.98605 -36.0592 -3 - vertex -7.51249 -36.3769 0 - vertex -7.98605 -36.0592 0 - endloop - endfacet - facet normal -0.557022 -0.830498 -0 - outer loop - vertex -7.51249 -36.3769 0 - vertex -7.98605 -36.0592 -3 - vertex -7.51249 -36.3769 -3 - endloop - endfacet - facet normal -0.885076 -0.465446 0 - outer loop - vertex -7.31439 -36.7536 -3 - vertex -7.51249 -36.3769 0 - vertex -7.51249 -36.3769 -3 - endloop - endfacet - facet normal -0.885076 -0.465446 0 - outer loop - vertex -7.51249 -36.3769 0 - vertex -7.31439 -36.7536 -3 - vertex -7.31439 -36.7536 0 - endloop - endfacet - facet normal -0.984477 0.175514 0 - outer loop - vertex -7.3919 -37.1883 -3 - vertex -7.31439 -36.7536 0 - vertex -7.31439 -36.7536 -3 - endloop - endfacet - facet normal -0.984477 0.175514 0 - outer loop - vertex -7.31439 -36.7536 0 - vertex -7.3919 -37.1883 -3 - vertex -7.3919 -37.1883 0 - endloop - endfacet - facet normal -0.812154 0.583443 0 - outer loop - vertex -7.74517 -37.6801 -3 - vertex -7.3919 -37.1883 0 - vertex -7.3919 -37.1883 -3 - endloop - endfacet - facet normal -0.812154 0.583443 0 - outer loop - vertex -7.3919 -37.1883 0 - vertex -7.74517 -37.6801 -3 - vertex -7.74517 -37.6801 0 - endloop - endfacet - facet normal -0.622963 0.782251 0 - outer loop - vertex -7.74517 -37.6801 -3 - vertex -8.07933 -37.9462 0 - vertex -7.74517 -37.6801 0 - endloop - endfacet - facet normal -0.622963 0.782251 0 - outer loop - vertex -8.07933 -37.9462 0 - vertex -7.74517 -37.6801 -3 - vertex -8.07933 -37.9462 -3 - endloop - endfacet - facet normal -0.234375 0.972146 0 - outer loop - vertex -8.07933 -37.9462 -3 - vertex -8.66873 -38.0883 0 - vertex -8.07933 -37.9462 0 - endloop - endfacet - facet normal -0.234375 0.972146 0 - outer loop - vertex -8.66873 -38.0883 0 - vertex -8.07933 -37.9462 -3 - vertex -8.66873 -38.0883 -3 - endloop - endfacet - facet normal -0.02015 0.999797 0 - outer loop - vertex -8.66873 -38.0883 -3 - vertex -12.0013 -38.1555 0 - vertex -8.66873 -38.0883 0 - endloop - endfacet - facet normal -0.02015 0.999797 0 - outer loop - vertex -12.0013 -38.1555 0 - vertex -8.66873 -38.0883 -3 - vertex -12.0013 -38.1555 -3 - endloop - endfacet - facet normal 0.0188466 0.999822 -0 - outer loop - vertex -12.0013 -38.1555 -3 - vertex -15.3277 -38.0928 0 - vertex -12.0013 -38.1555 0 - endloop - endfacet - facet normal 0.0188466 0.999822 0 - outer loop - vertex -15.3277 -38.0928 0 - vertex -12.0013 -38.1555 -3 - vertex -15.3277 -38.0928 -3 - endloop - endfacet - facet normal 0.289952 0.957041 -0 - outer loop - vertex -15.3277 -38.0928 -3 - vertex -15.7983 -37.9502 0 - vertex -15.3277 -38.0928 0 - endloop - endfacet - facet normal 0.289952 0.957041 0 - outer loop - vertex -15.7983 -37.9502 0 - vertex -15.3277 -38.0928 -3 - vertex -15.7983 -37.9502 -3 - endloop - endfacet - facet normal 0.88368 0.468092 0 - outer loop - vertex -15.7983 -37.9502 0 - vertex -15.9433 -37.6764 -3 - vertex -15.9433 -37.6764 0 - endloop - endfacet - facet normal 0.88368 0.468092 0 - outer loop - vertex -15.9433 -37.6764 -3 - vertex -15.7983 -37.9502 0 - vertex -15.7983 -37.9502 -3 - endloop - endfacet - facet normal 0.999065 -0.0432335 0 - outer loop - vertex -15.9433 -37.6764 0 - vertex -15.9213 -37.1689 -3 - vertex -15.9213 -37.1689 0 - endloop - endfacet - facet normal 0.999065 -0.0432335 0 - outer loop - vertex -15.9213 -37.1689 -3 - vertex -15.9433 -37.6764 0 - vertex -15.9433 -37.6764 -3 - endloop - endfacet - facet normal 0.790901 -0.611944 0 - outer loop - vertex -15.9213 -37.1689 0 - vertex -15.4682 -36.5832 -3 - vertex -15.4682 -36.5832 0 - endloop - endfacet - facet normal 0.790901 -0.611944 0 - outer loop - vertex -15.4682 -36.5832 -3 - vertex -15.9213 -37.1689 0 - vertex -15.9213 -37.1689 -3 - endloop - endfacet - facet normal 0.603331 -0.797491 0 - outer loop - vertex -15.4682 -36.5832 -3 - vertex -14.8949 -36.1495 0 - vertex -15.4682 -36.5832 0 - endloop - endfacet - facet normal 0.603331 -0.797491 0 - outer loop - vertex -14.8949 -36.1495 0 - vertex -15.4682 -36.5832 -3 - vertex -14.8949 -36.1495 -3 - endloop - endfacet - facet normal 0.32682 -0.945087 0 - outer loop - vertex -14.8949 -36.1495 -3 - vertex -14.3732 -35.9691 0 - vertex -14.8949 -36.1495 0 - endloop - endfacet - facet normal 0.32682 -0.945087 0 - outer loop - vertex -14.3732 -35.9691 0 - vertex -14.8949 -36.1495 -3 - vertex -14.3732 -35.9691 -3 - endloop - endfacet - facet normal 0.336732 -0.941601 0 - outer loop - vertex -14.3732 -35.9691 -3 - vertex -13.7203 -35.7356 0 - vertex -14.3732 -35.9691 0 - endloop - endfacet - facet normal 0.336732 -0.941601 0 - outer loop - vertex -13.7203 -35.7356 0 - vertex -14.3732 -35.9691 -3 - vertex -13.7203 -35.7356 -3 - endloop - endfacet - facet normal 0.723518 -0.690305 0 - outer loop - vertex -13.7203 -35.7356 0 - vertex -13.0448 -35.0276 -3 - vertex -13.0448 -35.0276 0 - endloop - endfacet - facet normal 0.723518 -0.690305 0 - outer loop - vertex -13.0448 -35.0276 -3 - vertex -13.7203 -35.7356 0 - vertex -13.7203 -35.7356 -3 - endloop - endfacet - facet normal 0.860653 -0.509193 0 - outer loop - vertex -13.0448 -35.0276 0 - vertex -12.3385 -33.8339 -3 - vertex -12.3385 -33.8339 0 - endloop - endfacet - facet normal 0.860653 -0.509193 0 - outer loop - vertex -12.3385 -33.8339 -3 - vertex -13.0448 -35.0276 0 - vertex -13.0448 -35.0276 -3 - endloop - endfacet - facet normal 0.915054 -0.403331 0 - outer loop - vertex -12.3385 -33.8339 0 - vertex -11.5932 -32.143 -3 - vertex -11.5932 -32.143 0 - endloop - endfacet - facet normal 0.915054 -0.403331 0 - outer loop - vertex -11.5932 -32.143 -3 - vertex -12.3385 -33.8339 0 - vertex -12.3385 -33.8339 -3 - endloop - endfacet - facet normal 0.927789 -0.373105 0 - outer loop - vertex -11.5932 -32.143 0 - vertex -9.55184 -27.0667 -3 - vertex -9.55184 -27.0667 0 - endloop - endfacet - facet normal 0.927789 -0.373105 0 - outer loop - vertex -9.55184 -27.0667 -3 - vertex -11.5932 -32.143 0 - vertex -11.5932 -32.143 -3 - endloop - endfacet - facet normal 0.938245 -0.345971 0 - outer loop - vertex -9.55184 -27.0667 0 - vertex -8.72405 -24.8218 -3 - vertex -8.72405 -24.8218 0 - endloop - endfacet - facet normal 0.938245 -0.345971 0 - outer loop - vertex -8.72405 -24.8218 -3 - vertex -9.55184 -27.0667 0 - vertex -9.55184 -27.0667 -3 - endloop - endfacet - facet normal 0.983596 -0.180388 0 - outer loop - vertex -8.72405 -24.8218 0 - vertex -8.46819 -23.4267 -3 - vertex -8.46819 -23.4267 0 - endloop - endfacet - facet normal 0.983596 -0.180388 0 - outer loop - vertex -8.46819 -23.4267 -3 - vertex -8.72405 -24.8218 0 - vertex -8.72405 -24.8218 -3 - endloop - endfacet - facet normal 0.979467 0.201603 0 - outer loop - vertex -8.46819 -23.4267 0 - vertex -8.55624 -22.9989 -3 - vertex -8.55624 -22.9989 0 - endloop - endfacet - facet normal 0.979467 0.201603 0 - outer loop - vertex -8.55624 -22.9989 -3 - vertex -8.46819 -23.4267 0 - vertex -8.46819 -23.4267 -3 - endloop - endfacet - facet normal 0.762012 0.647563 0 - outer loop - vertex -8.55624 -22.9989 0 - vertex -8.78909 -22.7249 -3 - vertex -8.78909 -22.7249 0 - endloop - endfacet - facet normal 0.762012 0.647563 0 - outer loop - vertex -8.78909 -22.7249 -3 - vertex -8.55624 -22.9989 0 - vertex -8.55624 -22.9989 -3 - endloop - endfacet - facet normal 0.179668 0.983727 -0 - outer loop - vertex -8.78909 -22.7249 -3 - vertex -9.69161 -22.56 0 - vertex -8.78909 -22.7249 0 - endloop - endfacet - facet normal 0.179668 0.983727 0 - outer loop - vertex -9.69161 -22.56 0 - vertex -8.78909 -22.7249 -3 - vertex -9.69161 -22.56 -3 - endloop - endfacet - facet normal -0.191908 0.981413 0 - outer loop - vertex -9.69161 -22.56 -3 - vertex -10.5461 -22.7271 0 - vertex -9.69161 -22.56 0 - endloop - endfacet - facet normal -0.191908 0.981413 0 - outer loop - vertex -10.5461 -22.7271 0 - vertex -9.69161 -22.56 -3 - vertex -10.5461 -22.7271 -3 - endloop - endfacet - facet normal -0.380356 0.92484 0 - outer loop - vertex -10.5461 -22.7271 -3 - vertex -11.3967 -23.0769 0 - vertex -10.5461 -22.7271 0 - endloop - endfacet - facet normal -0.380356 0.92484 0 - outer loop - vertex -11.3967 -23.0769 0 - vertex -10.5461 -22.7271 -3 - vertex -11.3967 -23.0769 -3 - endloop - endfacet - facet normal -0.535069 0.844808 0 - outer loop - vertex -11.3967 -23.0769 -3 - vertex -12.4124 -23.7203 0 - vertex -11.3967 -23.0769 0 - endloop - endfacet - facet normal -0.535069 0.844808 0 - outer loop - vertex -12.4124 -23.7203 0 - vertex -11.3967 -23.0769 -3 - vertex -12.4124 -23.7203 -3 - endloop - endfacet - facet normal -0.673005 0.739638 0 - outer loop - vertex -12.4124 -23.7203 -3 - vertex -13.1427 -24.3848 0 - vertex -12.4124 -23.7203 0 - endloop - endfacet - facet normal -0.673005 0.739638 0 - outer loop - vertex -13.1427 -24.3848 0 - vertex -12.4124 -23.7203 -3 - vertex -13.1427 -24.3848 -3 - endloop - endfacet - facet normal -0.824808 0.565412 0 - outer loop - vertex -13.7062 -25.2068 -3 - vertex -13.1427 -24.3848 0 - vertex -13.1427 -24.3848 -3 - endloop - endfacet - facet normal -0.824808 0.565412 0 - outer loop - vertex -13.1427 -24.3848 0 - vertex -13.7062 -25.2068 -3 - vertex -13.7062 -25.2068 0 - endloop - endfacet - facet normal -0.907849 0.419297 0 - outer loop - vertex -14.2216 -26.3227 -3 - vertex -13.7062 -25.2068 0 - vertex -13.7062 -25.2068 -3 - endloop - endfacet - facet normal -0.907849 0.419297 0 - outer loop - vertex -13.7062 -25.2068 0 - vertex -14.2216 -26.3227 -3 - vertex -14.2216 -26.3227 0 - endloop - endfacet - facet normal -0.926196 0.377043 0 - outer loop - vertex -15.3894 -29.1914 -3 - vertex -14.2216 -26.3227 0 - vertex -14.2216 -26.3227 -3 - endloop - endfacet - facet normal -0.926196 0.377043 0 - outer loop - vertex -14.2216 -26.3227 0 - vertex -15.3894 -29.1914 -3 - vertex -15.3894 -29.1914 0 - endloop - endfacet - facet normal -0.925675 0.37832 0 - outer loop - vertex -16.8281 -32.7116 -3 - vertex -15.3894 -29.1914 0 - vertex -15.3894 -29.1914 -3 - endloop - endfacet - facet normal -0.925675 0.37832 0 - outer loop - vertex -15.3894 -29.1914 0 - vertex -16.8281 -32.7116 -3 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal -0.944728 0.327855 0 - outer loop - vertex -17.7285 -35.3062 -3 - vertex -16.8281 -32.7116 0 - vertex -16.8281 -32.7116 -3 - endloop - endfacet - facet normal -0.944728 0.327855 0 - outer loop - vertex -16.8281 -32.7116 0 - vertex -17.7285 -35.3062 -3 - vertex -17.7285 -35.3062 0 - endloop - endfacet - facet normal -0.998333 -0.0577213 0 - outer loop - vertex -17.6987 -35.8223 -3 - vertex -17.7285 -35.3062 0 - vertex -17.7285 -35.3062 -3 - endloop - endfacet - facet normal -0.998333 -0.0577213 0 - outer loop - vertex -17.7285 -35.3062 0 - vertex -17.6987 -35.8223 -3 - vertex -17.6987 -35.8223 0 - endloop - endfacet - facet normal -0.412173 -0.911106 0 - outer loop - vertex -17.6987 -35.8223 -3 - vertex -17.3742 -35.9691 0 - vertex -17.6987 -35.8223 0 - endloop - endfacet - facet normal -0.412173 -0.911106 -0 - outer loop - vertex -17.3742 -35.9691 0 - vertex -17.6987 -35.8223 -3 - vertex -17.3742 -35.9691 -3 - endloop - endfacet - facet normal -0.297585 -0.954695 0 - outer loop - vertex -17.3742 -35.9691 -3 - vertex -16.5846 -36.2152 0 - vertex -17.3742 -35.9691 0 - endloop - endfacet - facet normal -0.297585 -0.954695 -0 - outer loop - vertex -16.5846 -36.2152 0 - vertex -17.3742 -35.9691 -3 - vertex -16.5846 -36.2152 -3 - endloop - endfacet - facet normal -0.829044 -0.559183 0 - outer loop - vertex -16.2226 -36.752 -3 - vertex -16.5846 -36.2152 0 - vertex -16.5846 -36.2152 -3 - endloop - endfacet - facet normal -0.829044 -0.559183 0 - outer loop - vertex -16.5846 -36.2152 0 - vertex -16.2226 -36.752 -3 - vertex -16.2226 -36.752 0 - endloop - endfacet - facet normal -0.876406 0.481572 0 - outer loop - vertex -16.6989 -37.6188 -3 - vertex -16.2226 -36.752 0 - vertex -16.2226 -36.752 -3 - endloop - endfacet - facet normal -0.876406 0.481572 0 - outer loop - vertex -16.2226 -36.752 0 - vertex -16.6989 -37.6188 -3 - vertex -16.6989 -37.6188 0 - endloop - endfacet - facet normal -0.678562 0.734543 0 - outer loop - vertex -16.6989 -37.6188 -3 - vertex -17.033 -37.9274 0 - vertex -16.6989 -37.6188 0 - endloop - endfacet - facet normal -0.678562 0.734543 0 - outer loop - vertex -17.033 -37.9274 0 - vertex -16.6989 -37.6188 -3 - vertex -17.033 -37.9274 -3 - endloop - endfacet - facet normal -0.276188 0.961104 0 - outer loop - vertex -17.033 -37.9274 -3 - vertex -17.5781 -38.0841 0 - vertex -17.033 -37.9274 0 - endloop - endfacet - facet normal -0.276188 0.961104 0 - outer loop - vertex -17.5781 -38.0841 0 - vertex -17.033 -37.9274 -3 - vertex -17.5781 -38.0841 -3 - endloop - endfacet - facet normal -0.0141874 0.999899 0 - outer loop - vertex -17.5781 -38.0841 -3 - vertex -20.8226 -38.1301 0 - vertex -17.5781 -38.0841 0 - endloop - endfacet - facet normal -0.0141874 0.999899 0 - outer loop - vertex -20.8226 -38.1301 0 - vertex -17.5781 -38.0841 -3 - vertex -20.8226 -38.1301 -3 - endloop - endfacet - facet normal 0.0314237 0.999506 -0 - outer loop - vertex -20.8226 -38.1301 -3 - vertex -24.8096 -38.0047 0 - vertex -20.8226 -38.1301 0 - endloop - endfacet - facet normal 0.0314237 0.999506 0 - outer loop - vertex -24.8096 -38.0047 0 - vertex -20.8226 -38.1301 -3 - vertex -24.8096 -38.0047 -3 - endloop - endfacet - facet normal 0.544713 0.838623 -0 - outer loop - vertex -24.8096 -38.0047 -3 - vertex -25.0608 -37.8416 0 - vertex -24.8096 -38.0047 0 - endloop - endfacet - facet normal 0.544713 0.838623 0 - outer loop - vertex -25.0608 -37.8416 0 - vertex -24.8096 -38.0047 -3 - vertex -25.0608 -37.8416 -3 - endloop - endfacet - facet normal 0.940452 0.339927 0 - outer loop - vertex -25.0608 -37.8416 0 - vertex -25.157 -37.5754 -3 - vertex -25.157 -37.5754 0 - endloop - endfacet - facet normal 0.940452 0.339927 0 - outer loop - vertex -25.157 -37.5754 -3 - vertex -25.0608 -37.8416 0 - vertex -25.0608 -37.8416 -3 - endloop - endfacet - facet normal 0.964896 -0.262631 0 - outer loop - vertex -25.157 -37.5754 0 - vertex -24.9699 -36.888 -3 - vertex -24.9699 -36.888 0 - endloop - endfacet - facet normal 0.964896 -0.262631 0 - outer loop - vertex -24.9699 -36.888 -3 - vertex -25.157 -37.5754 0 - vertex -25.157 -37.5754 -3 - endloop - endfacet - facet normal 0.757107 -0.653291 0 - outer loop - vertex -24.9699 -36.888 0 - vertex -24.4194 -36.2501 -3 - vertex -24.4194 -36.2501 0 - endloop - endfacet - facet normal 0.757107 -0.653291 0 - outer loop - vertex -24.4194 -36.2501 -3 - vertex -24.9699 -36.888 0 - vertex -24.9699 -36.888 -3 - endloop - endfacet - facet normal 0.353851 -0.935302 0 - outer loop - vertex -24.4194 -36.2501 -3 - vertex -23.6767 -35.9691 0 - vertex -24.4194 -36.2501 0 - endloop - endfacet - facet normal 0.353851 -0.935302 0 - outer loop - vertex -23.6767 -35.9691 0 - vertex -24.4194 -36.2501 -3 - vertex -23.6767 -35.9691 -3 - endloop - endfacet - facet normal 0.158077 -0.987427 0 - outer loop - vertex -23.6767 -35.9691 -3 - vertex -23.007 -35.8619 0 - vertex -23.6767 -35.9691 0 - endloop - endfacet - facet normal 0.158077 -0.987427 0 - outer loop - vertex -23.007 -35.8619 0 - vertex -23.6767 -35.9691 -3 - vertex -23.007 -35.8619 -3 - endloop - endfacet - facet normal 0.593681 -0.8047 0 - outer loop - vertex -23.007 -35.8619 -3 - vertex -22.458 -35.4568 0 - vertex -23.007 -35.8619 0 - endloop - endfacet - facet normal 0.593681 -0.8047 0 - outer loop - vertex -22.458 -35.4568 0 - vertex -23.007 -35.8619 -3 - vertex -22.458 -35.4568 -3 - endloop - endfacet - facet normal 0.83817 -0.545409 0 - outer loop - vertex -22.458 -35.4568 0 - vertex -21.9191 -34.6287 -3 - vertex -21.9191 -34.6287 0 - endloop - endfacet - facet normal 0.83817 -0.545409 0 - outer loop - vertex -21.9191 -34.6287 -3 - vertex -22.458 -35.4568 0 - vertex -22.458 -35.4568 -3 - endloop - endfacet - facet normal 0.906982 -0.42117 0 - outer loop - vertex -21.9191 -34.6287 0 - vertex -21.28 -33.2523 -3 - vertex -21.28 -33.2523 0 - endloop - endfacet - facet normal 0.906982 -0.42117 0 - outer loop - vertex -21.28 -33.2523 -3 - vertex -21.9191 -34.6287 0 - vertex -21.9191 -34.6287 -3 - endloop - endfacet - facet normal 0.922958 -0.384901 0 - outer loop - vertex -21.28 -33.2523 0 - vertex -18.5428 -26.6889 -3 - vertex -18.5428 -26.6889 0 - endloop - endfacet - facet normal 0.922958 -0.384901 0 - outer loop - vertex -18.5428 -26.6889 -3 - vertex -21.28 -33.2523 0 - vertex -21.28 -33.2523 -3 - endloop - endfacet - facet normal 0.9376 -0.347716 0 - outer loop - vertex -18.5428 -26.6889 0 - vertex -17.299 -23.335 -3 - vertex -17.299 -23.335 0 - endloop - endfacet - facet normal 0.9376 -0.347716 0 - outer loop - vertex -17.299 -23.335 -3 - vertex -18.5428 -26.6889 0 - vertex -18.5428 -26.6889 -3 - endloop - endfacet - facet normal 0.99882 -0.0485627 0 - outer loop - vertex -17.299 -23.335 0 - vertex -17.2695 -22.7276 -3 - vertex -17.2695 -22.7276 0 - endloop - endfacet - facet normal 0.99882 -0.0485627 0 - outer loop - vertex -17.2695 -22.7276 -3 - vertex -17.299 -23.335 0 - vertex -17.299 -23.335 -3 - endloop - endfacet - facet normal 0.171081 0.985257 -0 - outer loop - vertex -17.2695 -22.7276 -3 - vertex -17.8179 -22.6324 0 - vertex -17.2695 -22.7276 0 - endloop - endfacet - facet normal 0.171081 0.985257 0 - outer loop - vertex -17.8179 -22.6324 0 - vertex -17.2695 -22.7276 -3 - vertex -17.8179 -22.6324 -3 - endloop - endfacet - facet normal 0.112446 0.993658 -0 - outer loop - vertex -17.8179 -22.6324 -3 - vertex -18.3659 -22.5704 0 - vertex -17.8179 -22.6324 0 - endloop - endfacet - facet normal 0.112446 0.993658 0 - outer loop - vertex -18.3659 -22.5704 0 - vertex -17.8179 -22.6324 -3 - vertex -18.3659 -22.5704 -3 - endloop - endfacet - facet normal 0.520189 0.854051 -0 - outer loop - vertex -18.3659 -22.5704 -3 - vertex -18.6886 -22.3738 0 - vertex -18.3659 -22.5704 0 - endloop - endfacet - facet normal 0.520189 0.854051 0 - outer loop - vertex -18.6886 -22.3738 0 - vertex -18.3659 -22.5704 -3 - vertex -18.6886 -22.3738 -3 - endloop - endfacet - facet normal 0.953226 0.302258 0 - outer loop - vertex -18.6886 -22.3738 0 - vertex -18.7986 -22.0269 -3 - vertex -18.7986 -22.0269 0 - endloop - endfacet - facet normal 0.953226 0.302258 0 - outer loop - vertex -18.7986 -22.0269 -3 - vertex -18.6886 -22.3738 0 - vertex -18.6886 -22.3738 -3 - endloop - endfacet - facet normal 0.984904 -0.1731 0 - outer loop - vertex -18.7986 -22.0269 0 - vertex -18.7084 -21.5139 -3 - vertex -18.7084 -21.5139 0 - endloop - endfacet - facet normal 0.984904 -0.1731 0 - outer loop - vertex -18.7084 -21.5139 -3 - vertex -18.7986 -22.0269 0 - vertex -18.7986 -22.0269 -3 - endloop - endfacet - facet normal 0.878265 -0.478174 0 - outer loop - vertex -18.7084 -21.5139 0 - vertex -18.4336 -21.0091 -3 - vertex -18.4336 -21.0091 0 - endloop - endfacet - facet normal 0.878265 -0.478174 0 - outer loop - vertex -18.4336 -21.0091 -3 - vertex -18.7084 -21.5139 0 - vertex -18.7084 -21.5139 -3 - endloop - endfacet - facet normal 0.488581 -0.872518 0 - outer loop - vertex -18.4336 -21.0091 -3 - vertex -17.9982 -20.7653 0 - vertex -18.4336 -21.0091 0 - endloop - endfacet - facet normal 0.488581 -0.872518 0 - outer loop - vertex -17.9982 -20.7653 0 - vertex -18.4336 -21.0091 -3 - vertex -17.9982 -20.7653 -3 - endloop - endfacet - facet normal 0.293895 -0.955838 0 - outer loop - vertex -17.9982 -20.7653 -3 - vertex -15.1553 -19.8912 0 - vertex -17.9982 -20.7653 0 - endloop - endfacet - facet normal 0.293895 -0.955838 0 - outer loop - vertex -15.1553 -19.8912 0 - vertex -17.9982 -20.7653 -3 - vertex -15.1553 -19.8912 -3 - endloop - endfacet - facet normal 0.257693 -0.966227 0 - outer loop - vertex -15.1553 -19.8912 -3 - vertex -12.3137 -19.1333 0 - vertex -15.1553 -19.8912 0 - endloop - endfacet - facet normal 0.257693 -0.966227 0 - outer loop - vertex -12.3137 -19.1333 0 - vertex -15.1553 -19.8912 -3 - vertex -12.3137 -19.1333 -3 - endloop - endfacet - facet normal -0.225556 -0.97423 0 - outer loop - vertex -12.3137 -19.1333 -3 - vertex -11.9141 -19.2259 0 - vertex -12.3137 -19.1333 0 - endloop - endfacet - facet normal -0.225556 -0.97423 -0 - outer loop - vertex -11.9141 -19.2259 0 - vertex -12.3137 -19.1333 -3 - vertex -11.9141 -19.2259 -3 - endloop - endfacet - facet normal -0.569265 -0.822154 0 - outer loop - vertex 47.2139 -19.2263 -3 - vertex 47.7267 -19.5813 0 - vertex 47.2139 -19.2263 0 - endloop - endfacet - facet normal -0.569265 -0.822154 -0 - outer loop - vertex 47.7267 -19.5813 0 - vertex 47.2139 -19.2263 -3 - vertex 47.7267 -19.5813 -3 - endloop - endfacet - facet normal -0.900824 -0.434184 0 - outer loop - vertex 47.9875 -20.1225 -3 - vertex 47.7267 -19.5813 0 - vertex 47.7267 -19.5813 -3 - endloop - endfacet - facet normal -0.900824 -0.434184 0 - outer loop - vertex 47.7267 -19.5813 0 - vertex 47.9875 -20.1225 -3 - vertex 47.9875 -20.1225 0 - endloop - endfacet - facet normal -0.988067 0.154023 0 - outer loop - vertex 47.8425 -21.0531 -3 - vertex 47.9875 -20.1225 0 - vertex 47.9875 -20.1225 -3 - endloop - endfacet - facet normal -0.988067 0.154023 0 - outer loop - vertex 47.9875 -20.1225 0 - vertex 47.8425 -21.0531 -3 - vertex 47.8425 -21.0531 0 - endloop - endfacet - facet normal -0.94959 0.313495 0 - outer loop - vertex 47.5305 -21.9981 -3 - vertex 47.8425 -21.0531 0 - vertex 47.8425 -21.0531 -3 - endloop - endfacet - facet normal -0.94959 0.313495 0 - outer loop - vertex 47.8425 -21.0531 0 - vertex 47.5305 -21.9981 -3 - vertex 47.5305 -21.9981 0 - endloop - endfacet - facet normal -0.87808 0.478513 0 - outer loop - vertex 47.0957 -22.796 -3 - vertex 47.5305 -21.9981 0 - vertex 47.5305 -21.9981 -3 - endloop - endfacet - facet normal -0.87808 0.478513 0 - outer loop - vertex 47.5305 -21.9981 0 - vertex 47.0957 -22.796 -3 - vertex 47.0957 -22.796 0 - endloop - endfacet - facet normal -0.768497 0.639853 0 - outer loop - vertex 46.5684 -23.4293 -3 - vertex 47.0957 -22.796 0 - vertex 47.0957 -22.796 -3 - endloop - endfacet - facet normal -0.768497 0.639853 0 - outer loop - vertex 47.0957 -22.796 0 - vertex 46.5684 -23.4293 -3 - vertex 46.5684 -23.4293 0 - endloop - endfacet - facet normal -0.607748 0.79413 0 - outer loop - vertex 46.5684 -23.4293 -3 - vertex 45.9792 -23.8802 0 - vertex 46.5684 -23.4293 0 - endloop - endfacet - facet normal -0.607748 0.79413 0 - outer loop - vertex 45.9792 -23.8802 0 - vertex 46.5684 -23.4293 -3 - vertex 45.9792 -23.8802 -3 - endloop - endfacet - facet normal -0.374765 0.92712 0 - outer loop - vertex 45.9792 -23.8802 -3 - vertex 45.3585 -24.1311 0 - vertex 45.9792 -23.8802 0 - endloop - endfacet - facet normal -0.374765 0.92712 0 - outer loop - vertex 45.3585 -24.1311 0 - vertex 45.9792 -23.8802 -3 - vertex 45.3585 -24.1311 -3 - endloop - endfacet - facet normal -0.0533306 0.998577 0 - outer loop - vertex 45.3585 -24.1311 -3 - vertex 44.7368 -24.1643 0 - vertex 45.3585 -24.1311 0 - endloop - endfacet - facet normal -0.0533306 0.998577 0 - outer loop - vertex 44.7368 -24.1643 0 - vertex 45.3585 -24.1311 -3 - vertex 44.7368 -24.1643 -3 - endloop - endfacet - facet normal 0.323025 0.94639 -0 - outer loop - vertex 44.7368 -24.1643 -3 - vertex 44.1445 -23.9621 0 - vertex 44.7368 -24.1643 0 - endloop - endfacet - facet normal 0.323025 0.94639 0 - outer loop - vertex 44.1445 -23.9621 0 - vertex 44.7368 -24.1643 -3 - vertex 44.1445 -23.9621 -3 - endloop - endfacet - facet normal 0.649875 0.760041 -0 - outer loop - vertex 44.1445 -23.9621 -3 - vertex 43.6122 -23.5069 0 - vertex 44.1445 -23.9621 0 - endloop - endfacet - facet normal 0.649875 0.760041 0 - outer loop - vertex 43.6122 -23.5069 0 - vertex 44.1445 -23.9621 -3 - vertex 43.6122 -23.5069 -3 - endloop - endfacet - facet normal 0.613628 0.789596 -0 - outer loop - vertex 43.6122 -23.5069 -3 - vertex 42.7682 -22.851 0 - vertex 43.6122 -23.5069 0 - endloop - endfacet - facet normal 0.613628 0.789596 0 - outer loop - vertex 42.7682 -22.851 0 - vertex 43.6122 -23.5069 -3 - vertex 42.7682 -22.851 -3 - endloop - endfacet - facet normal -0.589043 0.808102 0 - outer loop - vertex 42.7682 -22.851 -3 - vertex 41.2986 -23.9223 0 - vertex 42.7682 -22.851 0 - endloop - endfacet - facet normal -0.589043 0.808102 0 - outer loop - vertex 41.2986 -23.9223 0 - vertex 42.7682 -22.851 -3 - vertex 41.2986 -23.9223 -3 - endloop - endfacet - facet normal -0.701303 0.712864 0 - outer loop - vertex 41.2986 -23.9223 -3 - vertex 40.5923 -24.6171 0 - vertex 41.2986 -23.9223 0 - endloop - endfacet - facet normal -0.701303 0.712864 0 - outer loop - vertex 40.5923 -24.6171 0 - vertex 41.2986 -23.9223 -3 - vertex 40.5923 -24.6171 -3 - endloop - endfacet - facet normal -0.831353 0.555744 0 - outer loop - vertex 40.0289 -25.46 -3 - vertex 40.5923 -24.6171 0 - vertex 40.5923 -24.6171 -3 - endloop - endfacet - facet normal -0.831353 0.555744 0 - outer loop - vertex 40.5923 -24.6171 0 - vertex 40.0289 -25.46 -3 - vertex 40.0289 -25.46 0 - endloop - endfacet - facet normal -0.918395 0.395664 0 - outer loop - vertex 38.2188 -29.6614 -3 - vertex 40.0289 -25.46 0 - vertex 40.0289 -25.46 -3 - endloop - endfacet - facet normal -0.918395 0.395664 0 - outer loop - vertex 40.0289 -25.46 0 - vertex 38.2188 -29.6614 -3 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal -0.932877 0.360196 0 - outer loop - vertex 36.8272 -33.2656 -3 - vertex 38.2188 -29.6614 0 - vertex 38.2188 -29.6614 -3 - endloop - endfacet - facet normal -0.932877 0.360196 0 - outer loop - vertex 38.2188 -29.6614 0 - vertex 36.8272 -33.2656 -3 - vertex 36.8272 -33.2656 0 - endloop - endfacet - facet normal -0.959728 0.28093 0 - outer loop - vertex 36.2918 -35.0946 -3 - vertex 36.8272 -33.2656 0 - vertex 36.8272 -33.2656 -3 - endloop - endfacet - facet normal -0.959728 0.28093 0 - outer loop - vertex 36.8272 -33.2656 0 - vertex 36.2918 -35.0946 -3 - vertex 36.2918 -35.0946 0 - endloop - endfacet - facet normal -0.988492 -0.151276 0 - outer loop - vertex 36.3972 -35.7834 -3 - vertex 36.2918 -35.0946 0 - vertex 36.2918 -35.0946 -3 - endloop - endfacet - facet normal -0.988492 -0.151276 0 - outer loop - vertex 36.2918 -35.0946 0 - vertex 36.3972 -35.7834 -3 - vertex 36.3972 -35.7834 0 - endloop - endfacet - facet normal -0.329373 -0.9442 0 - outer loop - vertex 36.3972 -35.7834 -3 - vertex 37.1913 -36.0604 0 - vertex 36.3972 -35.7834 0 - endloop - endfacet - facet normal -0.329373 -0.9442 -0 - outer loop - vertex 37.1913 -36.0604 0 - vertex 36.3972 -35.7834 -3 - vertex 37.1913 -36.0604 -3 - endloop - endfacet - facet normal -0.323821 -0.946118 0 - outer loop - vertex 37.1913 -36.0604 -3 - vertex 37.9618 -36.3241 0 - vertex 37.1913 -36.0604 0 - endloop - endfacet - facet normal -0.323821 -0.946118 -0 - outer loop - vertex 37.9618 -36.3241 0 - vertex 37.1913 -36.0604 -3 - vertex 37.9618 -36.3241 -3 - endloop - endfacet - facet normal -0.960551 -0.278105 0 - outer loop - vertex 38.113 -36.8464 -3 - vertex 37.9618 -36.3241 0 - vertex 37.9618 -36.3241 -3 - endloop - endfacet - facet normal -0.960551 -0.278105 0 - outer loop - vertex 37.9618 -36.3241 0 - vertex 38.113 -36.8464 -3 - vertex 38.113 -36.8464 0 - endloop - endfacet - facet normal -0.986742 0.162295 0 - outer loop - vertex 37.9939 -37.5705 -3 - vertex 38.113 -36.8464 0 - vertex 38.113 -36.8464 -3 - endloop - endfacet - facet normal -0.986742 0.162295 0 - outer loop - vertex 38.113 -36.8464 0 - vertex 37.9939 -37.5705 -3 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal -0.539022 0.842292 0 - outer loop - vertex 37.9939 -37.5705 -3 - vertex 37.381 -37.9628 0 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal -0.539022 0.842292 0 - outer loop - vertex 37.381 -37.9628 0 - vertex 37.9939 -37.5705 -3 - vertex 37.381 -37.9628 -3 - endloop - endfacet - facet normal -0.10763 0.994191 0 - outer loop - vertex 37.381 -37.9628 -3 - vertex 35.8907 -38.1241 0 - vertex 37.381 -37.9628 0 - endloop - endfacet - facet normal -0.10763 0.994191 0 - outer loop - vertex 35.8907 -38.1241 0 - vertex 37.381 -37.9628 -3 - vertex 35.8907 -38.1241 -3 - endloop - endfacet - facet normal -0.0113945 0.999935 0 - outer loop - vertex 35.8907 -38.1241 -3 - vertex 33.1396 -38.1555 0 - vertex 35.8907 -38.1241 0 - endloop - endfacet - facet normal -0.0113945 0.999935 0 - outer loop - vertex 33.1396 -38.1555 0 - vertex 35.8907 -38.1241 -3 - vertex 33.1396 -38.1555 -3 - endloop - endfacet - facet normal 0.0181925 0.999835 -0 - outer loop - vertex 33.1396 -38.1555 -3 - vertex 29.8074 -38.0948 0 - vertex 33.1396 -38.1555 0 - endloop - endfacet - facet normal 0.0181925 0.999835 0 - outer loop - vertex 29.8074 -38.0948 0 - vertex 33.1396 -38.1555 -3 - vertex 29.8074 -38.0948 -3 - endloop - endfacet - facet normal 0.170719 0.98532 -0 - outer loop - vertex 29.8074 -38.0948 -3 - vertex 28.6431 -37.8931 0 - vertex 29.8074 -38.0948 0 - endloop - endfacet - facet normal 0.170719 0.98532 0 - outer loop - vertex 28.6431 -37.8931 0 - vertex 29.8074 -38.0948 -3 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0.913427 0.407002 0 - outer loop - vertex 28.6431 -37.8931 0 - vertex 28.4102 -37.3704 -3 - vertex 28.4102 -37.3704 0 - endloop - endfacet - facet normal 0.913427 0.407002 0 - outer loop - vertex 28.4102 -37.3704 -3 - vertex 28.6431 -37.8931 0 - vertex 28.6431 -37.8931 -3 - endloop - endfacet - facet normal 0.965523 -0.260316 0 - outer loop - vertex 28.4102 -37.3704 0 - vertex 28.553 -36.8405 -3 - vertex 28.553 -36.8405 0 - endloop - endfacet - facet normal 0.965523 -0.260316 0 - outer loop - vertex 28.553 -36.8405 -3 - vertex 28.4102 -37.3704 0 - vertex 28.4102 -37.3704 -3 - endloop - endfacet - facet normal 0.697974 -0.716123 0 - outer loop - vertex 28.553 -36.8405 -3 - vertex 29.0223 -36.3831 0 - vertex 28.553 -36.8405 0 - endloop - endfacet - facet normal 0.697974 -0.716123 0 - outer loop - vertex 29.0223 -36.3831 0 - vertex 28.553 -36.8405 -3 - vertex 29.0223 -36.3831 -3 - endloop - endfacet - facet normal 0.378617 -0.925554 0 - outer loop - vertex 29.0223 -36.3831 -3 - vertex 29.7686 -36.0779 0 - vertex 29.0223 -36.3831 0 - endloop - endfacet - facet normal 0.378617 -0.925554 0 - outer loop - vertex 29.7686 -36.0779 0 - vertex 29.0223 -36.3831 -3 - vertex 29.7686 -36.0779 -3 - endloop - endfacet - facet normal 0.28314 -0.959079 0 - outer loop - vertex 29.7686 -36.0779 -3 - vertex 30.8837 -35.7486 0 - vertex 29.7686 -36.0779 0 - endloop - endfacet - facet normal 0.28314 -0.959079 0 - outer loop - vertex 30.8837 -35.7486 0 - vertex 29.7686 -36.0779 -3 - vertex 30.8837 -35.7486 -3 - endloop - endfacet - facet normal 0.670445 -0.741959 0 - outer loop - vertex 30.8837 -35.7486 -3 - vertex 31.6707 -35.0376 0 - vertex 30.8837 -35.7486 0 - endloop - endfacet - facet normal 0.670445 -0.741959 0 - outer loop - vertex 31.6707 -35.0376 0 - vertex 30.8837 -35.7486 -3 - vertex 31.6707 -35.0376 -3 - endloop - endfacet - facet normal 0.889774 -0.456402 0 - outer loop - vertex 31.6707 -35.0376 0 - vertex 32.5255 -33.371 -3 - vertex 32.5255 -33.371 0 - endloop - endfacet - facet normal 0.889774 -0.456402 0 - outer loop - vertex 32.5255 -33.371 -3 - vertex 31.6707 -35.0376 0 - vertex 31.6707 -35.0376 -3 - endloop - endfacet - facet normal 0.924374 -0.381489 0 - outer loop - vertex 32.5255 -33.371 0 - vertex 33.8444 -30.1753 -3 - vertex 33.8444 -30.1753 0 - endloop - endfacet - facet normal 0.924374 -0.381489 0 - outer loop - vertex 33.8444 -30.1753 -3 - vertex 32.5255 -33.371 0 - vertex 32.5255 -33.371 -3 - endloop - endfacet - facet normal 0.926524 -0.376236 0 - outer loop - vertex 33.8444 -30.1753 0 - vertex 35.3305 -26.5156 -3 - vertex 35.3305 -26.5156 0 - endloop - endfacet - facet normal 0.926524 -0.376236 0 - outer loop - vertex 35.3305 -26.5156 -3 - vertex 33.8444 -30.1753 0 - vertex 33.8444 -30.1753 -3 - endloop - endfacet - facet normal 0.946541 -0.322585 0 - outer loop - vertex 35.3305 -26.5156 0 - vertex 36.2859 -23.7121 -3 - vertex 36.2859 -23.7121 0 - endloop - endfacet - facet normal 0.946541 -0.322585 0 - outer loop - vertex 36.2859 -23.7121 -3 - vertex 35.3305 -26.5156 0 - vertex 35.3305 -26.5156 -3 - endloop - endfacet - facet normal 0.99651 -0.0834774 0 - outer loop - vertex 36.2859 -23.7121 0 - vertex 36.3422 -23.0402 -3 - vertex 36.3422 -23.0402 0 - endloop - endfacet - facet normal 0.99651 -0.0834774 0 - outer loop - vertex 36.3422 -23.0402 -3 - vertex 36.2859 -23.7121 0 - vertex 36.2859 -23.7121 -3 - endloop - endfacet - facet normal 0.457043 0.889445 -0 - outer loop - vertex 36.3422 -23.0402 -3 - vertex 36.104 -22.9178 0 - vertex 36.3422 -23.0402 0 - endloop - endfacet - facet normal 0.457043 0.889445 0 - outer loop - vertex 36.104 -22.9178 0 - vertex 36.3422 -23.0402 -3 - vertex 36.104 -22.9178 -3 - endloop - endfacet - facet normal -0.010303 0.999947 0 - outer loop - vertex 36.104 -22.9178 -3 - vertex 35.2001 -22.9271 0 - vertex 36.104 -22.9178 0 - endloop - endfacet - facet normal -0.010303 0.999947 0 - outer loop - vertex 35.2001 -22.9271 0 - vertex 36.104 -22.9178 -3 - vertex 35.2001 -22.9271 -3 - endloop - endfacet - facet normal 0.419058 0.907959 -0 - outer loop - vertex 35.2001 -22.9271 -3 - vertex 34.7441 -22.7166 0 - vertex 35.2001 -22.9271 0 - endloop - endfacet - facet normal 0.419058 0.907959 0 - outer loop - vertex 34.7441 -22.7166 0 - vertex 35.2001 -22.9271 -3 - vertex 34.7441 -22.7166 -3 - endloop - endfacet - facet normal 0.959742 0.280882 0 - outer loop - vertex 34.7441 -22.7166 0 - vertex 34.62 -22.2927 -3 - vertex 34.62 -22.2927 0 - endloop - endfacet - facet normal 0.959742 0.280882 0 - outer loop - vertex 34.62 -22.2927 -3 - vertex 34.7441 -22.7166 0 - vertex 34.7441 -22.7166 -3 - endloop - endfacet - facet normal 0.94057 -0.3396 0 - outer loop - vertex 34.62 -22.2927 0 - vertex 34.9156 -21.474 -3 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal 0.94057 -0.3396 0 - outer loop - vertex 34.9156 -21.474 -3 - vertex 34.62 -22.2927 0 - vertex 34.62 -22.2927 -3 - endloop - endfacet - facet normal 0.664894 -0.746938 0 - outer loop - vertex 34.9156 -21.474 -3 - vertex 35.2187 -21.2043 0 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal 0.664894 -0.746938 0 - outer loop - vertex 35.2187 -21.2043 0 - vertex 34.9156 -21.474 -3 - vertex 35.2187 -21.2043 -3 - endloop - endfacet - facet normal 0.282474 -0.959275 0 - outer loop - vertex 35.2187 -21.2043 -3 - vertex 35.5661 -21.102 0 - vertex 35.2187 -21.2043 0 - endloop - endfacet - facet normal 0.282474 -0.959275 0 - outer loop - vertex 35.5661 -21.102 0 - vertex 35.2187 -21.2043 -3 - vertex 35.5661 -21.102 -3 - endloop - endfacet - facet normal 0.319916 -0.947446 0 - outer loop - vertex 35.5661 -21.102 -3 - vertex 38.4798 -20.1181 0 - vertex 35.5661 -21.102 0 - endloop - endfacet - facet normal 0.319916 -0.947446 0 - outer loop - vertex 38.4798 -20.1181 0 - vertex 35.5661 -21.102 -3 - vertex 38.4798 -20.1181 -3 - endloop - endfacet - facet normal 0.306814 -0.951769 0 - outer loop - vertex 38.4798 -20.1181 -3 - vertex 41.5319 -19.1343 0 - vertex 38.4798 -20.1181 0 - endloop - endfacet - facet normal 0.306814 -0.951769 0 - outer loop - vertex 41.5319 -19.1343 0 - vertex 38.4798 -20.1181 -3 - vertex 41.5319 -19.1343 -3 - endloop - endfacet - facet normal -0.240332 -0.970691 0 - outer loop - vertex 41.5319 -19.1343 -3 - vertex 41.8934 -19.2238 0 - vertex 41.5319 -19.1343 0 - endloop - endfacet - facet normal -0.240332 -0.970691 -0 - outer loop - vertex 41.8934 -19.2238 0 - vertex 41.5319 -19.1343 -3 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal -0.766739 -0.641959 0 - outer loop - vertex 42.1032 -19.4743 -3 - vertex 41.8934 -19.2238 0 - vertex 41.8934 -19.2238 -3 - endloop - endfacet - facet normal -0.766739 -0.641959 0 - outer loop - vertex 41.8934 -19.2238 0 - vertex 42.1032 -19.4743 -3 - vertex 42.1032 -19.4743 0 - endloop - endfacet - facet normal -0.995926 0.090175 0 - outer loop - vertex 42.0238 -20.3507 -3 - vertex 42.1032 -19.4743 0 - vertex 42.1032 -19.4743 -3 - endloop - endfacet - facet normal -0.995926 0.090175 0 - outer loop - vertex 42.1032 -19.4743 0 - vertex 42.0238 -20.3507 -3 - vertex 42.0238 -20.3507 0 - endloop - endfacet - facet normal -0.949137 0.314864 0 - outer loop - vertex 41.8981 -20.7296 -3 - vertex 42.0238 -20.3507 0 - vertex 42.0238 -20.3507 -3 - endloop - endfacet - facet normal -0.949137 0.314864 0 - outer loop - vertex 42.0238 -20.3507 0 - vertex 41.8981 -20.7296 -3 - vertex 41.8981 -20.7296 0 - endloop - endfacet - facet normal -0.846258 -0.532773 0 - outer loop - vertex 41.971 -20.8453 -3 - vertex 41.8981 -20.7296 0 - vertex 41.8981 -20.7296 -3 - endloop - endfacet - facet normal -0.846258 -0.532773 0 - outer loop - vertex 41.8981 -20.7296 0 - vertex 41.971 -20.8453 -3 - vertex 41.971 -20.8453 0 - endloop - endfacet - facet normal 0.512131 -0.858907 0 - outer loop - vertex 41.971 -20.8453 -3 - vertex 42.943 -20.2657 0 - vertex 41.971 -20.8453 0 - endloop - endfacet - facet normal 0.512131 -0.858907 0 - outer loop - vertex 42.943 -20.2657 0 - vertex 41.971 -20.8453 -3 - vertex 42.943 -20.2657 -3 - endloop - endfacet - facet normal 0.474768 -0.880111 0 - outer loop - vertex 42.943 -20.2657 -3 - vertex 44.5909 -19.3768 0 - vertex 42.943 -20.2657 0 - endloop - endfacet - facet normal 0.474768 -0.880111 0 - outer loop - vertex 44.5909 -19.3768 0 - vertex 42.943 -20.2657 -3 - vertex 44.5909 -19.3768 -3 - endloop - endfacet - facet normal 0.143592 -0.989637 0 - outer loop - vertex 44.5909 -19.3768 -3 - vertex 46.2623 -19.1343 0 - vertex 44.5909 -19.3768 0 - endloop - endfacet - facet normal 0.143592 -0.989637 0 - outer loop - vertex 46.2623 -19.1343 0 - vertex 44.5909 -19.3768 -3 - vertex 46.2623 -19.1343 -3 - endloop - endfacet - facet normal -0.096262 -0.995356 0 - outer loop - vertex 46.2623 -19.1343 -3 - vertex 47.2139 -19.2263 0 - vertex 46.2623 -19.1343 0 - endloop - endfacet - facet normal -0.096262 -0.995356 -0 - outer loop - vertex 47.2139 -19.2263 0 - vertex 46.2623 -19.1343 -3 - vertex 47.2139 -19.2263 -3 - endloop - endfacet - facet normal -0.989139 0.146981 0 - outer loop - vertex 5.19939 38.083 -3 - vertex 5.25321 38.4452 0 - vertex 5.25321 38.4452 -3 - endloop - endfacet - facet normal -0.989139 0.146981 0 - outer loop - vertex 5.25321 38.4452 0 - vertex 5.19939 38.083 -3 - vertex 5.19939 38.083 0 - endloop - endfacet - facet normal -0.909259 0.41623 0 - outer loop - vertex 4.72188 37.0399 -3 - vertex 5.19939 38.083 0 - vertex 5.19939 38.083 -3 - endloop - endfacet - facet normal -0.909259 0.41623 0 - outer loop - vertex 5.19939 38.083 0 - vertex 4.72188 37.0399 -3 - vertex 4.72188 37.0399 0 - endloop - endfacet - facet normal -0.923768 0.382952 0 - outer loop - vertex 4.30515 36.0346 -3 - vertex 4.72188 37.0399 0 - vertex 4.72188 37.0399 -3 - endloop - endfacet - facet normal -0.923768 0.382952 0 - outer loop - vertex 4.72188 37.0399 0 - vertex 4.30515 36.0346 -3 - vertex 4.30515 36.0346 0 - endloop - endfacet - facet normal -0.970112 0.242658 0 - outer loop - vertex 3.93589 34.5584 -3 - vertex 4.30515 36.0346 0 - vertex 4.30515 36.0346 -3 - endloop - endfacet - facet normal -0.970112 0.242658 0 - outer loop - vertex 4.30515 36.0346 0 - vertex 3.93589 34.5584 -3 - vertex 3.93589 34.5584 0 - endloop - endfacet - facet normal -0.993642 0.112587 0 - outer loop - vertex 3.57109 31.3388 -3 - vertex 3.93589 34.5584 0 - vertex 3.93589 34.5584 -3 - endloop - endfacet - facet normal -0.993642 0.112587 0 - outer loop - vertex 3.93589 34.5584 0 - vertex 3.57109 31.3388 -3 - vertex 3.57109 31.3388 0 - endloop - endfacet - facet normal -0.99786 -0.0653884 0 - outer loop - vertex 3.67763 29.7129 -3 - vertex 3.57109 31.3388 0 - vertex 3.57109 31.3388 -3 - endloop - endfacet - facet normal -0.99786 -0.0653884 0 - outer loop - vertex 3.57109 31.3388 0 - vertex 3.67763 29.7129 -3 - vertex 3.67763 29.7129 0 - endloop - endfacet - facet normal -0.893644 -0.448776 0 - outer loop - vertex 4.3138 28.4461 -3 - vertex 3.67763 29.7129 0 - vertex 3.67763 29.7129 -3 - endloop - endfacet - facet normal -0.893644 -0.448776 0 - outer loop - vertex 3.67763 29.7129 0 - vertex 4.3138 28.4461 -3 - vertex 4.3138 28.4461 0 - endloop - endfacet - facet normal -0.787428 -0.616407 0 - outer loop - vertex 5.72413 26.6445 -3 - vertex 4.3138 28.4461 0 - vertex 4.3138 28.4461 -3 - endloop - endfacet - facet normal -0.787428 -0.616407 0 - outer loop - vertex 4.3138 28.4461 0 - vertex 5.72413 26.6445 -3 - vertex 5.72413 26.6445 0 - endloop - endfacet - facet normal -0.565537 -0.824723 0 - outer loop - vertex 5.72413 26.6445 -3 - vertex 6.4022 26.1795 0 - vertex 5.72413 26.6445 0 - endloop - endfacet - facet normal -0.565537 -0.824723 -0 - outer loop - vertex 6.4022 26.1795 0 - vertex 5.72413 26.6445 -3 - vertex 6.4022 26.1795 -3 - endloop - endfacet - facet normal -0.296038 -0.955176 0 - outer loop - vertex 6.4022 26.1795 -3 - vertex 7.11433 25.9588 0 - vertex 6.4022 26.1795 0 - endloop - endfacet - facet normal -0.296038 -0.955176 -0 - outer loop - vertex 7.11433 25.9588 0 - vertex 6.4022 26.1795 -3 - vertex 7.11433 25.9588 -3 - endloop - endfacet - facet normal -0.249452 -0.968387 0 - outer loop - vertex 7.11433 25.9588 -3 - vertex 7.91411 25.7528 0 - vertex 7.11433 25.9588 0 - endloop - endfacet - facet normal -0.249452 -0.968387 -0 - outer loop - vertex 7.91411 25.7528 0 - vertex 7.11433 25.9588 -3 - vertex 7.91411 25.7528 -3 - endloop - endfacet - facet normal -0.590139 -0.807301 0 - outer loop - vertex 7.91411 25.7528 -3 - vertex 8.51885 25.3107 0 - vertex 7.91411 25.7528 0 - endloop - endfacet - facet normal -0.590139 -0.807301 -0 - outer loop - vertex 8.51885 25.3107 0 - vertex 7.91411 25.7528 -3 - vertex 8.51885 25.3107 -3 - endloop - endfacet - facet normal -0.834337 -0.551255 0 - outer loop - vertex 9.07032 24.476 -3 - vertex 8.51885 25.3107 0 - vertex 8.51885 25.3107 -3 - endloop - endfacet - facet normal -0.834337 -0.551255 0 - outer loop - vertex 8.51885 25.3107 0 - vertex 9.07032 24.476 -3 - vertex 9.07032 24.476 0 - endloop - endfacet - facet normal -0.907633 -0.419764 0 - outer loop - vertex 9.71033 23.0922 -3 - vertex 9.07032 24.476 0 - vertex 9.07032 24.476 -3 - endloop - endfacet - facet normal -0.907633 -0.419764 0 - outer loop - vertex 9.07032 24.476 0 - vertex 9.71033 23.0922 -3 - vertex 9.71033 23.0922 0 - endloop - endfacet - facet normal -0.895482 -0.445097 0 - outer loop - vertex 10.9729 20.5521 -3 - vertex 9.71033 23.0922 0 - vertex 9.71033 23.0922 -3 - endloop - endfacet - facet normal -0.895482 -0.445097 0 - outer loop - vertex 9.71033 23.0922 0 - vertex 10.9729 20.5521 -3 - vertex 10.9729 20.5521 0 - endloop - endfacet - facet normal -0.741992 -0.670408 0 - outer loop - vertex 12.6982 18.6425 -3 - vertex 10.9729 20.5521 0 - vertex 10.9729 20.5521 -3 - endloop - endfacet - facet normal -0.741992 -0.670408 0 - outer loop - vertex 10.9729 20.5521 0 - vertex 12.6982 18.6425 -3 - vertex 12.6982 18.6425 0 - endloop - endfacet - facet normal -0.66692 -0.745129 0 - outer loop - vertex 12.6982 18.6425 -3 - vertex 13.99 17.4864 0 - vertex 12.6982 18.6425 0 - endloop - endfacet - facet normal -0.66692 -0.745129 -0 - outer loop - vertex 13.99 17.4864 0 - vertex 12.6982 18.6425 -3 - vertex 13.99 17.4864 -3 - endloop - endfacet - facet normal -0.579406 -0.815039 0 - outer loop - vertex 13.99 17.4864 -3 - vertex 15.2045 16.623 0 - vertex 13.99 17.4864 0 - endloop - endfacet - facet normal -0.579406 -0.815039 -0 - outer loop - vertex 15.2045 16.623 0 - vertex 13.99 17.4864 -3 - vertex 15.2045 16.623 -3 - endloop - endfacet - facet normal -0.462357 -0.886694 0 - outer loop - vertex 15.2045 16.623 -3 - vertex 16.5954 15.8977 0 - vertex 15.2045 16.623 0 - endloop - endfacet - facet normal -0.462357 -0.886694 -0 - outer loop - vertex 16.5954 15.8977 0 - vertex 15.2045 16.623 -3 - vertex 16.5954 15.8977 -3 - endloop - endfacet - facet normal -0.377272 -0.926103 0 - outer loop - vertex 16.5954 15.8977 -3 - vertex 18.4164 15.1559 0 - vertex 16.5954 15.8977 0 - endloop - endfacet - facet normal -0.377272 -0.926103 -0 - outer loop - vertex 18.4164 15.1559 0 - vertex 16.5954 15.8977 -3 - vertex 18.4164 15.1559 -3 - endloop - endfacet - facet normal -0.305414 -0.95222 0 - outer loop - vertex 18.4164 15.1559 -3 - vertex 20.0668 14.6265 0 - vertex 18.4164 15.1559 0 - endloop - endfacet - facet normal -0.305414 -0.95222 -0 - outer loop - vertex 20.0668 14.6265 0 - vertex 18.4164 15.1559 -3 - vertex 20.0668 14.6265 -3 - endloop - endfacet - facet normal 0.198377 -0.980126 0 - outer loop - vertex 20.0668 14.6265 -3 - vertex 21.1653 14.8489 0 - vertex 20.0668 14.6265 0 - endloop - endfacet - facet normal 0.198377 -0.980126 0 - outer loop - vertex 21.1653 14.8489 0 - vertex 20.0668 14.6265 -3 - vertex 21.1653 14.8489 -3 - endloop - endfacet - facet normal 0.403705 -0.914889 0 - outer loop - vertex 21.1653 14.8489 -3 - vertex 23.3802 15.8262 0 - vertex 21.1653 14.8489 0 - endloop - endfacet - facet normal 0.403705 -0.914889 0 - outer loop - vertex 23.3802 15.8262 0 - vertex 21.1653 14.8489 -3 - vertex 23.3802 15.8262 -3 - endloop - endfacet - facet normal 0.513821 -0.857898 0 - outer loop - vertex 23.3802 15.8262 -3 - vertex 24.7931 16.6725 0 - vertex 23.3802 15.8262 0 - endloop - endfacet - facet normal 0.513821 -0.857898 0 - outer loop - vertex 24.7931 16.6725 0 - vertex 23.3802 15.8262 -3 - vertex 24.7931 16.6725 -3 - endloop - endfacet - facet normal 0.988574 0.150735 0 - outer loop - vertex 24.7931 16.6725 0 - vertex 24.7174 17.1695 -3 - vertex 24.7174 17.1695 0 - endloop - endfacet - facet normal 0.988574 0.150735 0 - outer loop - vertex 24.7174 17.1695 -3 - vertex 24.7931 16.6725 0 - vertex 24.7931 16.6725 -3 - endloop - endfacet - facet normal 0.409608 0.912261 -0 - outer loop - vertex 24.7174 17.1695 -3 - vertex 24.1542 17.4223 0 - vertex 24.7174 17.1695 0 - endloop - endfacet - facet normal 0.409608 0.912261 0 - outer loop - vertex 24.1542 17.4223 0 - vertex 24.7174 17.1695 -3 - vertex 24.1542 17.4223 -3 - endloop - endfacet - facet normal 0.049214 0.998788 -0 - outer loop - vertex 24.1542 17.4223 -3 - vertex 22.547 17.5015 0 - vertex 24.1542 17.4223 0 - endloop - endfacet - facet normal 0.049214 0.998788 0 - outer loop - vertex 22.547 17.5015 0 - vertex 24.1542 17.4223 -3 - vertex 22.547 17.5015 -3 - endloop - endfacet - facet normal 0.0234404 0.999725 -0 - outer loop - vertex 22.547 17.5015 -3 - vertex 20.2159 17.5562 0 - vertex 22.547 17.5015 0 - endloop - endfacet - facet normal 0.0234404 0.999725 0 - outer loop - vertex 20.2159 17.5562 0 - vertex 22.547 17.5015 -3 - vertex 20.2159 17.5562 -3 - endloop - endfacet - facet normal 0.471751 0.881732 -0 - outer loop - vertex 20.2159 17.5562 -3 - vertex 19.8437 17.7553 0 - vertex 20.2159 17.5562 0 - endloop - endfacet - facet normal 0.471751 0.881732 0 - outer loop - vertex 19.8437 17.7553 0 - vertex 20.2159 17.5562 -3 - vertex 19.8437 17.7553 -3 - endloop - endfacet - facet normal 0.853692 0.520778 0 - outer loop - vertex 19.8437 17.7553 0 - vertex 19.5351 18.2611 -3 - vertex 19.5351 18.2611 0 - endloop - endfacet - facet normal 0.853692 0.520778 0 - outer loop - vertex 19.5351 18.2611 -3 - vertex 19.8437 17.7553 0 - vertex 19.8437 17.7553 -3 - endloop - endfacet - facet normal 0.975799 0.21867 0 - outer loop - vertex 19.5351 18.2611 0 - vertex 19.0948 20.2262 -3 - vertex 19.0948 20.2262 0 - endloop - endfacet - facet normal 0.975799 0.21867 0 - outer loop - vertex 19.0948 20.2262 -3 - vertex 19.5351 18.2611 0 - vertex 19.5351 18.2611 -3 - endloop - endfacet - facet normal 0.973279 0.229626 0 - outer loop - vertex 19.0948 20.2262 0 - vertex 18.6529 22.0992 -3 - vertex 18.6529 22.0992 0 - endloop - endfacet - facet normal 0.973279 0.229626 0 - outer loop - vertex 18.6529 22.0992 -3 - vertex 19.0948 20.2262 0 - vertex 19.0948 20.2262 -3 - endloop - endfacet - facet normal 0.439505 0.89824 -0 - outer loop - vertex 18.6529 22.0992 -3 - vertex 17.155 22.8321 0 - vertex 18.6529 22.0992 0 - endloop - endfacet - facet normal 0.439505 0.89824 0 - outer loop - vertex 17.155 22.8321 0 - vertex 18.6529 22.0992 -3 - vertex 17.155 22.8321 -3 - endloop - endfacet - facet normal 0.375086 0.92699 -0 - outer loop - vertex 17.155 22.8321 -3 - vertex 15.5055 23.4995 0 - vertex 17.155 22.8321 0 - endloop - endfacet - facet normal 0.375086 0.92699 0 - outer loop - vertex 15.5055 23.4995 0 - vertex 17.155 22.8321 -3 - vertex 15.5055 23.4995 -3 - endloop - endfacet - facet normal 0.401684 0.915778 -0 - outer loop - vertex 15.5055 23.4995 -3 - vertex 14.0164 24.1527 0 - vertex 15.5055 23.4995 0 - endloop - endfacet - facet normal 0.401684 0.915778 0 - outer loop - vertex 14.0164 24.1527 0 - vertex 15.5055 23.4995 -3 - vertex 14.0164 24.1527 -3 - endloop - endfacet - facet normal 0.516309 0.856402 -0 - outer loop - vertex 14.0164 24.1527 -3 - vertex 13.0733 24.7212 0 - vertex 14.0164 24.1527 0 - endloop - endfacet - facet normal 0.516309 0.856402 0 - outer loop - vertex 13.0733 24.7212 0 - vertex 14.0164 24.1527 -3 - vertex 13.0733 24.7212 -3 - endloop - endfacet - facet normal 0.678054 0.735012 -0 - outer loop - vertex 13.0733 24.7212 -3 - vertex 12.1975 25.5292 0 - vertex 13.0733 24.7212 0 - endloop - endfacet - facet normal 0.678054 0.735012 0 - outer loop - vertex 12.1975 25.5292 0 - vertex 13.0733 24.7212 -3 - vertex 12.1975 25.5292 -3 - endloop - endfacet - facet normal 0.798708 0.601719 0 - outer loop - vertex 12.1975 25.5292 0 - vertex 11.5037 26.4501 -3 - vertex 11.5037 26.4501 0 - endloop - endfacet - facet normal 0.798708 0.601719 0 - outer loop - vertex 11.5037 26.4501 -3 - vertex 12.1975 25.5292 0 - vertex 12.1975 25.5292 -3 - endloop - endfacet - facet normal 0.916155 0.400824 0 - outer loop - vertex 11.5037 26.4501 0 - vertex 11.1066 27.3577 -3 - vertex 11.1066 27.3577 0 - endloop - endfacet - facet normal 0.916155 0.400824 0 - outer loop - vertex 11.1066 27.3577 -3 - vertex 11.5037 26.4501 0 - vertex 11.5037 26.4501 -3 - endloop - endfacet - facet normal 0.997988 0.0634007 0 - outer loop - vertex 11.1066 27.3577 0 - vertex 11.0411 28.3898 -3 - vertex 11.0411 28.3898 0 - endloop - endfacet - facet normal 0.997988 0.0634007 0 - outer loop - vertex 11.0411 28.3898 -3 - vertex 11.1066 27.3577 0 - vertex 11.1066 27.3577 -3 - endloop - endfacet - facet normal 0.985212 -0.171342 0 - outer loop - vertex 11.0411 28.3898 0 - vertex 11.2319 29.4873 -3 - vertex 11.2319 29.4873 0 - endloop - endfacet - facet normal 0.985212 -0.171342 0 - outer loop - vertex 11.2319 29.4873 -3 - vertex 11.0411 28.3898 0 - vertex 11.0411 28.3898 -3 - endloop - endfacet - facet normal 0.92237 -0.386308 0 - outer loop - vertex 11.2319 29.4873 0 - vertex 11.5971 30.3591 -3 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal 0.92237 -0.386308 0 - outer loop - vertex 11.5971 30.3591 -3 - vertex 11.2319 29.4873 0 - vertex 11.2319 29.4873 -3 - endloop - endfacet - facet normal 0.613523 -0.789677 0 - outer loop - vertex 11.5971 30.3591 -3 - vertex 12.0544 30.7144 0 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal 0.613523 -0.789677 0 - outer loop - vertex 12.0544 30.7144 0 - vertex 11.5971 30.3591 -3 - vertex 12.0544 30.7144 -3 - endloop - endfacet - facet normal -0.632498 -0.774562 0 - outer loop - vertex 12.0544 30.7144 -3 - vertex 12.2907 30.5214 0 - vertex 12.0544 30.7144 0 - endloop - endfacet - facet normal -0.632498 -0.774562 -0 - outer loop - vertex 12.2907 30.5214 0 - vertex 12.0544 30.7144 -3 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal -0.906769 0.421628 0 - outer loop - vertex 12.0187 29.9363 -3 - vertex 12.2907 30.5214 0 - vertex 12.2907 30.5214 -3 - endloop - endfacet - facet normal -0.906769 0.421628 0 - outer loop - vertex 12.2907 30.5214 0 - vertex 12.0187 29.9363 -3 - vertex 12.0187 29.9363 0 - endloop - endfacet - facet normal -0.946212 0.323547 0 - outer loop - vertex 11.8088 29.3224 -3 - vertex 12.0187 29.9363 0 - vertex 12.0187 29.9363 -3 - endloop - endfacet - facet normal -0.946212 0.323547 0 - outer loop - vertex 12.0187 29.9363 0 - vertex 11.8088 29.3224 -3 - vertex 11.8088 29.3224 0 - endloop - endfacet - facet normal -0.996661 0.0816499 0 - outer loop - vertex 11.7374 28.4518 -3 - vertex 11.8088 29.3224 0 - vertex 11.8088 29.3224 -3 - endloop - endfacet - facet normal -0.996661 0.0816499 0 - outer loop - vertex 11.8088 29.3224 0 - vertex 11.7374 28.4518 -3 - vertex 11.7374 28.4518 0 - endloop - endfacet - facet normal -0.997288 -0.0735994 0 - outer loop - vertex 11.8052 27.5343 -3 - vertex 11.7374 28.4518 0 - vertex 11.7374 28.4518 -3 - endloop - endfacet - facet normal -0.997288 -0.0735994 0 - outer loop - vertex 11.7374 28.4518 0 - vertex 11.8052 27.5343 -3 - vertex 11.8052 27.5343 0 - endloop - endfacet - facet normal -0.964338 -0.264675 0 - outer loop - vertex 12.0123 26.7794 -3 - vertex 11.8052 27.5343 0 - vertex 11.8052 27.5343 -3 - endloop - endfacet - facet normal -0.964338 -0.264675 0 - outer loop - vertex 11.8052 27.5343 0 - vertex 12.0123 26.7794 -3 - vertex 12.0123 26.7794 0 - endloop - endfacet - facet normal -0.835126 -0.550059 0 - outer loop - vertex 12.5486 25.9653 -3 - vertex 12.0123 26.7794 0 - vertex 12.0123 26.7794 -3 - endloop - endfacet - facet normal -0.835126 -0.550059 0 - outer loop - vertex 12.0123 26.7794 0 - vertex 12.5486 25.9653 -3 - vertex 12.5486 25.9653 0 - endloop - endfacet - facet normal -0.606684 -0.794943 0 - outer loop - vertex 12.5486 25.9653 -3 - vertex 13.4969 25.2416 0 - vertex 12.5486 25.9653 0 - endloop - endfacet - facet normal -0.606684 -0.794943 -0 - outer loop - vertex 13.4969 25.2416 0 - vertex 12.5486 25.9653 -3 - vertex 13.4969 25.2416 -3 - endloop - endfacet - facet normal -0.436683 -0.899615 0 - outer loop - vertex 13.4969 25.2416 -3 - vertex 15.1211 24.4531 0 - vertex 13.4969 25.2416 0 - endloop - endfacet - facet normal -0.436683 -0.899615 -0 - outer loop - vertex 15.1211 24.4531 0 - vertex 13.4969 25.2416 -3 - vertex 15.1211 24.4531 -3 - endloop - endfacet - facet normal -0.365946 -0.930636 0 - outer loop - vertex 15.1211 24.4531 -3 - vertex 17.6852 23.4449 0 - vertex 15.1211 24.4531 0 - endloop - endfacet - facet normal -0.365946 -0.930636 -0 - outer loop - vertex 17.6852 23.4449 0 - vertex 15.1211 24.4531 -3 - vertex 17.6852 23.4449 -3 - endloop - endfacet - facet normal -0.54663 -0.837374 0 - outer loop - vertex 17.6852 23.4449 -3 - vertex 18.9185 22.6398 0 - vertex 17.6852 23.4449 0 - endloop - endfacet - facet normal -0.54663 -0.837374 -0 - outer loop - vertex 18.9185 22.6398 0 - vertex 17.6852 23.4449 -3 - vertex 18.9185 22.6398 -3 - endloop - endfacet - facet normal -0.808126 -0.58901 0 - outer loop - vertex 19.4421 21.9215 -3 - vertex 18.9185 22.6398 0 - vertex 18.9185 22.6398 -3 - endloop - endfacet - facet normal -0.808126 -0.58901 0 - outer loop - vertex 18.9185 22.6398 0 - vertex 19.4421 21.9215 -3 - vertex 19.4421 21.9215 0 - endloop - endfacet - facet normal -0.985617 -0.168992 0 - outer loop - vertex 19.6596 20.6529 -3 - vertex 19.4421 21.9215 0 - vertex 19.4421 21.9215 -3 - endloop - endfacet - facet normal -0.985617 -0.168992 0 - outer loop - vertex 19.4421 21.9215 0 - vertex 19.6596 20.6529 -3 - vertex 19.6596 20.6529 0 - endloop - endfacet - facet normal -0.991076 -0.133297 0 - outer loop - vertex 19.8405 19.3078 -3 - vertex 19.6596 20.6529 0 - vertex 19.6596 20.6529 -3 - endloop - endfacet - facet normal -0.991076 -0.133297 0 - outer loop - vertex 19.6596 20.6529 0 - vertex 19.8405 19.3078 -3 - vertex 19.8405 19.3078 0 - endloop - endfacet - facet normal -0.89371 -0.448645 0 - outer loop - vertex 20.2006 18.5903 -3 - vertex 19.8405 19.3078 0 - vertex 19.8405 19.3078 -3 - endloop - endfacet - facet normal -0.89371 -0.448645 0 - outer loop - vertex 19.8405 19.3078 0 - vertex 20.2006 18.5903 -3 - vertex 20.2006 18.5903 0 - endloop - endfacet - facet normal -0.353154 -0.935565 0 - outer loop - vertex 20.2006 18.5903 -3 - vertex 20.9591 18.304 0 - vertex 20.2006 18.5903 0 - endloop - endfacet - facet normal -0.353154 -0.935565 -0 - outer loop - vertex 20.9591 18.304 0 - vertex 20.2006 18.5903 -3 - vertex 20.9591 18.304 -3 - endloop - endfacet - facet normal -0.0375868 -0.999293 0 - outer loop - vertex 20.9591 18.304 -3 - vertex 22.335 18.2522 0 - vertex 20.9591 18.304 0 - endloop - endfacet - facet normal -0.0375868 -0.999293 -0 - outer loop - vertex 22.335 18.2522 0 - vertex 20.9591 18.304 -3 - vertex 22.335 18.2522 -3 - endloop - endfacet - facet normal -0.0902677 -0.995918 0 - outer loop - vertex 22.335 18.2522 -3 - vertex 24.5942 18.0475 0 - vertex 22.335 18.2522 0 - endloop - endfacet - facet normal -0.0902677 -0.995918 -0 - outer loop - vertex 24.5942 18.0475 0 - vertex 22.335 18.2522 -3 - vertex 24.5942 18.0475 -3 - endloop - endfacet - facet normal -0.485131 -0.874442 0 - outer loop - vertex 24.5942 18.0475 -3 - vertex 25.1513 17.7384 0 - vertex 24.5942 18.0475 0 - endloop - endfacet - facet normal -0.485131 -0.874442 -0 - outer loop - vertex 25.1513 17.7384 0 - vertex 24.5942 18.0475 -3 - vertex 25.1513 17.7384 -3 - endloop - endfacet - facet normal -0.837387 -0.54661 0 - outer loop - vertex 25.4738 17.2443 -3 - vertex 25.1513 17.7384 0 - vertex 25.1513 17.7384 -3 - endloop - endfacet - facet normal -0.837387 -0.54661 0 - outer loop - vertex 25.1513 17.7384 0 - vertex 25.4738 17.2443 -3 - vertex 25.4738 17.2443 0 - endloop - endfacet - facet normal -0.875441 -0.483325 0 - outer loop - vertex 25.704 16.8274 -3 - vertex 25.4738 17.2443 0 - vertex 25.4738 17.2443 -3 - endloop - endfacet - facet normal -0.875441 -0.483325 0 - outer loop - vertex 25.4738 17.2443 0 - vertex 25.704 16.8274 -3 - vertex 25.704 16.8274 0 - endloop - endfacet - facet normal -0.34429 -0.938863 0 - outer loop - vertex 25.704 16.8274 -3 - vertex 25.8979 16.7563 0 - vertex 25.704 16.8274 0 - endloop - endfacet - facet normal -0.34429 -0.938863 -0 - outer loop - vertex 25.8979 16.7563 0 - vertex 25.704 16.8274 -3 - vertex 25.8979 16.7563 -3 - endloop - endfacet - facet normal 0.976922 -0.213594 0 - outer loop - vertex 25.8979 16.7563 0 - vertex 26.0816 17.5963 -3 - vertex 26.0816 17.5963 0 - endloop - endfacet - facet normal 0.976922 -0.213594 0 - outer loop - vertex 26.0816 17.5963 -3 - vertex 25.8979 16.7563 0 - vertex 25.8979 16.7563 -3 - endloop - endfacet - facet normal 0.991357 0.131195 0 - outer loop - vertex 26.0816 17.5963 0 - vertex 25.9892 18.2943 -3 - vertex 25.9892 18.2943 0 - endloop - endfacet - facet normal 0.991357 0.131195 0 - outer loop - vertex 25.9892 18.2943 -3 - vertex 26.0816 17.5963 0 - vertex 26.0816 17.5963 -3 - endloop - endfacet - facet normal 0.907716 0.419585 0 - outer loop - vertex 25.9892 18.2943 0 - vertex 25.7331 18.8483 -3 - vertex 25.7331 18.8483 0 - endloop - endfacet - facet normal 0.907716 0.419585 0 - outer loop - vertex 25.7331 18.8483 -3 - vertex 25.9892 18.2943 0 - vertex 25.9892 18.2943 -3 - endloop - endfacet - facet normal 0.685144 0.728407 -0 - outer loop - vertex 25.7331 18.8483 -3 - vertex 25.3447 19.2137 0 - vertex 25.7331 18.8483 0 - endloop - endfacet - facet normal 0.685144 0.728407 0 - outer loop - vertex 25.3447 19.2137 0 - vertex 25.7331 18.8483 -3 - vertex 25.3447 19.2137 -3 - endloop - endfacet - facet normal 0.260028 0.965601 -0 - outer loop - vertex 25.3447 19.2137 -3 - vertex 24.8554 19.3454 0 - vertex 25.3447 19.2137 0 - endloop - endfacet - facet normal 0.260028 0.965601 0 - outer loop - vertex 24.8554 19.3454 0 - vertex 25.3447 19.2137 -3 - vertex 24.8554 19.3454 -3 - endloop - endfacet - facet normal 0.225805 0.974172 -0 - outer loop - vertex 24.8554 19.3454 -3 - vertex 23.3909 19.6849 0 - vertex 24.8554 19.3454 0 - endloop - endfacet - facet normal 0.225805 0.974172 0 - outer loop - vertex 23.3909 19.6849 0 - vertex 24.8554 19.3454 -3 - vertex 23.3909 19.6849 -3 - endloop - endfacet - facet normal 0.432873 0.901455 -0 - outer loop - vertex 23.3909 19.6849 -3 - vertex 22.6368 20.047 0 - vertex 23.3909 19.6849 0 - endloop - endfacet - facet normal 0.432873 0.901455 0 - outer loop - vertex 22.6368 20.047 0 - vertex 23.3909 19.6849 -3 - vertex 22.6368 20.047 -3 - endloop - endfacet - facet normal 0.698531 0.71558 -0 - outer loop - vertex 22.6368 20.047 -3 - vertex 22.0911 20.5797 0 - vertex 22.6368 20.047 0 - endloop - endfacet - facet normal 0.698531 0.71558 0 - outer loop - vertex 22.0911 20.5797 0 - vertex 22.6368 20.047 -3 - vertex 22.0911 20.5797 -3 - endloop - endfacet - facet normal 0.897086 0.441856 0 - outer loop - vertex 22.0911 20.5797 0 - vertex 21.7245 21.3239 -3 - vertex 21.7245 21.3239 0 - endloop - endfacet - facet normal 0.897086 0.441856 0 - outer loop - vertex 21.7245 21.3239 -3 - vertex 22.0911 20.5797 0 - vertex 22.0911 20.5797 -3 - endloop - endfacet - facet normal 0.977198 0.212332 0 - outer loop - vertex 21.7245 21.3239 0 - vertex 21.508 22.3204 -3 - vertex 21.508 22.3204 0 - endloop - endfacet - facet normal 0.977198 0.212332 0 - outer loop - vertex 21.508 22.3204 -3 - vertex 21.7245 21.3239 0 - vertex 21.7245 21.3239 -3 - endloop - endfacet - facet normal 0.966755 0.255705 0 - outer loop - vertex 21.508 22.3204 0 - vertex 21.2518 23.2891 -3 - vertex 21.2518 23.2891 0 - endloop - endfacet - facet normal 0.966755 0.255705 0 - outer loop - vertex 21.2518 23.2891 -3 - vertex 21.508 22.3204 0 - vertex 21.508 22.3204 -3 - endloop - endfacet - facet normal 0.849732 0.527214 0 - outer loop - vertex 21.2518 23.2891 0 - vertex 20.762 24.0784 -3 - vertex 20.762 24.0784 0 - endloop - endfacet - facet normal 0.849732 0.527214 0 - outer loop - vertex 20.762 24.0784 -3 - vertex 21.2518 23.2891 0 - vertex 21.2518 23.2891 -3 - endloop - endfacet - facet normal 0.645661 0.763624 -0 - outer loop - vertex 20.762 24.0784 -3 - vertex 20.0338 24.6942 0 - vertex 20.762 24.0784 0 - endloop - endfacet - facet normal 0.645661 0.763624 0 - outer loop - vertex 20.0338 24.6942 0 - vertex 20.762 24.0784 -3 - vertex 20.0338 24.6942 -3 - endloop - endfacet - facet normal 0.418642 0.908151 -0 - outer loop - vertex 20.0338 24.6942 -3 - vertex 19.062 25.1422 0 - vertex 20.0338 24.6942 0 - endloop - endfacet - facet normal 0.418642 0.908151 0 - outer loop - vertex 19.062 25.1422 0 - vertex 20.0338 24.6942 -3 - vertex 19.062 25.1422 -3 - endloop - endfacet - facet normal 0.419948 0.907548 -0 - outer loop - vertex 19.062 25.1422 -3 - vertex 17.2513 25.98 0 - vertex 19.062 25.1422 0 - endloop - endfacet - facet normal 0.419948 0.907548 0 - outer loop - vertex 17.2513 25.98 0 - vertex 19.062 25.1422 -3 - vertex 17.2513 25.98 -3 - endloop - endfacet - facet normal 0.649834 0.760076 -0 - outer loop - vertex 17.2513 25.98 -3 - vertex 15.7223 27.2873 0 - vertex 17.2513 25.98 0 - endloop - endfacet - facet normal 0.649834 0.760076 0 - outer loop - vertex 15.7223 27.2873 0 - vertex 17.2513 25.98 -3 - vertex 15.7223 27.2873 -3 - endloop - endfacet - facet normal 0.802285 0.596942 0 - outer loop - vertex 15.7223 27.2873 0 - vertex 15.122 28.0941 -3 - vertex 15.122 28.0941 0 - endloop - endfacet - facet normal 0.802285 0.596942 0 - outer loop - vertex 15.122 28.0941 -3 - vertex 15.7223 27.2873 0 - vertex 15.7223 27.2873 -3 - endloop - endfacet - facet normal 0.997794 0.066389 0 - outer loop - vertex 15.122 28.0941 0 - vertex 15.0577 29.0611 -3 - vertex 15.0577 29.0611 0 - endloop - endfacet - facet normal 0.997794 0.066389 0 - outer loop - vertex 15.0577 29.0611 -3 - vertex 15.122 28.0941 0 - vertex 15.122 28.0941 -3 - endloop - endfacet - facet normal 0.991125 -0.132935 0 - outer loop - vertex 15.0577 29.0611 0 - vertex 15.1584 29.8123 -3 - vertex 15.1584 29.8123 0 - endloop - endfacet - facet normal 0.991125 -0.132935 0 - outer loop - vertex 15.1584 29.8123 -3 - vertex 15.0577 29.0611 0 - vertex 15.0577 29.0611 -3 - endloop - endfacet - facet normal 0.868998 -0.494816 0 - outer loop - vertex 15.1584 29.8123 0 - vertex 15.3134 30.0845 -3 - vertex 15.3134 30.0845 0 - endloop - endfacet - facet normal 0.868998 -0.494816 0 - outer loop - vertex 15.3134 30.0845 -3 - vertex 15.1584 29.8123 0 - vertex 15.1584 29.8123 -3 - endloop - endfacet - facet normal -0.793235 -0.608916 0 - outer loop - vertex 15.4783 29.8698 -3 - vertex 15.3134 30.0845 0 - vertex 15.3134 30.0845 -3 - endloop - endfacet - facet normal -0.793235 -0.608916 0 - outer loop - vertex 15.3134 30.0845 0 - vertex 15.4783 29.8698 -3 - vertex 15.4783 29.8698 0 - endloop - endfacet - facet normal -0.983592 -0.18041 0 - outer loop - vertex 15.6084 29.1601 -3 - vertex 15.4783 29.8698 0 - vertex 15.4783 29.8698 -3 - endloop - endfacet - facet normal -0.983592 -0.18041 0 - outer loop - vertex 15.4783 29.8698 0 - vertex 15.6084 29.1601 -3 - vertex 15.6084 29.1601 0 - endloop - endfacet - facet normal -0.973498 -0.228694 0 - outer loop - vertex 15.808 28.3106 -3 - vertex 15.6084 29.1601 0 - vertex 15.6084 29.1601 -3 - endloop - endfacet - facet normal -0.973498 -0.228694 0 - outer loop - vertex 15.6084 29.1601 0 - vertex 15.808 28.3106 -3 - vertex 15.808 28.3106 0 - endloop - endfacet - facet normal -0.833811 -0.55205 0 - outer loop - vertex 16.2688 27.6146 -3 - vertex 15.808 28.3106 0 - vertex 15.808 28.3106 -3 - endloop - endfacet - facet normal -0.833811 -0.55205 0 - outer loop - vertex 15.808 28.3106 0 - vertex 16.2688 27.6146 -3 - vertex 16.2688 27.6146 0 - endloop - endfacet - facet normal -0.616484 -0.787368 0 - outer loop - vertex 16.2688 27.6146 -3 - vertex 17.0772 26.9817 0 - vertex 16.2688 27.6146 0 - endloop - endfacet - facet normal -0.616484 -0.787368 -0 - outer loop - vertex 17.0772 26.9817 0 - vertex 16.2688 27.6146 -3 - vertex 17.0772 26.9817 -3 - endloop - endfacet - facet normal -0.469274 -0.883053 0 - outer loop - vertex 17.0772 26.9817 -3 - vertex 18.3193 26.3216 0 - vertex 17.0772 26.9817 0 - endloop - endfacet - facet normal -0.469274 -0.883053 -0 - outer loop - vertex 18.3193 26.3216 0 - vertex 17.0772 26.9817 -3 - vertex 18.3193 26.3216 -3 - endloop - endfacet - facet normal -0.453671 -0.891169 0 - outer loop - vertex 18.3193 26.3216 -3 - vertex 20.1819 25.3734 0 - vertex 18.3193 26.3216 0 - endloop - endfacet - facet normal -0.453671 -0.891169 -0 - outer loop - vertex 20.1819 25.3734 0 - vertex 18.3193 26.3216 -3 - vertex 20.1819 25.3734 -3 - endloop - endfacet - facet normal -0.592966 -0.805227 0 - outer loop - vertex 20.1819 25.3734 -3 - vertex 21.2755 24.568 0 - vertex 20.1819 25.3734 0 - endloop - endfacet - facet normal -0.592966 -0.805227 -0 - outer loop - vertex 21.2755 24.568 0 - vertex 20.1819 25.3734 -3 - vertex 21.2755 24.568 -3 - endloop - endfacet - facet normal -0.85116 -0.524906 0 - outer loop - vertex 21.8319 23.6658 -3 - vertex 21.2755 24.568 0 - vertex 21.2755 24.568 -3 - endloop - endfacet - facet normal -0.85116 -0.524906 0 - outer loop - vertex 21.2755 24.568 0 - vertex 21.8319 23.6658 -3 - vertex 21.8319 23.6658 0 - endloop - endfacet - facet normal -0.980126 -0.198375 0 - outer loop - vertex 22.0827 22.427 -3 - vertex 21.8319 23.6658 0 - vertex 21.8319 23.6658 -3 - endloop - endfacet - facet normal -0.980126 -0.198375 0 - outer loop - vertex 21.8319 23.6658 0 - vertex 22.0827 22.427 -3 - vertex 22.0827 22.427 0 - endloop - endfacet - facet normal -0.975671 -0.219241 0 - outer loop - vertex 22.2698 21.5943 -3 - vertex 22.0827 22.427 0 - vertex 22.0827 22.427 -3 - endloop - endfacet - facet normal -0.975671 -0.219241 0 - outer loop - vertex 22.0827 22.427 0 - vertex 22.2698 21.5943 -3 - vertex 22.2698 21.5943 0 - endloop - endfacet - facet normal -0.867972 -0.496613 0 - outer loop - vertex 22.6169 20.9877 -3 - vertex 22.2698 21.5943 0 - vertex 22.2698 21.5943 -3 - endloop - endfacet - facet normal -0.867972 -0.496613 0 - outer loop - vertex 22.2698 21.5943 0 - vertex 22.6169 20.9877 -3 - vertex 22.6169 20.9877 0 - endloop - endfacet - facet normal -0.60611 -0.795381 0 - outer loop - vertex 22.6169 20.9877 -3 - vertex 23.1387 20.59 0 - vertex 22.6169 20.9877 0 - endloop - endfacet - facet normal -0.60611 -0.795381 -0 - outer loop - vertex 23.1387 20.59 0 - vertex 22.6169 20.9877 -3 - vertex 23.1387 20.59 -3 - endloop - endfacet - facet normal -0.277742 -0.960656 0 - outer loop - vertex 23.1387 20.59 -3 - vertex 23.8499 20.3844 0 - vertex 23.1387 20.59 0 - endloop - endfacet - facet normal -0.277742 -0.960656 -0 - outer loop - vertex 23.8499 20.3844 0 - vertex 23.1387 20.59 -3 - vertex 23.8499 20.3844 -3 - endloop - endfacet - facet normal -0.253903 -0.96723 0 - outer loop - vertex 23.8499 20.3844 -3 - vertex 25.0752 20.0627 0 - vertex 23.8499 20.3844 0 - endloop - endfacet - facet normal -0.253903 -0.96723 -0 - outer loop - vertex 25.0752 20.0627 0 - vertex 23.8499 20.3844 -3 - vertex 25.0752 20.0627 -3 - endloop - endfacet - facet normal -0.555295 -0.831654 0 - outer loop - vertex 25.0752 20.0627 -3 - vertex 25.9424 19.4837 0 - vertex 25.0752 20.0627 0 - endloop - endfacet - facet normal -0.555295 -0.831654 -0 - outer loop - vertex 25.9424 19.4837 0 - vertex 25.0752 20.0627 -3 - vertex 25.9424 19.4837 -3 - endloop - endfacet - facet normal -0.850459 -0.526041 0 - outer loop - vertex 26.4742 18.624 -3 - vertex 25.9424 19.4837 0 - vertex 25.9424 19.4837 -3 - endloop - endfacet - facet normal -0.850459 -0.526041 0 - outer loop - vertex 25.9424 19.4837 0 - vertex 26.4742 18.624 -3 - vertex 26.4742 18.624 0 - endloop - endfacet - facet normal -0.982731 -0.185042 0 - outer loop - vertex 26.6933 17.4601 -3 - vertex 26.4742 18.624 0 - vertex 26.4742 18.624 -3 - endloop - endfacet - facet normal -0.982731 -0.185042 0 - outer loop - vertex 26.4742 18.624 0 - vertex 26.6933 17.4601 -3 - vertex 26.6933 17.4601 0 - endloop - endfacet - facet normal -0.95811 -0.286401 0 - outer loop - vertex 27.1755 15.8473 -3 - vertex 26.6933 17.4601 0 - vertex 26.6933 17.4601 -3 - endloop - endfacet - facet normal -0.95811 -0.286401 0 - outer loop - vertex 26.6933 17.4601 0 - vertex 27.1755 15.8473 -3 - vertex 27.1755 15.8473 0 - endloop - endfacet - facet normal -0.948381 -0.317134 0 - outer loop - vertex 27.5422 14.7505 -3 - vertex 27.1755 15.8473 0 - vertex 27.1755 15.8473 -3 - endloop - endfacet - facet normal -0.948381 -0.317134 0 - outer loop - vertex 27.1755 15.8473 0 - vertex 27.5422 14.7505 -3 - vertex 27.5422 14.7505 0 - endloop - endfacet - facet normal -0.999642 -0.0267694 0 - outer loop - vertex 27.6094 12.2412 -3 - vertex 27.5422 14.7505 0 - vertex 27.5422 14.7505 -3 - endloop - endfacet - facet normal -0.999642 -0.0267694 0 - outer loop - vertex 27.5422 14.7505 0 - vertex 27.6094 12.2412 -3 - vertex 27.6094 12.2412 0 - endloop - endfacet - facet normal -0.999486 0.0320667 0 - outer loop - vertex 27.528 9.70386 -3 - vertex 27.6094 12.2412 0 - vertex 27.6094 12.2412 -3 - endloop - endfacet - facet normal -0.999486 0.0320667 0 - outer loop - vertex 27.6094 12.2412 0 - vertex 27.528 9.70386 -3 - vertex 27.528 9.70386 0 - endloop - endfacet - facet normal -0.981091 0.193547 0 - outer loop - vertex 27.209 8.08714 -3 - vertex 27.528 9.70386 0 - vertex 27.528 9.70386 -3 - endloop - endfacet - facet normal -0.981091 0.193547 0 - outer loop - vertex 27.528 9.70386 0 - vertex 27.209 8.08714 -3 - vertex 27.209 8.08714 0 - endloop - endfacet - facet normal -0.980935 0.194337 0 - outer loop - vertex 26.8985 6.51977 -3 - vertex 27.209 8.08714 0 - vertex 27.209 8.08714 -3 - endloop - endfacet - facet normal -0.980935 0.194337 0 - outer loop - vertex 27.209 8.08714 0 - vertex 26.8985 6.51977 -3 - vertex 26.8985 6.51977 0 - endloop - endfacet - facet normal -0.999971 -0.00756314 0 - outer loop - vertex 26.9177 3.98634 -3 - vertex 26.8985 6.51977 0 - vertex 26.8985 6.51977 -3 - endloop - endfacet - facet normal -0.999971 -0.00756314 0 - outer loop - vertex 26.8985 6.51977 0 - vertex 26.9177 3.98634 -3 - vertex 26.9177 3.98634 0 - endloop - endfacet - facet normal -0.999812 -0.0193848 0 - outer loop - vertex 26.953 2.16551 -3 - vertex 26.9177 3.98634 0 - vertex 26.9177 3.98634 -3 - endloop - endfacet - facet normal -0.999812 -0.0193848 0 - outer loop - vertex 26.9177 3.98634 0 - vertex 26.953 2.16551 -3 - vertex 26.953 2.16551 0 - endloop - endfacet - facet normal -0.99253 0.121998 0 - outer loop - vertex 26.8464 1.29842 -3 - vertex 26.953 2.16551 0 - vertex 26.953 2.16551 -3 - endloop - endfacet - facet normal -0.99253 0.121998 0 - outer loop - vertex 26.953 2.16551 0 - vertex 26.8464 1.29842 -3 - vertex 26.8464 1.29842 0 - endloop - endfacet - facet normal -0.673406 0.739273 0 - outer loop - vertex 26.8464 1.29842 -3 - vertex 26.7235 1.18648 0 - vertex 26.8464 1.29842 0 - endloop - endfacet - facet normal -0.673406 0.739273 0 - outer loop - vertex 26.7235 1.18648 0 - vertex 26.8464 1.29842 -3 - vertex 26.7235 1.18648 -3 - endloop - endfacet - facet normal 0.423462 0.905914 -0 - outer loop - vertex 26.7235 1.18648 -3 - vertex 26.5455 1.2697 0 - vertex 26.7235 1.18648 0 - endloop - endfacet - facet normal 0.423462 0.905914 0 - outer loop - vertex 26.5455 1.2697 0 - vertex 26.7235 1.18648 -3 - vertex 26.5455 1.2697 -3 - endloop - endfacet - facet normal 0.785068 0.61941 0 - outer loop - vertex 26.5455 1.2697 0 - vertex 25.9977 1.96397 -3 - vertex 25.9977 1.96397 0 - endloop - endfacet - facet normal 0.785068 0.61941 0 - outer loop - vertex 25.9977 1.96397 -3 - vertex 26.5455 1.2697 0 - vertex 26.5455 1.2697 -3 - endloop - endfacet - facet normal 0.724168 0.689624 0 - outer loop - vertex 25.9977 1.96397 0 - vertex 25.3153 2.68052 -3 - vertex 25.3153 2.68052 0 - endloop - endfacet - facet normal 0.724168 0.689624 0 - outer loop - vertex 25.3153 2.68052 -3 - vertex 25.9977 1.96397 0 - vertex 25.9977 1.96397 -3 - endloop - endfacet - facet normal -0.00319409 0.999995 0 - outer loop - vertex 25.3153 2.68052 -3 - vertex 25.0347 2.67962 0 - vertex 25.3153 2.68052 0 - endloop - endfacet - facet normal -0.00319409 0.999995 0 - outer loop - vertex 25.0347 2.67962 0 - vertex 25.3153 2.68052 -3 - vertex 25.0347 2.67962 -3 - endloop - endfacet - facet normal -0.620982 0.783825 0 - outer loop - vertex 25.0347 2.67962 -3 - vertex 24.7523 2.4559 0 - vertex 25.0347 2.67962 0 - endloop - endfacet - facet normal -0.620982 0.783825 0 - outer loop - vertex 24.7523 2.4559 0 - vertex 25.0347 2.67962 -3 - vertex 24.7523 2.4559 -3 - endloop - endfacet - facet normal -0.356176 0.934419 0 - outer loop - vertex 24.7523 2.4559 -3 - vertex 23.9858 2.16372 0 - vertex 24.7523 2.4559 0 - endloop - endfacet - facet normal -0.356176 0.934419 0 - outer loop - vertex 23.9858 2.16372 0 - vertex 24.7523 2.4559 -3 - vertex 23.9858 2.16372 -3 - endloop - endfacet - facet normal -0.21204 0.977261 0 - outer loop - vertex 23.9858 2.16372 -3 - vertex 23.1222 1.97635 0 - vertex 23.9858 2.16372 0 - endloop - endfacet - facet normal -0.21204 0.977261 0 - outer loop - vertex 23.1222 1.97635 0 - vertex 23.9858 2.16372 -3 - vertex 23.1222 1.97635 -3 - endloop - endfacet - facet normal 0.0237086 0.999719 -0 - outer loop - vertex 23.1222 1.97635 -3 - vertex 22.8505 1.9828 0 - vertex 23.1222 1.97635 0 - endloop - endfacet - facet normal 0.0237086 0.999719 0 - outer loop - vertex 22.8505 1.9828 0 - vertex 23.1222 1.97635 -3 - vertex 22.8505 1.9828 -3 - endloop - endfacet - facet normal 0.97535 0.220664 0 - outer loop - vertex 22.8505 1.9828 0 - vertex 22.7784 2.30129 -3 - vertex 22.7784 2.30129 0 - endloop - endfacet - facet normal 0.97535 0.220664 0 - outer loop - vertex 22.7784 2.30129 -3 - vertex 22.8505 1.9828 0 - vertex 22.8505 1.9828 -3 - endloop - endfacet - facet normal 0.936019 -0.35195 0 - outer loop - vertex 22.7784 2.30129 0 - vertex 23.2082 3.44442 -3 - vertex 23.2082 3.44442 0 - endloop - endfacet - facet normal 0.936019 -0.35195 0 - outer loop - vertex 23.2082 3.44442 -3 - vertex 22.7784 2.30129 0 - vertex 22.7784 2.30129 -3 - endloop - endfacet - facet normal 0.913236 -0.40743 0 - outer loop - vertex 23.2082 3.44442 0 - vertex 23.5377 4.18291 -3 - vertex 23.5377 4.18291 0 - endloop - endfacet - facet normal 0.913236 -0.40743 0 - outer loop - vertex 23.5377 4.18291 -3 - vertex 23.2082 3.44442 0 - vertex 23.2082 3.44442 -3 - endloop - endfacet - facet normal 0.997125 -0.0757773 0 - outer loop - vertex 23.5377 4.18291 0 - vertex 23.5966 4.95794 -3 - vertex 23.5966 4.95794 0 - endloop - endfacet - facet normal 0.997125 -0.0757773 0 - outer loop - vertex 23.5966 4.95794 -3 - vertex 23.5377 4.18291 0 - vertex 23.5377 4.18291 -3 - endloop - endfacet - facet normal 0.969407 0.245457 0 - outer loop - vertex 23.5966 4.95794 0 - vertex 23.3811 5.8089 -3 - vertex 23.3811 5.8089 0 - endloop - endfacet - facet normal 0.969407 0.245457 0 - outer loop - vertex 23.3811 5.8089 -3 - vertex 23.5966 4.95794 0 - vertex 23.5966 4.95794 -3 - endloop - endfacet - facet normal 0.890531 0.454923 0 - outer loop - vertex 23.3811 5.8089 0 - vertex 22.8875 6.77518 -3 - vertex 22.8875 6.77518 0 - endloop - endfacet - facet normal 0.890531 0.454923 0 - outer loop - vertex 22.8875 6.77518 -3 - vertex 23.3811 5.8089 0 - vertex 23.3811 5.8089 -3 - endloop - endfacet - facet normal 0.77704 0.629451 0 - outer loop - vertex 22.8875 6.77518 0 - vertex 21.7142 8.22365 -3 - vertex 21.7142 8.22365 0 - endloop - endfacet - facet normal 0.77704 0.629451 0 - outer loop - vertex 21.7142 8.22365 -3 - vertex 22.8875 6.77518 0 - vertex 22.8875 6.77518 -3 - endloop - endfacet - facet normal 0.585146 0.810928 -0 - outer loop - vertex 21.7142 8.22365 -3 - vertex 19.7157 9.66569 0 - vertex 21.7142 8.22365 0 - endloop - endfacet - facet normal 0.585146 0.810928 0 - outer loop - vertex 19.7157 9.66569 0 - vertex 21.7142 8.22365 -3 - vertex 19.7157 9.66569 -3 - endloop - endfacet - facet normal 0.415721 0.909492 -0 - outer loop - vertex 19.7157 9.66569 -3 - vertex 18.6847 10.137 0 - vertex 19.7157 9.66569 0 - endloop - endfacet - facet normal 0.415721 0.909492 0 - outer loop - vertex 18.6847 10.137 0 - vertex 19.7157 9.66569 -3 - vertex 18.6847 10.137 -3 - endloop - endfacet - facet normal 0.146348 0.989233 -0 - outer loop - vertex 18.6847 10.137 -3 - vertex 17.337 10.3363 0 - vertex 18.6847 10.137 0 - endloop - endfacet - facet normal 0.146348 0.989233 0 - outer loop - vertex 17.337 10.3363 0 - vertex 18.6847 10.137 -3 - vertex 17.337 10.3363 -3 - endloop - endfacet - facet normal -0.00363232 0.999993 0 - outer loop - vertex 17.337 10.3363 -3 - vertex 15.9933 10.3315 0 - vertex 17.337 10.3363 0 - endloop - endfacet - facet normal -0.00363232 0.999993 0 - outer loop - vertex 15.9933 10.3315 0 - vertex 17.337 10.3363 -3 - vertex 15.9933 10.3315 -3 - endloop - endfacet - facet normal -0.520358 0.853948 0 - outer loop - vertex 15.9933 10.3315 -3 - vertex 15.6762 10.1383 0 - vertex 15.9933 10.3315 0 - endloop - endfacet - facet normal -0.520358 0.853948 0 - outer loop - vertex 15.6762 10.1383 0 - vertex 15.9933 10.3315 -3 - vertex 15.6762 10.1383 -3 - endloop - endfacet - facet normal -0.775154 0.631772 0 - outer loop - vertex 15.3572 9.74689 -3 - vertex 15.6762 10.1383 0 - vertex 15.6762 10.1383 -3 - endloop - endfacet - facet normal -0.775154 0.631772 0 - outer loop - vertex 15.6762 10.1383 0 - vertex 15.3572 9.74689 -3 - vertex 15.3572 9.74689 0 - endloop - endfacet - facet normal -0.885944 0.463791 0 - outer loop - vertex 14.9426 8.95486 -3 - vertex 15.3572 9.74689 0 - vertex 15.3572 9.74689 -3 - endloop - endfacet - facet normal -0.885944 0.463791 0 - outer loop - vertex 15.3572 9.74689 0 - vertex 14.9426 8.95486 -3 - vertex 14.9426 8.95486 0 - endloop - endfacet - facet normal -0.999951 -0.00991933 0 - outer loop - vertex 14.9551 7.69881 -3 - vertex 14.9426 8.95486 0 - vertex 14.9426 8.95486 -3 - endloop - endfacet - facet normal -0.999951 -0.00991933 0 - outer loop - vertex 14.9426 8.95486 0 - vertex 14.9551 7.69881 -3 - vertex 14.9551 7.69881 0 - endloop - endfacet - facet normal -0.987205 -0.159458 0 - outer loop - vertex 15.3368 5.33522 -3 - vertex 14.9551 7.69881 0 - vertex 14.9551 7.69881 -3 - endloop - endfacet - facet normal -0.987205 -0.159458 0 - outer loop - vertex 14.9551 7.69881 0 - vertex 15.3368 5.33522 -3 - vertex 15.3368 5.33522 0 - endloop - endfacet - facet normal -0.962213 -0.272299 0 - outer loop - vertex 16.0239 2.90744 -3 - vertex 15.3368 5.33522 0 - vertex 15.3368 5.33522 -3 - endloop - endfacet - facet normal -0.962213 -0.272299 0 - outer loop - vertex 15.3368 5.33522 0 - vertex 16.0239 2.90744 -3 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal -0.924811 -0.380427 0 - outer loop - vertex 16.8564 0.883682 -3 - vertex 16.0239 2.90744 0 - vertex 16.0239 2.90744 -3 - endloop - endfacet - facet normal -0.924811 -0.380427 0 - outer loop - vertex 16.0239 2.90744 0 - vertex 16.8564 0.883682 -3 - vertex 16.8564 0.883682 0 - endloop - endfacet - facet normal -0.815204 -0.579174 0 - outer loop - vertex 17.6745 -0.267811 -3 - vertex 16.8564 0.883682 0 - vertex 16.8564 0.883682 -3 - endloop - endfacet - facet normal -0.815204 -0.579174 0 - outer loop - vertex 16.8564 0.883682 0 - vertex 17.6745 -0.267811 -3 - vertex 17.6745 -0.267811 0 - endloop - endfacet - facet normal -0.318326 -0.947981 0 - outer loop - vertex 17.6745 -0.267811 -3 - vertex 18.2674 -0.466912 0 - vertex 17.6745 -0.267811 0 - endloop - endfacet - facet normal -0.318326 -0.947981 -0 - outer loop - vertex 18.2674 -0.466912 0 - vertex 17.6745 -0.267811 -3 - vertex 18.2674 -0.466912 -3 - endloop - endfacet - facet normal 0.268508 -0.963277 0 - outer loop - vertex 18.2674 -0.466912 -3 - vertex 19.4865 -0.127098 0 - vertex 18.2674 -0.466912 0 - endloop - endfacet - facet normal 0.268508 -0.963277 0 - outer loop - vertex 19.4865 -0.127098 0 - vertex 18.2674 -0.466912 -3 - vertex 19.4865 -0.127098 -3 - endloop - endfacet - facet normal 0.219889 -0.975525 0 - outer loop - vertex 19.4865 -0.127098 -3 - vertex 21.0282 0.220415 0 - vertex 19.4865 -0.127098 0 - endloop - endfacet - facet normal 0.219889 -0.975525 0 - outer loop - vertex 21.0282 0.220415 0 - vertex 19.4865 -0.127098 -3 - vertex 21.0282 0.220415 -3 - endloop - endfacet - facet normal -0.998758 -0.0498338 0 - outer loop - vertex 21.0968 -1.15452 -3 - vertex 21.0282 0.220415 0 - vertex 21.0282 0.220415 -3 - endloop - endfacet - facet normal -0.998758 -0.0498338 0 - outer loop - vertex 21.0282 0.220415 0 - vertex 21.0968 -1.15452 -3 - vertex 21.0968 -1.15452 0 - endloop - endfacet - facet normal -0.983918 0.178619 0 - outer loop - vertex 20.9081 -2.19366 -3 - vertex 21.0968 -1.15452 0 - vertex 21.0968 -1.15452 -3 - endloop - endfacet - facet normal -0.983918 0.178619 0 - outer loop - vertex 21.0968 -1.15452 0 - vertex 20.9081 -2.19366 -3 - vertex 20.9081 -2.19366 0 - endloop - endfacet - facet normal -0.856849 0.515568 0 - outer loop - vertex 20.4179 -3.0084 -3 - vertex 20.9081 -2.19366 0 - vertex 20.9081 -2.19366 -3 - endloop - endfacet - facet normal -0.856849 0.515568 0 - outer loop - vertex 20.9081 -2.19366 0 - vertex 20.4179 -3.0084 -3 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal -0.631353 0.775495 0 - outer loop - vertex 20.4179 -3.0084 -3 - vertex 19.4334 -3.80993 0 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal -0.631353 0.775495 0 - outer loop - vertex 19.4334 -3.80993 0 - vertex 20.4179 -3.0084 -3 - vertex 19.4334 -3.80993 -3 - endloop - endfacet - facet normal -0.513213 0.858261 0 - outer loop - vertex 19.4334 -3.80993 -3 - vertex 17.7619 -4.80944 0 - vertex 19.4334 -3.80993 0 - endloop - endfacet - facet normal -0.513213 0.858261 0 - outer loop - vertex 17.7619 -4.80944 0 - vertex 19.4334 -3.80993 -3 - vertex 17.7619 -4.80944 -3 - endloop - endfacet - facet normal -0.460069 0.887883 0 - outer loop - vertex 17.7619 -4.80944 -3 - vertex 15.0012 -6.23992 0 - vertex 17.7619 -4.80944 0 - endloop - endfacet - facet normal -0.460069 0.887883 0 - outer loop - vertex 15.0012 -6.23992 0 - vertex 17.7619 -4.80944 -3 - vertex 15.0012 -6.23992 -3 - endloop - endfacet - facet normal -0.358805 0.933413 0 - outer loop - vertex 15.0012 -6.23992 -3 - vertex 12.6103 -7.15898 0 - vertex 15.0012 -6.23992 0 - endloop - endfacet - facet normal -0.358805 0.933413 0 - outer loop - vertex 12.6103 -7.15898 0 - vertex 15.0012 -6.23992 -3 - vertex 12.6103 -7.15898 -3 - endloop - endfacet - facet normal -0.211321 0.977417 0 - outer loop - vertex 12.6103 -7.15898 -3 - vertex 10.2421 -7.67101 0 - vertex 12.6103 -7.15898 0 - endloop - endfacet - facet normal -0.211321 0.977417 0 - outer loop - vertex 10.2421 -7.67101 0 - vertex 12.6103 -7.15898 -3 - vertex 10.2421 -7.67101 -3 - endloop - endfacet - facet normal -0.0775281 0.99699 0 - outer loop - vertex 10.2421 -7.67101 -3 - vertex 7.54923 -7.88041 0 - vertex 10.2421 -7.67101 0 - endloop - endfacet - facet normal -0.0775281 0.99699 0 - outer loop - vertex 7.54923 -7.88041 0 - vertex 10.2421 -7.67101 -3 - vertex 7.54923 -7.88041 -3 - endloop - endfacet - facet normal -0.00181695 0.999998 0 - outer loop - vertex 7.54923 -7.88041 -3 - vertex 5.03167 -7.88498 0 - vertex 7.54923 -7.88041 0 - endloop - endfacet - facet normal -0.00181695 0.999998 0 - outer loop - vertex 5.03167 -7.88498 0 - vertex 7.54923 -7.88041 -3 - vertex 5.03167 -7.88498 -3 - endloop - endfacet - facet normal 0.239055 0.971006 -0 - outer loop - vertex 5.03167 -7.88498 -3 - vertex 3.854 -7.59505 0 - vertex 5.03167 -7.88498 0 - endloop - endfacet - facet normal 0.239055 0.971006 0 - outer loop - vertex 3.854 -7.59505 0 - vertex 5.03167 -7.88498 -3 - vertex 3.854 -7.59505 -3 - endloop - endfacet - facet normal 0.512147 0.858898 -0 - outer loop - vertex 3.854 -7.59505 -3 - vertex 1.04019 -5.91722 0 - vertex 3.854 -7.59505 0 - endloop - endfacet - facet normal 0.512147 0.858898 0 - outer loop - vertex 1.04019 -5.91722 0 - vertex 3.854 -7.59505 -3 - vertex 1.04019 -5.91722 -3 - endloop - endfacet - facet normal 0.520307 0.85398 -0 - outer loop - vertex 1.04019 -5.91722 -3 - vertex -2.05653 -4.03047 0 - vertex 1.04019 -5.91722 0 - endloop - endfacet - facet normal 0.520307 0.85398 0 - outer loop - vertex -2.05653 -4.03047 0 - vertex 1.04019 -5.91722 -3 - vertex -2.05653 -4.03047 -3 - endloop - endfacet - facet normal 0.582306 0.812969 -0 - outer loop - vertex -2.05653 -4.03047 -3 - vertex -3.45272 -3.03042 0 - vertex -2.05653 -4.03047 0 - endloop - endfacet - facet normal 0.582306 0.812969 0 - outer loop - vertex -3.45272 -3.03042 0 - vertex -2.05653 -4.03047 -3 - vertex -3.45272 -3.03042 -3 - endloop - endfacet - facet normal 0.814407 0.580294 0 - outer loop - vertex -3.45272 -3.03042 0 - vertex -3.71458 -2.66291 -3 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0.814407 0.580294 0 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -3.45272 -3.03042 0 - vertex -3.45272 -3.03042 -3 - endloop - endfacet - facet normal 0.667074 -0.744991 0 - outer loop - vertex -3.71458 -2.66291 -3 - vertex -3.55278 -2.51803 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0.667074 -0.744991 0 - outer loop - vertex -3.55278 -2.51803 0 - vertex -3.71458 -2.66291 -3 - vertex -3.55278 -2.51803 -3 - endloop - endfacet - facet normal -0.396625 -0.917981 0 - outer loop - vertex -3.55278 -2.51803 -3 - vertex -1.72768 -3.30659 0 - vertex -3.55278 -2.51803 0 - endloop - endfacet - facet normal -0.396625 -0.917981 -0 - outer loop - vertex -1.72768 -3.30659 0 - vertex -3.55278 -2.51803 -3 - vertex -1.72768 -3.30659 -3 - endloop - endfacet - facet normal -0.417951 -0.90847 0 - outer loop - vertex -1.72768 -3.30659 -3 - vertex 1.09298 -4.60426 0 - vertex -1.72768 -3.30659 0 - endloop - endfacet - facet normal -0.417951 -0.90847 -0 - outer loop - vertex 1.09298 -4.60426 0 - vertex -1.72768 -3.30659 -3 - vertex 1.09298 -4.60426 -3 - endloop - endfacet - facet normal -0.324179 -0.945996 0 - outer loop - vertex 1.09298 -4.60426 -3 - vertex 3.9592 -5.58648 0 - vertex 1.09298 -4.60426 0 - endloop - endfacet - facet normal -0.324179 -0.945996 -0 - outer loop - vertex 3.9592 -5.58648 0 - vertex 1.09298 -4.60426 -3 - vertex 3.9592 -5.58648 -3 - endloop - endfacet - facet normal -0.208038 -0.978121 0 - outer loop - vertex 3.9592 -5.58648 -3 - vertex 5.81183 -5.98051 0 - vertex 3.9592 -5.58648 0 - endloop - endfacet - facet normal -0.208038 -0.978121 -0 - outer loop - vertex 5.81183 -5.98051 0 - vertex 3.9592 -5.58648 -3 - vertex 5.81183 -5.98051 -3 - endloop - endfacet - facet normal 0.0684734 -0.997653 0 - outer loop - vertex 5.81183 -5.98051 -3 - vertex 7.21237 -5.88439 0 - vertex 5.81183 -5.98051 0 - endloop - endfacet - facet normal 0.0684734 -0.997653 0 - outer loop - vertex 7.21237 -5.88439 0 - vertex 5.81183 -5.98051 -3 - vertex 7.21237 -5.88439 -3 - endloop - endfacet - facet normal 0.219818 -0.975541 0 - outer loop - vertex 7.21237 -5.88439 -3 - vertex 7.79727 -5.75259 0 - vertex 7.21237 -5.88439 0 - endloop - endfacet - facet normal 0.219818 -0.975541 0 - outer loop - vertex 7.79727 -5.75259 0 - vertex 7.21237 -5.88439 -3 - vertex 7.79727 -5.75259 -3 - endloop - endfacet - facet normal 0.71334 0.700818 0 - outer loop - vertex 7.79727 -5.75259 0 - vertex 7.03104 -4.97268 -3 - vertex 7.03104 -4.97268 0 - endloop - endfacet - facet normal 0.71334 0.700818 0 - outer loop - vertex 7.03104 -4.97268 -3 - vertex 7.79727 -5.75259 0 - vertex 7.79727 -5.75259 -3 - endloop - endfacet - facet normal 0.78473 0.619838 0 - outer loop - vertex 7.03104 -4.97268 0 - vertex 5.97791 -3.63939 -3 - vertex 5.97791 -3.63939 0 - endloop - endfacet - facet normal 0.78473 0.619838 0 - outer loop - vertex 5.97791 -3.63939 -3 - vertex 7.03104 -4.97268 0 - vertex 7.03104 -4.97268 -3 - endloop - endfacet - facet normal 0.861751 0.507331 0 - outer loop - vertex 5.97791 -3.63939 0 - vertex 5.02006 -2.01238 -3 - vertex 5.02006 -2.01238 0 - endloop - endfacet - facet normal 0.861751 0.507331 0 - outer loop - vertex 5.02006 -2.01238 -3 - vertex 5.97791 -3.63939 0 - vertex 5.97791 -3.63939 -3 - endloop - endfacet - facet normal 0.918179 0.396167 0 - outer loop - vertex 5.02006 -2.01238 0 - vertex 4.37015 -0.506109 -3 - vertex 4.37015 -0.506109 0 - endloop - endfacet - facet normal 0.918179 0.396167 0 - outer loop - vertex 4.37015 -0.506109 -3 - vertex 5.02006 -2.01238 0 - vertex 5.02006 -2.01238 -3 - endloop - endfacet - facet normal 0.99125 0.131995 0 - outer loop - vertex 4.37015 -0.506109 0 - vertex 4.24084 0.464987 -3 - vertex 4.24084 0.464987 0 - endloop - endfacet - facet normal 0.99125 0.131995 0 - outer loop - vertex 4.24084 0.464987 -3 - vertex 4.37015 -0.506109 0 - vertex 4.37015 -0.506109 -3 - endloop - endfacet - facet normal 0.880686 -0.473701 0 - outer loop - vertex 4.24084 0.464987 0 - vertex 4.39665 0.754678 -3 - vertex 4.39665 0.754678 0 - endloop - endfacet - facet normal 0.880686 -0.473701 0 - outer loop - vertex 4.39665 0.754678 -3 - vertex 4.24084 0.464987 0 - vertex 4.24084 0.464987 -3 - endloop - endfacet - facet normal -0.827333 -0.561712 0 - outer loop - vertex 4.6091 0.441775 -3 - vertex 4.39665 0.754678 0 - vertex 4.39665 0.754678 -3 - endloop - endfacet - facet normal -0.827333 -0.561712 0 - outer loop - vertex 4.39665 0.754678 0 - vertex 4.6091 0.441775 -3 - vertex 4.6091 0.441775 0 - endloop - endfacet - facet normal -0.774222 -0.632914 0 - outer loop - vertex 6.41545 -1.76788 -3 - vertex 4.6091 0.441775 0 - vertex 4.6091 0.441775 -3 - endloop - endfacet - facet normal -0.774222 -0.632914 0 - outer loop - vertex 4.6091 0.441775 0 - vertex 6.41545 -1.76788 -3 - vertex 6.41545 -1.76788 0 - endloop - endfacet - facet normal -0.707099 -0.707114 0 - outer loop - vertex 6.41545 -1.76788 -3 - vertex 7.74282 -3.09522 0 - vertex 6.41545 -1.76788 0 - endloop - endfacet - facet normal -0.707099 -0.707114 -0 - outer loop - vertex 7.74282 -3.09522 0 - vertex 6.41545 -1.76788 -3 - vertex 7.74282 -3.09522 -3 - endloop - endfacet - facet normal -0.583644 -0.812009 0 - outer loop - vertex 7.74282 -3.09522 -3 - vertex 9.01294 -4.00814 0 - vertex 7.74282 -3.09522 0 - endloop - endfacet - facet normal -0.583644 -0.812009 -0 - outer loop - vertex 9.01294 -4.00814 0 - vertex 7.74282 -3.09522 -3 - vertex 9.01294 -4.00814 -3 - endloop - endfacet - facet normal -0.385065 -0.92289 0 - outer loop - vertex 9.01294 -4.00814 -3 - vertex 10.2758 -4.53506 0 - vertex 9.01294 -4.00814 0 - endloop - endfacet - facet normal -0.385065 -0.92289 -0 - outer loop - vertex 10.2758 -4.53506 0 - vertex 9.01294 -4.00814 -3 - vertex 10.2758 -4.53506 -3 - endloop - endfacet - facet normal -0.128613 -0.991695 0 - outer loop - vertex 10.2758 -4.53506 -3 - vertex 11.5814 -4.70438 0 - vertex 10.2758 -4.53506 0 - endloop - endfacet - facet normal -0.128613 -0.991695 -0 - outer loop - vertex 11.5814 -4.70438 0 - vertex 10.2758 -4.53506 -3 - vertex 11.5814 -4.70438 -3 - endloop - endfacet - facet normal 0.142467 -0.9898 0 - outer loop - vertex 11.5814 -4.70438 -3 - vertex 12.4032 -4.58609 0 - vertex 11.5814 -4.70438 0 - endloop - endfacet - facet normal 0.142467 -0.9898 0 - outer loop - vertex 12.4032 -4.58609 0 - vertex 11.5814 -4.70438 -3 - vertex 12.4032 -4.58609 -3 - endloop - endfacet - facet normal 0.390375 -0.920656 0 - outer loop - vertex 12.4032 -4.58609 -3 - vertex 13.172 -4.2601 0 - vertex 12.4032 -4.58609 0 - endloop - endfacet - facet normal 0.390375 -0.920656 0 - outer loop - vertex 13.172 -4.2601 0 - vertex 12.4032 -4.58609 -3 - vertex 13.172 -4.2601 -3 - endloop - endfacet - facet normal 0.607582 -0.794257 0 - outer loop - vertex 13.172 -4.2601 -3 - vertex 13.8131 -3.7697 0 - vertex 13.172 -4.2601 0 - endloop - endfacet - facet normal 0.607582 -0.794257 0 - outer loop - vertex 13.8131 -3.7697 0 - vertex 13.172 -4.2601 -3 - vertex 13.8131 -3.7697 -3 - endloop - endfacet - facet normal 0.812619 -0.582795 0 - outer loop - vertex 13.8131 -3.7697 0 - vertex 14.2516 -3.15818 -3 - vertex 14.2516 -3.15818 0 - endloop - endfacet - facet normal 0.812619 -0.582795 0 - outer loop - vertex 14.2516 -3.15818 -3 - vertex 13.8131 -3.7697 0 - vertex 13.8131 -3.7697 -3 - endloop - endfacet - facet normal 0.980799 -0.195021 0 - outer loop - vertex 14.2516 -3.15818 0 - vertex 14.333 -2.7489 -3 - vertex 14.333 -2.7489 0 - endloop - endfacet - facet normal 0.980799 -0.195021 0 - outer loop - vertex 14.333 -2.7489 -3 - vertex 14.2516 -3.15818 0 - vertex 14.2516 -3.15818 -3 - endloop - endfacet - facet normal 0.98573 0.168336 0 - outer loop - vertex 14.333 -2.7489 0 - vertex 14.2455 -2.23644 -3 - vertex 14.2455 -2.23644 0 - endloop - endfacet - facet normal 0.98573 0.168336 0 - outer loop - vertex 14.2455 -2.23644 -3 - vertex 14.333 -2.7489 0 - vertex 14.333 -2.7489 -3 - endloop - endfacet - facet normal 0.892341 0.451362 0 - outer loop - vertex 14.2455 -2.23644 0 - vertex 13.5923 -0.94501 -3 - vertex 13.5923 -0.94501 0 - endloop - endfacet - facet normal 0.892341 0.451362 0 - outer loop - vertex 13.5923 -0.94501 -3 - vertex 14.2455 -2.23644 0 - vertex 14.2455 -2.23644 -3 - endloop - endfacet - facet normal 0.784902 0.61962 0 - outer loop - vertex 13.5923 -0.94501 0 - vertex 12.3489 0.629998 -3 - vertex 12.3489 0.629998 0 - endloop - endfacet - facet normal 0.784902 0.61962 0 - outer loop - vertex 12.3489 0.629998 -3 - vertex 13.5923 -0.94501 0 - vertex 13.5923 -0.94501 -3 - endloop - endfacet - facet normal 0.706306 0.707906 -0 - outer loop - vertex 12.3489 0.629998 -3 - vertex 10.5724 2.40247 0 - vertex 12.3489 0.629998 0 - endloop - endfacet - facet normal 0.706306 0.707906 0 - outer loop - vertex 10.5724 2.40247 0 - vertex 12.3489 0.629998 -3 - vertex 10.5724 2.40247 -3 - endloop - endfacet - facet normal 0.641095 0.767462 -0 - outer loop - vertex 10.5724 2.40247 -3 - vertex 9.13441 3.60373 0 - vertex 10.5724 2.40247 0 - endloop - endfacet - facet normal 0.641095 0.767462 0 - outer loop - vertex 9.13441 3.60373 0 - vertex 10.5724 2.40247 -3 - vertex 9.13441 3.60373 -3 - endloop - endfacet - facet normal 0.56747 0.823394 -0 - outer loop - vertex 9.13441 3.60373 -3 - vertex 8.18559 4.25764 0 - vertex 9.13441 3.60373 0 - endloop - endfacet - facet normal 0.56747 0.823394 0 - outer loop - vertex 8.18559 4.25764 0 - vertex 9.13441 3.60373 -3 - vertex 8.18559 4.25764 -3 - endloop - endfacet - facet normal 0.457713 0.8891 -0 - outer loop - vertex 8.18559 4.25764 -3 - vertex 5.26682 5.76024 0 - vertex 8.18559 4.25764 0 - endloop - endfacet - facet normal 0.457713 0.8891 0 - outer loop - vertex 5.26682 5.76024 0 - vertex 8.18559 4.25764 -3 - vertex 5.26682 5.76024 -3 - endloop - endfacet - facet normal 0.356921 0.934135 -0 - outer loop - vertex 5.26682 5.76024 -3 - vertex 1.66409 7.13679 0 - vertex 5.26682 5.76024 0 - endloop - endfacet - facet normal 0.356921 0.934135 0 - outer loop - vertex 1.66409 7.13679 0 - vertex 5.26682 5.76024 -3 - vertex 1.66409 7.13679 -3 - endloop - endfacet - facet normal 0.389896 0.920859 -0 - outer loop - vertex 1.66409 7.13679 -3 - vertex -0.248642 7.94666 0 - vertex 1.66409 7.13679 0 - endloop - endfacet - facet normal 0.389896 0.920859 0 - outer loop - vertex -0.248642 7.94666 0 - vertex 1.66409 7.13679 -3 - vertex -0.248642 7.94666 -3 - endloop - endfacet - facet normal 0.471857 0.881675 -0 - outer loop - vertex -0.248642 7.94666 -3 - vertex -2.78119 9.30203 0 - vertex -0.248642 7.94666 0 - endloop - endfacet - facet normal 0.471857 0.881675 0 - outer loop - vertex -2.78119 9.30203 0 - vertex -0.248642 7.94666 -3 - vertex -2.78119 9.30203 -3 - endloop - endfacet - facet normal 0.524404 0.851469 -0 - outer loop - vertex -2.78119 9.30203 -3 - vertex -4.99153 10.6633 0 - vertex -2.78119 9.30203 0 - endloop - endfacet - facet normal 0.524404 0.851469 0 - outer loop - vertex -4.99153 10.6633 0 - vertex -2.78119 9.30203 -3 - vertex -4.99153 10.6633 -3 - endloop - endfacet - facet normal 0.658419 0.752652 -0 - outer loop - vertex -4.99153 10.6633 -3 - vertex -5.93765 11.491 0 - vertex -4.99153 10.6633 0 - endloop - endfacet - facet normal 0.658419 0.752652 0 - outer loop - vertex -5.93765 11.491 0 - vertex -4.99153 10.6633 -3 - vertex -5.93765 11.491 -3 - endloop - endfacet - facet normal 0.579458 -0.815002 0 - outer loop - vertex -5.93765 11.491 -3 - vertex -5.71478 11.6495 0 - vertex -5.93765 11.491 0 - endloop - endfacet - facet normal 0.579458 -0.815002 0 - outer loop - vertex -5.71478 11.6495 0 - vertex -5.93765 11.491 -3 - vertex -5.71478 11.6495 -3 - endloop - endfacet - facet normal 0.0440908 -0.999028 0 - outer loop - vertex -5.71478 11.6495 -3 - vertex -5.07797 11.6776 0 - vertex -5.71478 11.6495 0 - endloop - endfacet - facet normal 0.0440908 -0.999028 0 - outer loop - vertex -5.07797 11.6776 0 - vertex -5.71478 11.6495 -3 - vertex -5.07797 11.6776 -3 - endloop - endfacet - facet normal -0.139075 -0.990282 0 - outer loop - vertex -5.07797 11.6776 -3 - vertex -2.75335 11.3511 0 - vertex -5.07797 11.6776 0 - endloop - endfacet - facet normal -0.139075 -0.990282 -0 - outer loop - vertex -2.75335 11.3511 0 - vertex -5.07797 11.6776 -3 - vertex -2.75335 11.3511 -3 - endloop - endfacet - facet normal -0.139152 -0.990271 0 - outer loop - vertex -2.75335 11.3511 -3 - vertex -1.46211 11.1697 0 - vertex -2.75335 11.3511 0 - endloop - endfacet - facet normal -0.139152 -0.990271 -0 - outer loop - vertex -1.46211 11.1697 0 - vertex -2.75335 11.3511 -3 - vertex -1.46211 11.1697 -3 - endloop - endfacet - facet normal 0.0257838 -0.999668 0 - outer loop - vertex -1.46211 11.1697 -3 - vertex -0.394194 11.1972 0 - vertex -1.46211 11.1697 0 - endloop - endfacet - facet normal 0.0257838 -0.999668 0 - outer loop - vertex -0.394194 11.1972 0 - vertex -1.46211 11.1697 -3 - vertex -0.394194 11.1972 -3 - endloop - endfacet - facet normal 0.258065 -0.966128 0 - outer loop - vertex -0.394194 11.1972 -3 - vertex 0.535115 11.4454 0 - vertex -0.394194 11.1972 0 - endloop - endfacet - facet normal 0.258065 -0.966128 0 - outer loop - vertex 0.535115 11.4454 0 - vertex -0.394194 11.1972 -3 - vertex 0.535115 11.4454 -3 - endloop - endfacet - facet normal 0.481248 -0.876585 0 - outer loop - vertex 0.535115 11.4454 -3 - vertex 1.41055 11.926 0 - vertex 0.535115 11.4454 0 - endloop - endfacet - facet normal 0.481248 -0.876585 0 - outer loop - vertex 1.41055 11.926 0 - vertex 0.535115 11.4454 -3 - vertex 1.41055 11.926 -3 - endloop - endfacet - facet normal 0.671564 -0.740947 0 - outer loop - vertex 1.41055 11.926 -3 - vertex 1.87173 12.344 0 - vertex 1.41055 11.926 0 - endloop - endfacet - facet normal 0.671564 -0.740947 0 - outer loop - vertex 1.87173 12.344 0 - vertex 1.41055 11.926 -3 - vertex 1.87173 12.344 -3 - endloop - endfacet - facet normal 0.998006 0.0631228 0 - outer loop - vertex 1.87173 12.344 0 - vertex 1.8467 12.7398 -3 - vertex 1.8467 12.7398 0 - endloop - endfacet - facet normal 0.998006 0.0631228 0 - outer loop - vertex 1.8467 12.7398 -3 - vertex 1.87173 12.344 0 - vertex 1.87173 12.344 -3 - endloop - endfacet - facet normal 0.790564 0.612379 0 - outer loop - vertex 1.8467 12.7398 0 - vertex 1.50002 13.1874 -3 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0.790564 0.612379 0 - outer loop - vertex 1.50002 13.1874 -3 - vertex 1.8467 12.7398 0 - vertex 1.8467 12.7398 -3 - endloop - endfacet - facet normal 0.55001 0.835158 -0 - outer loop - vertex 1.50002 13.1874 -3 - vertex 0.918757 13.5702 0 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0.55001 0.835158 0 - outer loop - vertex 0.918757 13.5702 0 - vertex 1.50002 13.1874 -3 - vertex 0.918757 13.5702 -3 - endloop - endfacet - facet normal 0.293762 0.955879 -0 - outer loop - vertex 0.918757 13.5702 -3 - vertex -0.928844 14.138 0 - vertex 0.918757 13.5702 0 - endloop - endfacet - facet normal 0.293762 0.955879 0 - outer loop - vertex -0.928844 14.138 0 - vertex 0.918757 13.5702 -3 - vertex -0.928844 14.138 -3 - endloop - endfacet - facet normal 0.108589 0.994087 -0 - outer loop - vertex -0.928844 14.138 -3 - vertex -3.65881 14.4362 0 - vertex -0.928844 14.138 0 - endloop - endfacet - facet normal 0.108589 0.994087 0 - outer loop - vertex -3.65881 14.4362 0 - vertex -0.928844 14.138 -3 - vertex -3.65881 14.4362 -3 - endloop - endfacet - facet normal 0.00602839 0.999982 -0 - outer loop - vertex -3.65881 14.4362 -3 - vertex -7.23385 14.4578 0 - vertex -3.65881 14.4362 0 - endloop - endfacet - facet normal 0.00602839 0.999982 0 - outer loop - vertex -7.23385 14.4578 0 - vertex -3.65881 14.4362 -3 - vertex -7.23385 14.4578 -3 - endloop - endfacet - facet normal -0.0644585 0.99792 0 - outer loop - vertex -7.23385 14.4578 -3 - vertex -10.6367 14.238 0 - vertex -7.23385 14.4578 0 - endloop - endfacet - facet normal -0.0644585 0.99792 0 - outer loop - vertex -10.6367 14.238 0 - vertex -7.23385 14.4578 -3 - vertex -10.6367 14.238 -3 - endloop - endfacet - facet normal -0.276015 0.961153 0 - outer loop - vertex -10.6367 14.238 -3 - vertex -13.7227 13.3517 0 - vertex -10.6367 14.238 0 - endloop - endfacet - facet normal -0.276015 0.961153 0 - outer loop - vertex -13.7227 13.3517 0 - vertex -10.6367 14.238 -3 - vertex -13.7227 13.3517 -3 - endloop - endfacet - facet normal -0.25467 0.967028 0 - outer loop - vertex -13.7227 13.3517 -3 - vertex -17.5299 12.3491 0 - vertex -13.7227 13.3517 0 - endloop - endfacet - facet normal -0.25467 0.967028 0 - outer loop - vertex -17.5299 12.3491 0 - vertex -13.7227 13.3517 -3 - vertex -17.5299 12.3491 -3 - endloop - endfacet - facet normal -0.135841 0.990731 0 - outer loop - vertex -17.5299 12.3491 -3 - vertex -20.0298 12.0063 0 - vertex -17.5299 12.3491 0 - endloop - endfacet - facet normal -0.135841 0.990731 0 - outer loop - vertex -20.0298 12.0063 0 - vertex -17.5299 12.3491 -3 - vertex -20.0298 12.0063 -3 - endloop - endfacet - facet normal -0.101855 0.994799 0 - outer loop - vertex -20.0298 12.0063 -3 - vertex -22.4428 11.7593 0 - vertex -20.0298 12.0063 0 - endloop - endfacet - facet normal -0.101855 0.994799 0 - outer loop - vertex -22.4428 11.7593 0 - vertex -20.0298 12.0063 -3 - vertex -22.4428 11.7593 -3 - endloop - endfacet - facet normal -0.0308153 0.999525 0 - outer loop - vertex -22.4428 11.7593 -3 - vertex -25.7097 11.6586 0 - vertex -22.4428 11.7593 0 - endloop - endfacet - facet normal -0.0308153 0.999525 0 - outer loop - vertex -25.7097 11.6586 0 - vertex -22.4428 11.7593 -3 - vertex -25.7097 11.6586 -3 - endloop - endfacet - facet normal 0.0184303 0.99983 -0 - outer loop - vertex -25.7097 11.6586 -3 - vertex -28.6588 11.7129 0 - vertex -25.7097 11.6586 0 - endloop - endfacet - facet normal 0.0184303 0.99983 0 - outer loop - vertex -28.6588 11.7129 0 - vertex -25.7097 11.6586 -3 - vertex -28.6588 11.7129 -3 - endloop - endfacet - facet normal 0.147852 0.989009 -0 - outer loop - vertex -28.6588 11.7129 -3 - vertex -30.1182 11.9311 0 - vertex -28.6588 11.7129 0 - endloop - endfacet - facet normal 0.147852 0.989009 0 - outer loop - vertex -30.1182 11.9311 0 - vertex -28.6588 11.7129 -3 - vertex -30.1182 11.9311 -3 - endloop - endfacet - facet normal 0.940295 0.34036 0 - outer loop - vertex -30.1182 11.9311 0 - vertex -30.3887 12.6783 -3 - vertex -30.3887 12.6783 0 - endloop - endfacet - facet normal 0.940295 0.34036 0 - outer loop - vertex -30.3887 12.6783 -3 - vertex -30.1182 11.9311 0 - vertex -30.1182 11.9311 -3 - endloop - endfacet - facet normal 0.978074 -0.208259 0 - outer loop - vertex -30.3887 12.6783 0 - vertex -30.3118 13.0393 -3 - vertex -30.3118 13.0393 0 - endloop - endfacet - facet normal 0.978074 -0.208259 0 - outer loop - vertex -30.3118 13.0393 -3 - vertex -30.3887 12.6783 0 - vertex -30.3887 12.6783 -3 - endloop - endfacet - facet normal 0.488021 -0.872832 0 - outer loop - vertex -30.3118 13.0393 -3 - vertex -29.9412 13.2465 0 - vertex -30.3118 13.0393 0 - endloop - endfacet - facet normal 0.488021 -0.872832 0 - outer loop - vertex -29.9412 13.2465 0 - vertex -30.3118 13.0393 -3 - vertex -29.9412 13.2465 -3 - endloop - endfacet - facet normal 0.0669219 -0.997758 0 - outer loop - vertex -29.9412 13.2465 -3 - vertex -27.4778 13.4117 0 - vertex -29.9412 13.2465 0 - endloop - endfacet - facet normal 0.0669219 -0.997758 0 - outer loop - vertex -27.4778 13.4117 0 - vertex -29.9412 13.2465 -3 - vertex -27.4778 13.4117 -3 - endloop - endfacet - facet normal 0.0722192 -0.997389 0 - outer loop - vertex -27.4778 13.4117 -3 - vertex -24.873 13.6003 0 - vertex -27.4778 13.4117 0 - endloop - endfacet - facet normal 0.0722192 -0.997389 0 - outer loop - vertex -24.873 13.6003 0 - vertex -27.4778 13.4117 -3 - vertex -24.873 13.6003 -3 - endloop - endfacet - facet normal 0.168213 -0.985751 0 - outer loop - vertex -24.873 13.6003 -3 - vertex -22.3118 14.0374 0 - vertex -24.873 13.6003 0 - endloop - endfacet - facet normal 0.168213 -0.985751 0 - outer loop - vertex -22.3118 14.0374 0 - vertex -24.873 13.6003 -3 - vertex -22.3118 14.0374 -3 - endloop - endfacet - facet normal 0.261629 -0.965169 0 - outer loop - vertex -22.3118 14.0374 -3 - vertex -19.733 14.7364 0 - vertex -22.3118 14.0374 0 - endloop - endfacet - facet normal 0.261629 -0.965169 0 - outer loop - vertex -19.733 14.7364 0 - vertex -22.3118 14.0374 -3 - vertex -19.733 14.7364 -3 - endloop - endfacet - facet normal 0.344283 -0.938866 0 - outer loop - vertex -19.733 14.7364 -3 - vertex -17.0754 15.711 0 - vertex -19.733 14.7364 0 - endloop - endfacet - facet normal 0.344283 -0.938866 0 - outer loop - vertex -17.0754 15.711 0 - vertex -19.733 14.7364 -3 - vertex -17.0754 15.711 -3 - endloop - endfacet - facet normal 0.435809 -0.900039 0 - outer loop - vertex -17.0754 15.711 -3 - vertex -15.009 16.7116 0 - vertex -17.0754 15.711 0 - endloop - endfacet - facet normal 0.435809 -0.900039 0 - outer loop - vertex -15.009 16.7116 0 - vertex -17.0754 15.711 -3 - vertex -15.009 16.7116 -3 - endloop - endfacet - facet normal 0.583649 -0.812006 0 - outer loop - vertex -15.009 16.7116 -3 - vertex -12.0133 18.8648 0 - vertex -15.009 16.7116 0 - endloop - endfacet - facet normal 0.583649 -0.812006 0 - outer loop - vertex -12.0133 18.8648 0 - vertex -15.009 16.7116 -3 - vertex -12.0133 18.8648 -3 - endloop - endfacet - facet normal 0.632447 -0.774604 0 - outer loop - vertex -12.0133 18.8648 -3 - vertex -11.1208 19.5935 0 - vertex -12.0133 18.8648 0 - endloop - endfacet - facet normal 0.632447 -0.774604 0 - outer loop - vertex -11.1208 19.5935 0 - vertex -12.0133 18.8648 -3 - vertex -11.1208 19.5935 -3 - endloop - endfacet - facet normal 0.915349 -0.40266 0 - outer loop - vertex -11.1208 19.5935 0 - vertex -10.9412 20.0018 -3 - vertex -10.9412 20.0018 0 - endloop - endfacet - facet normal 0.915349 -0.40266 0 - outer loop - vertex -10.9412 20.0018 -3 - vertex -11.1208 19.5935 0 - vertex -11.1208 19.5935 -3 - endloop - endfacet - facet normal 0.285826 0.958281 -0 - outer loop - vertex -10.9412 20.0018 -3 - vertex -11.5389 20.1801 0 - vertex -10.9412 20.0018 0 - endloop - endfacet - facet normal 0.285826 0.958281 0 - outer loop - vertex -11.5389 20.1801 0 - vertex -10.9412 20.0018 -3 - vertex -11.5389 20.1801 -3 - endloop - endfacet - facet normal 0.0268157 0.99964 -0 - outer loop - vertex -11.5389 20.1801 -3 - vertex -12.9783 20.2187 0 - vertex -11.5389 20.1801 0 - endloop - endfacet - facet normal 0.0268157 0.99964 0 - outer loop - vertex -12.9783 20.2187 0 - vertex -11.5389 20.1801 -3 - vertex -12.9783 20.2187 -3 - endloop - endfacet - facet normal -0.0662732 0.997802 0 - outer loop - vertex -12.9783 20.2187 -3 - vertex -16.3196 19.9968 0 - vertex -12.9783 20.2187 0 - endloop - endfacet - facet normal -0.0662732 0.997802 0 - outer loop - vertex -16.3196 19.9968 0 - vertex -12.9783 20.2187 -3 - vertex -16.3196 19.9968 -3 - endloop - endfacet - facet normal -0.149342 0.988786 0 - outer loop - vertex -16.3196 19.9968 -3 - vertex -20.1789 19.4139 0 - vertex -16.3196 19.9968 0 - endloop - endfacet - facet normal -0.149342 0.988786 0 - outer loop - vertex -20.1789 19.4139 0 - vertex -16.3196 19.9968 -3 - vertex -20.1789 19.4139 -3 - endloop - endfacet - facet normal -0.0917718 0.99578 0 - outer loop - vertex -20.1789 19.4139 -3 - vertex -24.1572 19.0472 0 - vertex -20.1789 19.4139 0 - endloop - endfacet - facet normal -0.0917718 0.99578 0 - outer loop - vertex -24.1572 19.0472 0 - vertex -20.1789 19.4139 -3 - vertex -24.1572 19.0472 -3 - endloop - endfacet - facet normal -0.0311054 0.999516 0 - outer loop - vertex -24.1572 19.0472 -3 - vertex -27.5587 18.9414 0 - vertex -24.1572 19.0472 0 - endloop - endfacet - facet normal -0.0311054 0.999516 0 - outer loop - vertex -27.5587 18.9414 0 - vertex -24.1572 19.0472 -3 - vertex -27.5587 18.9414 -3 - endloop - endfacet - facet normal 0.0933351 0.995635 -0 - outer loop - vertex -27.5587 18.9414 -3 - vertex -29.687 19.1409 0 - vertex -27.5587 18.9414 0 - endloop - endfacet - facet normal 0.0933351 0.995635 0 - outer loop - vertex -29.687 19.1409 0 - vertex -27.5587 18.9414 -3 - vertex -29.687 19.1409 -3 - endloop - endfacet - facet normal 0.326889 0.945063 -0 - outer loop - vertex -29.687 19.1409 -3 - vertex -33.0651 20.3093 0 - vertex -29.687 19.1409 0 - endloop - endfacet - facet normal 0.326889 0.945063 0 - outer loop - vertex -33.0651 20.3093 0 - vertex -29.687 19.1409 -3 - vertex -33.0651 20.3093 -3 - endloop - endfacet - facet normal 0.441663 0.897181 -0 - outer loop - vertex -33.0651 20.3093 -3 - vertex -35.7552 21.6337 0 - vertex -33.0651 20.3093 0 - endloop - endfacet - facet normal 0.441663 0.897181 0 - outer loop - vertex -35.7552 21.6337 0 - vertex -33.0651 20.3093 -3 - vertex -35.7552 21.6337 -3 - endloop - endfacet - facet normal 0.596659 0.802495 -0 - outer loop - vertex -35.7552 21.6337 -3 - vertex -37.6991 23.0789 0 - vertex -35.7552 21.6337 0 - endloop - endfacet - facet normal 0.596659 0.802495 0 - outer loop - vertex -37.6991 23.0789 0 - vertex -35.7552 21.6337 -3 - vertex -37.6991 23.0789 -3 - endloop - endfacet - facet normal 0.746999 0.664825 0 - outer loop - vertex -37.6991 23.0789 0 - vertex -38.3729 23.836 -3 - vertex -38.3729 23.836 0 - endloop - endfacet - facet normal 0.746999 0.664825 0 - outer loop - vertex -38.3729 23.836 -3 - vertex -37.6991 23.0789 0 - vertex -37.6991 23.0789 -3 - endloop - endfacet - facet normal 0.857117 0.515122 0 - outer loop - vertex -38.3729 23.836 0 - vertex -38.8382 24.6102 -3 - vertex -38.8382 24.6102 0 - endloop - endfacet - facet normal 0.857117 0.515122 0 - outer loop - vertex -38.8382 24.6102 -3 - vertex -38.3729 23.836 0 - vertex -38.3729 23.836 -3 - endloop - endfacet - facet normal 0.945559 0.32545 0 - outer loop - vertex -38.8382 24.6102 0 - vertex -39.1303 25.4589 -3 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0.945559 0.32545 0 - outer loop - vertex -39.1303 25.4589 -3 - vertex -38.8382 24.6102 0 - vertex -38.8382 24.6102 -3 - endloop - endfacet - facet normal 0.969805 -0.24388 0 - outer loop - vertex -39.1303 25.4589 0 - vertex -39.0347 25.8392 -3 - vertex -39.0347 25.8392 0 - endloop - endfacet - facet normal 0.969805 -0.24388 0 - outer loop - vertex -39.0347 25.8392 -3 - vertex -39.1303 25.4589 0 - vertex -39.1303 25.4589 -3 - endloop - endfacet - facet normal -0.217347 -0.976094 0 - outer loop - vertex -39.0347 25.8392 -3 - vertex -38.5782 25.7376 0 - vertex -39.0347 25.8392 0 - endloop - endfacet - facet normal -0.217347 -0.976094 -0 - outer loop - vertex -38.5782 25.7376 0 - vertex -39.0347 25.8392 -3 - vertex -38.5782 25.7376 -3 - endloop - endfacet - facet normal -0.602798 -0.797894 0 - outer loop - vertex -38.5782 25.7376 -3 - vertex -37.7877 25.1404 0 - vertex -38.5782 25.7376 0 - endloop - endfacet - facet normal -0.602798 -0.797894 -0 - outer loop - vertex -37.7877 25.1404 0 - vertex -38.5782 25.7376 -3 - vertex -37.7877 25.1404 -3 - endloop - endfacet - facet normal -0.582847 -0.812582 0 - outer loop - vertex -37.7877 25.1404 -3 - vertex -36.1697 23.9798 0 - vertex -37.7877 25.1404 0 - endloop - endfacet - facet normal -0.582847 -0.812582 -0 - outer loop - vertex -36.1697 23.9798 0 - vertex -37.7877 25.1404 -3 - vertex -36.1697 23.9798 -3 - endloop - endfacet - facet normal -0.438905 -0.898534 0 - outer loop - vertex -36.1697 23.9798 -3 - vertex -34.2108 23.023 0 - vertex -36.1697 23.9798 0 - endloop - endfacet - facet normal -0.438905 -0.898534 -0 - outer loop - vertex -34.2108 23.023 0 - vertex -36.1697 23.9798 -3 - vertex -34.2108 23.023 -3 - endloop - endfacet - facet normal -0.304923 -0.952377 0 - outer loop - vertex -34.2108 23.023 -3 - vertex -32.1178 22.3529 0 - vertex -34.2108 23.023 0 - endloop - endfacet - facet normal -0.304923 -0.952377 -0 - outer loop - vertex -32.1178 22.3529 0 - vertex -34.2108 23.023 -3 - vertex -32.1178 22.3529 -3 - endloop - endfacet - facet normal -0.147036 -0.989131 0 - outer loop - vertex -32.1178 22.3529 -3 - vertex -30.0976 22.0525 0 - vertex -32.1178 22.3529 0 - endloop - endfacet - facet normal -0.147036 -0.989131 -0 - outer loop - vertex -30.0976 22.0525 0 - vertex -32.1178 22.3529 -3 - vertex -30.0976 22.0525 -3 - endloop - endfacet - facet normal -0.0457632 -0.998952 0 - outer loop - vertex -30.0976 22.0525 -3 - vertex -28.3511 21.9725 0 - vertex -30.0976 22.0525 0 - endloop - endfacet - facet normal -0.0457632 -0.998952 -0 - outer loop - vertex -28.3511 21.9725 0 - vertex -30.0976 22.0525 -3 - vertex -28.3511 21.9725 -3 - endloop - endfacet - facet normal 0.491954 0.870621 -0 - outer loop - vertex -28.3511 21.9725 -3 - vertex -29.0303 22.3563 0 - vertex -28.3511 21.9725 0 - endloop - endfacet - facet normal 0.491954 0.870621 0 - outer loop - vertex -29.0303 22.3563 0 - vertex -28.3511 21.9725 -3 - vertex -29.0303 22.3563 -3 - endloop - endfacet - facet normal 0.563624 0.826031 -0 - outer loop - vertex -29.0303 22.3563 -3 - vertex -30.3878 23.2826 0 - vertex -29.0303 22.3563 0 - endloop - endfacet - facet normal 0.563624 0.826031 0 - outer loop - vertex -30.3878 23.2826 0 - vertex -29.0303 22.3563 -3 - vertex -30.3878 23.2826 -3 - endloop - endfacet - facet normal 0.796403 0.604766 0 - outer loop - vertex -30.3878 23.2826 0 - vertex -31.0943 24.213 -3 - vertex -31.0943 24.213 0 - endloop - endfacet - facet normal 0.796403 0.604766 0 - outer loop - vertex -31.0943 24.213 -3 - vertex -30.3878 23.2826 0 - vertex -30.3878 23.2826 -3 - endloop - endfacet - facet normal 0.951494 0.307667 0 - outer loop - vertex -31.0943 24.213 0 - vertex -31.2773 24.779 -3 - vertex -31.2773 24.779 0 - endloop - endfacet - facet normal 0.951494 0.307667 0 - outer loop - vertex -31.2773 24.779 -3 - vertex -31.0943 24.213 0 - vertex -31.0943 24.213 -3 - endloop - endfacet - facet normal 0.935098 -0.35439 0 - outer loop - vertex -31.2773 24.779 0 - vertex -31.1793 25.0376 -3 - vertex -31.1793 25.0376 0 - endloop - endfacet - facet normal 0.935098 -0.35439 0 - outer loop - vertex -31.1793 25.0376 -3 - vertex -31.2773 24.779 0 - vertex -31.2773 24.779 -3 - endloop - endfacet - facet normal -0.153546 -0.988142 0 - outer loop - vertex -31.1793 25.0376 -3 - vertex -30.8173 24.9813 0 - vertex -31.1793 25.0376 0 - endloop - endfacet - facet normal -0.153546 -0.988142 -0 - outer loop - vertex -30.8173 24.9813 0 - vertex -31.1793 25.0376 -3 - vertex -30.8173 24.9813 -3 - endloop - endfacet - facet normal -0.527885 -0.849316 0 - outer loop - vertex -30.8173 24.9813 -3 - vertex -30.2081 24.6027 0 - vertex -30.8173 24.9813 0 - endloop - endfacet - facet normal -0.527885 -0.849316 -0 - outer loop - vertex -30.2081 24.6027 0 - vertex -30.8173 24.9813 -3 - vertex -30.2081 24.6027 -3 - endloop - endfacet - facet normal -0.502983 -0.864296 0 - outer loop - vertex -30.2081 24.6027 -3 - vertex -29.3958 24.13 0 - vertex -30.2081 24.6027 0 - endloop - endfacet - facet normal -0.502983 -0.864296 -0 - outer loop - vertex -29.3958 24.13 0 - vertex -30.2081 24.6027 -3 - vertex -29.3958 24.13 -3 - endloop - endfacet - facet normal -0.286557 -0.958063 0 - outer loop - vertex -29.3958 24.13 -3 - vertex -28.4642 23.8513 0 - vertex -29.3958 24.13 0 - endloop - endfacet - facet normal -0.286557 -0.958063 -0 - outer loop - vertex -28.4642 23.8513 0 - vertex -29.3958 24.13 -3 - vertex -28.4642 23.8513 -3 - endloop - endfacet - facet normal -0.0843211 -0.996439 0 - outer loop - vertex -28.4642 23.8513 -3 - vertex -27.3687 23.7586 0 - vertex -28.4642 23.8513 0 - endloop - endfacet - facet normal -0.0843211 -0.996439 -0 - outer loop - vertex -27.3687 23.7586 0 - vertex -28.4642 23.8513 -3 - vertex -27.3687 23.7586 -3 - endloop - endfacet - facet normal 0.065101 -0.997879 0 - outer loop - vertex -27.3687 23.7586 -3 - vertex -26.0647 23.8437 0 - vertex -27.3687 23.7586 0 - endloop - endfacet - facet normal 0.065101 -0.997879 0 - outer loop - vertex -26.0647 23.8437 0 - vertex -27.3687 23.7586 -3 - vertex -26.0647 23.8437 -3 - endloop - endfacet - facet normal 0.119464 -0.992839 0 - outer loop - vertex -26.0647 23.8437 -3 - vertex -24.664 24.0122 0 - vertex -26.0647 23.8437 0 - endloop - endfacet - facet normal 0.119464 -0.992839 0 - outer loop - vertex -24.664 24.0122 0 - vertex -26.0647 23.8437 -3 - vertex -24.664 24.0122 -3 - endloop - endfacet - facet normal 0.193693 0.981062 -0 - outer loop - vertex -24.664 24.0122 -3 - vertex -26.0224 24.2804 0 - vertex -24.664 24.0122 0 - endloop - endfacet - facet normal 0.193693 0.981062 0 - outer loop - vertex -26.0224 24.2804 0 - vertex -24.664 24.0122 -3 - vertex -26.0224 24.2804 -3 - endloop - endfacet - facet normal 0.282043 0.959402 -0 - outer loop - vertex -26.0224 24.2804 -3 - vertex -28.1365 24.9019 0 - vertex -26.0224 24.2804 0 - endloop - endfacet - facet normal 0.282043 0.959402 0 - outer loop - vertex -28.1365 24.9019 0 - vertex -26.0224 24.2804 -3 - vertex -28.1365 24.9019 -3 - endloop - endfacet - facet normal 0.487989 0.87285 -0 - outer loop - vertex -28.1365 24.9019 -3 - vertex -29.9035 25.8898 0 - vertex -28.1365 24.9019 0 - endloop - endfacet - facet normal 0.487989 0.87285 0 - outer loop - vertex -29.9035 25.8898 0 - vertex -28.1365 24.9019 -3 - vertex -29.9035 25.8898 -3 - endloop - endfacet - facet normal 0.641558 0.767075 -0 - outer loop - vertex -29.9035 25.8898 -3 - vertex -31.116 26.9038 0 - vertex -29.9035 25.8898 0 - endloop - endfacet - facet normal 0.641558 0.767075 0 - outer loop - vertex -31.116 26.9038 0 - vertex -29.9035 25.8898 -3 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0.876545 0.48132 0 - outer loop - vertex -31.116 26.9038 0 - vertex -31.2912 27.2229 -3 - vertex -31.2912 27.2229 0 - endloop - endfacet - facet normal 0.876545 0.48132 0 - outer loop - vertex -31.2912 27.2229 -3 - vertex -31.116 26.9038 0 - vertex -31.116 26.9038 -3 - endloop - endfacet - facet normal 0.956151 -0.292876 0 - outer loop - vertex -31.2912 27.2229 0 - vertex -31.2177 27.4629 -3 - vertex -31.2177 27.4629 0 - endloop - endfacet - facet normal 0.956151 -0.292876 0 - outer loop - vertex -31.2177 27.4629 -3 - vertex -31.2912 27.2229 0 - vertex -31.2912 27.2229 -3 - endloop - endfacet - facet normal 0.0512406 -0.998686 0 - outer loop - vertex -31.2177 27.4629 -3 - vertex -30.666 27.4912 0 - vertex -31.2177 27.4629 0 - endloop - endfacet - facet normal 0.0512406 -0.998686 0 - outer loop - vertex -30.666 27.4912 0 - vertex -31.2177 27.4629 -3 - vertex -30.666 27.4912 -3 - endloop - endfacet - facet normal -0.343857 -0.939022 0 - outer loop - vertex -30.666 27.4912 -3 - vertex -29.2879 26.9865 0 - vertex -30.666 27.4912 0 - endloop - endfacet - facet normal -0.343857 -0.939022 -0 - outer loop - vertex -29.2879 26.9865 0 - vertex -30.666 27.4912 -3 - vertex -29.2879 26.9865 -3 - endloop - endfacet - facet normal -0.315787 -0.94883 0 - outer loop - vertex -29.2879 26.9865 -3 - vertex -27.4214 26.3653 0 - vertex -29.2879 26.9865 0 - endloop - endfacet - facet normal -0.315787 -0.94883 -0 - outer loop - vertex -27.4214 26.3653 0 - vertex -29.2879 26.9865 -3 - vertex -27.4214 26.3653 -3 - endloop - endfacet - facet normal -0.0620611 -0.998072 0 - outer loop - vertex -27.4214 26.3653 -3 - vertex -24.8433 26.205 0 - vertex -27.4214 26.3653 0 - endloop - endfacet - facet normal -0.0620611 -0.998072 -0 - outer loop - vertex -24.8433 26.205 0 - vertex -27.4214 26.3653 -3 - vertex -24.8433 26.205 -3 - endloop - endfacet - facet normal 0.0113967 -0.999935 0 - outer loop - vertex -24.8433 26.205 -3 - vertex -22.0473 26.2369 0 - vertex -24.8433 26.205 0 - endloop - endfacet - facet normal 0.0113967 -0.999935 0 - outer loop - vertex -22.0473 26.2369 0 - vertex -24.8433 26.205 -3 - vertex -22.0473 26.2369 -3 - endloop - endfacet - facet normal 0.196528 -0.980498 0 - outer loop - vertex -22.0473 26.2369 -3 - vertex -21.4485 26.3569 0 - vertex -22.0473 26.2369 0 - endloop - endfacet - facet normal 0.196528 -0.980498 0 - outer loop - vertex -21.4485 26.3569 0 - vertex -22.0473 26.2369 -3 - vertex -21.4485 26.3569 -3 - endloop - endfacet - facet normal 0.743557 -0.668673 0 - outer loop - vertex -21.4485 26.3569 0 - vertex -21.2681 26.5576 -3 - vertex -21.2681 26.5576 0 - endloop - endfacet - facet normal 0.743557 -0.668673 0 - outer loop - vertex -21.2681 26.5576 -3 - vertex -21.4485 26.3569 0 - vertex -21.4485 26.3569 -3 - endloop - endfacet - facet normal 0.261077 0.965318 -0 - outer loop - vertex -21.2681 26.5576 -3 - vertex -22.4212 26.8695 0 - vertex -21.2681 26.5576 0 - endloop - endfacet - facet normal 0.261077 0.965318 0 - outer loop - vertex -22.4212 26.8695 0 - vertex -21.2681 26.5576 -3 - vertex -22.4212 26.8695 -3 - endloop - endfacet - facet normal 0.309949 0.950753 -0 - outer loop - vertex -22.4212 26.8695 -3 - vertex -23.8902 27.3484 0 - vertex -22.4212 26.8695 0 - endloop - endfacet - facet normal 0.309949 0.950753 0 - outer loop - vertex -23.8902 27.3484 0 - vertex -22.4212 26.8695 -3 - vertex -23.8902 27.3484 -3 - endloop - endfacet - facet normal 0.603717 0.797199 -0 - outer loop - vertex -23.8902 27.3484 -3 - vertex -24.3225 27.6757 0 - vertex -23.8902 27.3484 0 - endloop - endfacet - facet normal 0.603717 0.797199 0 - outer loop - vertex -24.3225 27.6757 0 - vertex -23.8902 27.3484 -3 - vertex -24.3225 27.6757 -3 - endloop - endfacet - facet normal 0.98955 0.144189 0 - outer loop - vertex -24.3225 27.6757 0 - vertex -24.3632 27.9554 -3 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal 0.98955 0.144189 0 - outer loop - vertex -24.3632 27.9554 -3 - vertex -24.3225 27.6757 0 - vertex -24.3225 27.6757 -3 - endloop - endfacet - facet normal -0.0279773 -0.999609 0 - outer loop - vertex -24.3632 27.9554 -3 - vertex -22.4093 27.9007 0 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal -0.0279773 -0.999609 -0 - outer loop - vertex -22.4093 27.9007 0 - vertex -24.3632 27.9554 -3 - vertex -22.4093 27.9007 -3 - endloop - endfacet - facet normal -0.150133 -0.988666 0 - outer loop - vertex -22.4093 27.9007 -3 - vertex -20.8096 27.6578 0 - vertex -22.4093 27.9007 0 - endloop - endfacet - facet normal -0.150133 -0.988666 -0 - outer loop - vertex -20.8096 27.6578 0 - vertex -22.4093 27.9007 -3 - vertex -20.8096 27.6578 -3 - endloop - endfacet - facet normal -0.458094 -0.888904 0 - outer loop - vertex -20.8096 27.6578 -3 - vertex -19.9485 27.2141 0 - vertex -20.8096 27.6578 0 - endloop - endfacet - facet normal -0.458094 -0.888904 -0 - outer loop - vertex -19.9485 27.2141 0 - vertex -20.8096 27.6578 -3 - vertex -19.9485 27.2141 -3 - endloop - endfacet - facet normal -0.64002 -0.768358 0 - outer loop - vertex -19.9485 27.2141 -3 - vertex -19.335 26.703 0 - vertex -19.9485 27.2141 0 - endloop - endfacet - facet normal -0.64002 -0.768358 -0 - outer loop - vertex -19.335 26.703 0 - vertex -19.9485 27.2141 -3 - vertex -19.335 26.703 -3 - endloop - endfacet - facet normal 0.254037 -0.967194 0 - outer loop - vertex -19.335 26.703 -3 - vertex -16.9875 27.3196 0 - vertex -19.335 26.703 0 - endloop - endfacet - facet normal 0.254037 -0.967194 0 - outer loop - vertex -16.9875 27.3196 0 - vertex -19.335 26.703 -3 - vertex -16.9875 27.3196 -3 - endloop - endfacet - facet normal 0.212489 -0.977163 0 - outer loop - vertex -16.9875 27.3196 -3 - vertex -15.2376 27.7001 0 - vertex -16.9875 27.3196 0 - endloop - endfacet - facet normal 0.212489 -0.977163 0 - outer loop - vertex -15.2376 27.7001 0 - vertex -16.9875 27.3196 -3 - vertex -15.2376 27.7001 -3 - endloop - endfacet - facet normal 0.0813778 -0.996683 0 - outer loop - vertex -15.2376 27.7001 -3 - vertex -13.5562 27.8374 0 - vertex -15.2376 27.7001 0 - endloop - endfacet - facet normal 0.0813778 -0.996683 0 - outer loop - vertex -13.5562 27.8374 0 - vertex -15.2376 27.7001 -3 - vertex -13.5562 27.8374 -3 - endloop - endfacet - facet normal -0.0507625 -0.998711 0 - outer loop - vertex -13.5562 27.8374 -3 - vertex -11.546 27.7352 0 - vertex -13.5562 27.8374 0 - endloop - endfacet - facet normal -0.0507625 -0.998711 -0 - outer loop - vertex -11.546 27.7352 0 - vertex -13.5562 27.8374 -3 - vertex -11.546 27.7352 -3 - endloop - endfacet - facet normal -0.122536 -0.992464 0 - outer loop - vertex -11.546 27.7352 -3 - vertex -8.80952 27.3973 0 - vertex -11.546 27.7352 0 - endloop - endfacet - facet normal -0.122536 -0.992464 -0 - outer loop - vertex -8.80952 27.3973 0 - vertex -11.546 27.7352 -3 - vertex -8.80952 27.3973 -3 - endloop - endfacet - facet normal -0.0983783 -0.995149 0 - outer loop - vertex -8.80952 27.3973 -3 - vertex -7.25507 27.2437 0 - vertex -8.80952 27.3973 0 - endloop - endfacet - facet normal -0.0983783 -0.995149 -0 - outer loop - vertex -7.25507 27.2437 0 - vertex -8.80952 27.3973 -3 - vertex -7.25507 27.2437 -3 - endloop - endfacet - facet normal 0.163792 -0.986495 0 - outer loop - vertex -7.25507 27.2437 -3 - vertex -6.55612 27.3597 0 - vertex -7.25507 27.2437 0 - endloop - endfacet - facet normal 0.163792 -0.986495 0 - outer loop - vertex -6.55612 27.3597 0 - vertex -7.25507 27.2437 -3 - vertex -6.55612 27.3597 -3 - endloop - endfacet - facet normal 0.830428 -0.557126 0 - outer loop - vertex -6.55612 27.3597 0 - vertex -6.38329 27.6173 -3 - vertex -6.38329 27.6173 0 - endloop - endfacet - facet normal 0.830428 -0.557126 0 - outer loop - vertex -6.38329 27.6173 -3 - vertex -6.55612 27.3597 0 - vertex -6.55612 27.3597 -3 - endloop - endfacet - facet normal 0.987965 -0.154679 0 - outer loop - vertex -6.38329 27.6173 0 - vertex -6.28322 28.2565 -3 - vertex -6.28322 28.2565 0 - endloop - endfacet - facet normal 0.987965 -0.154679 0 - outer loop - vertex -6.28322 28.2565 -3 - vertex -6.38329 27.6173 0 - vertex -6.38329 27.6173 -3 - endloop - endfacet - facet normal 0.99984 -0.0178603 0 - outer loop - vertex -6.28322 28.2565 0 - vertex -6.22131 31.7226 -3 - vertex -6.22131 31.7226 0 - endloop - endfacet - facet normal 0.99984 -0.0178603 0 - outer loop - vertex -6.22131 31.7226 -3 - vertex -6.28322 28.2565 0 - vertex -6.28322 28.2565 -3 - endloop - endfacet - facet normal 0.999322 -0.0368307 0 - outer loop - vertex -6.22131 31.7226 0 - vertex -6.055 36.2349 -3 - vertex -6.055 36.2349 0 - endloop - endfacet - facet normal 0.999322 -0.0368307 0 - outer loop - vertex -6.055 36.2349 -3 - vertex -6.22131 31.7226 0 - vertex -6.22131 31.7226 -3 - endloop - endfacet - facet normal 0.823305 -0.5676 0 - outer loop - vertex -6.055 36.2349 0 - vertex -5.8163 36.5812 -3 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal 0.823305 -0.5676 0 - outer loop - vertex -5.8163 36.5812 -3 - vertex -6.055 36.2349 0 - vertex -6.055 36.2349 -3 - endloop - endfacet - facet normal -0.301391 -0.953501 0 - outer loop - vertex -5.8163 36.5812 -3 - vertex -5.55994 36.5001 0 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal -0.301391 -0.953501 -0 - outer loop - vertex -5.55994 36.5001 0 - vertex -5.8163 36.5812 -3 - vertex -5.55994 36.5001 -3 - endloop - endfacet - facet normal -0.928472 -0.371402 0 - outer loop - vertex -4.97284 35.0324 -3 - vertex -5.55994 36.5001 0 - vertex -5.55994 36.5001 -3 - endloop - endfacet - facet normal -0.928472 -0.371402 0 - outer loop - vertex -5.55994 36.5001 0 - vertex -4.97284 35.0324 -3 - vertex -4.97284 35.0324 0 - endloop - endfacet - facet normal -0.946087 -0.323913 0 - outer loop - vertex -3.97987 32.1322 -3 - vertex -4.97284 35.0324 0 - vertex -4.97284 35.0324 -3 - endloop - endfacet - facet normal -0.946087 -0.323913 0 - outer loop - vertex -4.97284 35.0324 0 - vertex -3.97987 32.1322 -3 - vertex -3.97987 32.1322 0 - endloop - endfacet - facet normal -0.891782 -0.452466 0 - outer loop - vertex -2.77953 29.7664 -3 - vertex -3.97987 32.1322 0 - vertex -3.97987 32.1322 -3 - endloop - endfacet - facet normal -0.891782 -0.452466 0 - outer loop - vertex -3.97987 32.1322 0 - vertex -2.77953 29.7664 -3 - vertex -2.77953 29.7664 0 - endloop - endfacet - facet normal -0.788004 -0.61567 0 - outer loop - vertex -1.46161 28.0795 -3 - vertex -2.77953 29.7664 0 - vertex -2.77953 29.7664 -3 - endloop - endfacet - facet normal -0.788004 -0.61567 0 - outer loop - vertex -2.77953 29.7664 0 - vertex -1.46161 28.0795 -3 - vertex -1.46161 28.0795 0 - endloop - endfacet - facet normal -0.627252 -0.778816 0 - outer loop - vertex -1.46161 28.0795 -3 - vertex -0.786632 27.5359 0 - vertex -1.46161 28.0795 0 - endloop - endfacet - facet normal -0.627252 -0.778816 -0 - outer loop - vertex -0.786632 27.5359 0 - vertex -1.46161 28.0795 -3 - vertex -0.786632 27.5359 -3 - endloop - endfacet - facet normal -0.430266 -0.902702 0 - outer loop - vertex -0.786632 27.5359 -3 - vertex -0.115935 27.2162 0 - vertex -0.786632 27.5359 0 - endloop - endfacet - facet normal -0.430266 -0.902702 -0 - outer loop - vertex -0.115935 27.2162 0 - vertex -0.786632 27.5359 -3 - vertex -0.115935 27.2162 -3 - endloop - endfacet - facet normal -0.108301 -0.994118 0 - outer loop - vertex -0.115935 27.2162 -3 - vertex 0.858783 27.1101 0 - vertex -0.115935 27.2162 0 - endloop - endfacet - facet normal -0.108301 -0.994118 -0 - outer loop - vertex 0.858783 27.1101 0 - vertex -0.115935 27.2162 -3 - vertex 0.858783 27.1101 -3 - endloop - endfacet - facet normal 0.992113 -0.125344 0 - outer loop - vertex 0.858783 27.1101 0 - vertex 1.04836 28.6106 -3 - vertex 1.04836 28.6106 0 - endloop - endfacet - facet normal 0.992113 -0.125344 0 - outer loop - vertex 1.04836 28.6106 -3 - vertex 0.858783 27.1101 0 - vertex 0.858783 27.1101 -3 - endloop - endfacet - facet normal 0.998104 -0.0615481 0 - outer loop - vertex 1.04836 28.6106 0 - vertex 1.1273 29.8907 -3 - vertex 1.1273 29.8907 0 - endloop - endfacet - facet normal 0.998104 -0.0615481 0 - outer loop - vertex 1.1273 29.8907 -3 - vertex 1.04836 28.6106 0 - vertex 1.04836 28.6106 -3 - endloop - endfacet - facet normal 0.981864 -0.189585 0 - outer loop - vertex 1.1273 29.8907 0 - vertex 1.37489 31.173 -3 - vertex 1.37489 31.173 0 - endloop - endfacet - facet normal 0.981864 -0.189585 0 - outer loop - vertex 1.37489 31.173 -3 - vertex 1.1273 29.8907 0 - vertex 1.1273 29.8907 -3 - endloop - endfacet - facet normal 0.935462 -0.353427 0 - outer loop - vertex 1.37489 31.173 0 - vertex 2.44067 33.9939 -3 - vertex 2.44067 33.9939 0 - endloop - endfacet - facet normal 0.935462 -0.353427 0 - outer loop - vertex 2.44067 33.9939 -3 - vertex 1.37489 31.173 0 - vertex 1.37489 31.173 -3 - endloop - endfacet - facet normal 0.883303 -0.468802 0 - outer loop - vertex 2.44067 33.9939 0 - vertex 4.08079 37.0842 -3 - vertex 4.08079 37.0842 0 - endloop - endfacet - facet normal 0.883303 -0.468802 0 - outer loop - vertex 4.08079 37.0842 -3 - vertex 2.44067 33.9939 0 - vertex 2.44067 33.9939 -3 - endloop - endfacet - facet normal 0.814108 -0.580714 0 - outer loop - vertex 4.08079 37.0842 0 - vertex 5.15152 38.5852 -3 - vertex 5.15152 38.5852 0 - endloop - endfacet - facet normal 0.814108 -0.580714 0 - outer loop - vertex 5.15152 38.5852 -3 - vertex 4.08079 37.0842 0 - vertex 4.08079 37.0842 -3 - endloop - endfacet - facet normal -0.809167 -0.587578 0 - outer loop - vertex 5.25321 38.4452 -3 - vertex 5.15152 38.5852 0 - vertex 5.15152 38.5852 -3 - endloop - endfacet - facet normal -0.809167 -0.587578 0 - outer loop - vertex 5.15152 38.5852 0 - vertex 5.25321 38.4452 -3 - vertex 5.25321 38.4452 0 - endloop - endfacet - facet normal -0.887211 -0.461365 0 - outer loop - vertex 8.028 17.0592 -3 - vertex 7.15178 18.7442 0 - vertex 7.15178 18.7442 -3 - endloop - endfacet - facet normal -0.887211 -0.461365 0 - outer loop - vertex 7.15178 18.7442 0 - vertex 8.028 17.0592 -3 - vertex 8.028 17.0592 0 - endloop - endfacet - facet normal -0.822305 -0.569047 0 - outer loop - vertex 8.86535 15.8492 -3 - vertex 8.028 17.0592 0 - vertex 8.028 17.0592 -3 - endloop - endfacet - facet normal -0.822305 -0.569047 0 - outer loop - vertex 8.028 17.0592 0 - vertex 8.86535 15.8492 -3 - vertex 8.86535 15.8492 0 - endloop - endfacet - facet normal 0.359337 -0.933208 0 - outer loop - vertex 8.86535 15.8492 -3 - vertex 9.72145 16.1788 0 - vertex 8.86535 15.8492 0 - endloop - endfacet - facet normal 0.359337 -0.933208 0 - outer loop - vertex 9.72145 16.1788 0 - vertex 8.86535 15.8492 -3 - vertex 9.72145 16.1788 -3 - endloop - endfacet - facet normal 0.425917 -0.904762 0 - outer loop - vertex 9.72145 16.1788 -3 - vertex 10.4258 16.5104 0 - vertex 9.72145 16.1788 0 - endloop - endfacet - facet normal 0.425917 -0.904762 0 - outer loop - vertex 10.4258 16.5104 0 - vertex 9.72145 16.1788 -3 - vertex 10.4258 16.5104 -3 - endloop - endfacet - facet normal 0.716732 0.697349 0 - outer loop - vertex 10.4258 16.5104 0 - vertex 9.76373 17.1908 -3 - vertex 9.76373 17.1908 0 - endloop - endfacet - facet normal 0.716732 0.697349 0 - outer loop - vertex 9.76373 17.1908 -3 - vertex 10.4258 16.5104 0 - vertex 10.4258 16.5104 -3 - endloop - endfacet - facet normal 0.65174 0.758443 -0 - outer loop - vertex 9.76373 17.1908 -3 - vertex 8.30319 18.4459 0 - vertex 9.76373 17.1908 0 - endloop - endfacet - facet normal 0.65174 0.758443 0 - outer loop - vertex 8.30319 18.4459 0 - vertex 9.76373 17.1908 -3 - vertex 8.30319 18.4459 -3 - endloop - endfacet - facet normal 0.52501 0.851096 -0 - outer loop - vertex 8.30319 18.4459 -3 - vertex 7.1994 19.1268 0 - vertex 8.30319 18.4459 0 - endloop - endfacet - facet normal 0.52501 0.851096 0 - outer loop - vertex 7.1994 19.1268 0 - vertex 8.30319 18.4459 -3 - vertex 7.1994 19.1268 -3 - endloop - endfacet - facet normal -0.992345 0.123496 0 - outer loop - vertex 7.15178 18.7442 -3 - vertex 7.1994 19.1268 0 - vertex 7.1994 19.1268 -3 - endloop - endfacet - facet normal -0.992345 0.123496 0 - outer loop - vertex 7.1994 19.1268 0 - vertex 7.15178 18.7442 -3 - vertex 7.15178 18.7442 0 - endloop - endfacet - facet normal -0.148843 0.988861 0 - outer loop - vertex -16.6107 24.7853 -3 - vertex -20.4324 24.2101 0 - vertex -16.6107 24.7853 0 - endloop - endfacet - facet normal -0.148843 0.988861 0 - outer loop - vertex -20.4324 24.2101 0 - vertex -16.6107 24.7853 -3 - vertex -20.4324 24.2101 -3 - endloop - endfacet - facet normal -0.117787 0.993039 0 - outer loop - vertex -20.4324 24.2101 -3 - vertex -23.3809 23.8604 0 - vertex -20.4324 24.2101 0 - endloop - endfacet - facet normal -0.117787 0.993039 0 - outer loop - vertex -23.3809 23.8604 0 - vertex -20.4324 24.2101 -3 - vertex -23.3809 23.8604 -3 - endloop - endfacet - facet normal -0.645441 -0.76381 0 - outer loop - vertex -23.3809 23.8604 -3 - vertex -22.6641 23.2546 0 - vertex -23.3809 23.8604 0 - endloop - endfacet - facet normal -0.645441 -0.76381 -0 - outer loop - vertex -22.6641 23.2546 0 - vertex -23.3809 23.8604 -3 - vertex -22.6641 23.2546 -3 - endloop - endfacet - facet normal -0.546303 -0.837588 0 - outer loop - vertex -22.6641 23.2546 -3 - vertex -22.0432 22.8497 0 - vertex -22.6641 23.2546 0 - endloop - endfacet - facet normal -0.546303 -0.837588 -0 - outer loop - vertex -22.0432 22.8497 0 - vertex -22.6641 23.2546 -3 - vertex -22.0432 22.8497 -3 - endloop - endfacet - facet normal -0.238224 -0.97121 0 - outer loop - vertex -22.0432 22.8497 -3 - vertex -21.5591 22.7309 0 - vertex -22.0432 22.8497 0 - endloop - endfacet - facet normal -0.238224 -0.97121 -0 - outer loop - vertex -21.5591 22.7309 0 - vertex -22.0432 22.8497 -3 - vertex -21.5591 22.7309 -3 - endloop - endfacet - facet normal 0.148545 -0.988906 0 - outer loop - vertex -21.5591 22.7309 -3 - vertex -19.3275 23.0662 0 - vertex -21.5591 22.7309 0 - endloop - endfacet - facet normal 0.148545 -0.988906 0 - outer loop - vertex -19.3275 23.0662 0 - vertex -21.5591 22.7309 -3 - vertex -19.3275 23.0662 -3 - endloop - endfacet - facet normal 0.149712 -0.98873 0 - outer loop - vertex -19.3275 23.0662 -3 - vertex -14.1729 23.8467 0 - vertex -19.3275 23.0662 0 - endloop - endfacet - facet normal 0.149712 -0.98873 0 - outer loop - vertex -14.1729 23.8467 0 - vertex -19.3275 23.0662 -3 - vertex -14.1729 23.8467 -3 - endloop - endfacet - facet normal 0.152324 -0.988331 0 - outer loop - vertex -14.1729 23.8467 -3 - vertex -10.5829 24.4 0 - vertex -14.1729 23.8467 0 - endloop - endfacet - facet normal 0.152324 -0.988331 0 - outer loop - vertex -10.5829 24.4 0 - vertex -14.1729 23.8467 -3 - vertex -10.5829 24.4 -3 - endloop - endfacet - facet normal 0.753595 0.657339 0 - outer loop - vertex -10.5829 24.4 0 - vertex -10.6709 24.5009 -3 - vertex -10.6709 24.5009 0 - endloop - endfacet - facet normal 0.753595 0.657339 0 - outer loop - vertex -10.6709 24.5009 -3 - vertex -10.5829 24.4 0 - vertex -10.5829 24.4 -3 - endloop - endfacet - facet normal 0.323243 0.946316 -0 - outer loop - vertex -10.6709 24.5009 -3 - vertex -11.2742 24.7069 0 - vertex -10.6709 24.5009 0 - endloop - endfacet - facet normal 0.323243 0.946316 0 - outer loop - vertex -11.2742 24.7069 0 - vertex -10.6709 24.5009 -3 - vertex -11.2742 24.7069 -3 - endloop - endfacet - facet normal 0.105601 0.994409 -0 - outer loop - vertex -11.2742 24.7069 -3 - vertex -13.9393 24.99 0 - vertex -11.2742 24.7069 0 - endloop - endfacet - facet normal 0.105601 0.994409 0 - outer loop - vertex -13.9393 24.99 0 - vertex -11.2742 24.7069 -3 - vertex -13.9393 24.99 -3 - endloop - endfacet - facet normal -0.0763677 0.99708 0 - outer loop - vertex -13.9393 24.99 -3 - vertex -16.6107 24.7853 0 - vertex -13.9393 24.99 0 - endloop - endfacet - facet normal -0.0763677 0.99708 0 - outer loop - vertex -16.6107 24.7853 0 - vertex -13.9393 24.99 -3 - vertex -16.6107 24.7853 -3 - endloop - endfacet - facet normal -1 0 0 - outer loop - vertex -117.5 -117.5 -3 - vertex -117.5 117.5 0 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal -1 -0 0 - outer loop - vertex -117.5 117.5 0 - vertex -117.5 -117.5 -3 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.5713 -25.7117 0 - vertex -27.9105 -26.2055 0 - vertex -28.1036 -25.8829 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.142 -25.4759 0 - vertex -28.1838 -28.4809 0 - vertex -28.5713 -25.7117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.9105 -26.2055 0 - vertex -28.5713 -25.7117 0 - vertex -28.1838 -28.4809 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.9073 -13.512 0 - vertex -35.4871 -14.1281 0 - vertex -35.5739 -13.718 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.5262 -13.4531 0 - vertex -35.4871 -14.1281 0 - vertex -35.9073 -13.512 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4871 -14.1281 0 - vertex -36.5262 -13.4531 0 - vertex -35.6081 -14.799 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.2393 -13.2576 0 - vertex -35.6081 -14.799 0 - vertex -36.5262 -13.4531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.6081 -14.799 0 - vertex -37.2393 -13.2576 0 - vertex -37.0548 -18.7102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5366 -12.7854 0 - vertex -37.0548 -18.7102 0 - vertex -37.2393 -13.2576 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.8382 24.6102 0 - vertex -37.3951 -12.1929 0 - vertex -38.3729 23.836 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.1303 25.4589 0 - vertex -37.3951 -12.1929 0 - vertex -38.8382 24.6102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.3951 -12.1929 0 - vertex -39.1303 25.4589 0 - vertex -37.5366 -12.7854 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5366 -12.7854 0 - vertex -39.9072 -25.4747 0 - vertex -37.0548 -18.7102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8577 -36.863 0 - vertex -37.5366 -12.7854 0 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.0224 24.2804 0 - vertex -26.0647 23.8437 0 - vertex -24.664 24.0122 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.0224 24.2804 0 - vertex -27.3687 23.7586 0 - vertex -26.0647 23.8437 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1365 24.9019 0 - vertex -27.3687 23.7586 0 - vertex -26.0224 24.2804 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1365 24.9019 0 - vertex -28.4642 23.8513 0 - vertex -27.3687 23.7586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1365 24.9019 0 - vertex -29.3958 24.13 0 - vertex -28.4642 23.8513 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -29.3958 24.13 0 - vertex -28.1365 24.9019 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -30.2081 24.6027 0 - vertex -29.3958 24.13 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -30.8173 24.9813 0 - vertex -30.2081 24.6027 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1793 25.0376 0 - vertex -29.9035 25.8898 0 - vertex -31.116 26.9038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.9035 25.8898 0 - vertex -31.1793 25.0376 0 - vertex -30.8173 24.9813 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2912 27.2229 0 - vertex -31.1793 25.0376 0 - vertex -31.116 26.9038 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.2108 23.023 0 - vertex -31.1793 25.0376 0 - vertex -31.2912 27.2229 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5389 20.1801 0 - vertex -11.1208 19.5935 0 - vertex -10.9412 20.0018 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5389 20.1801 0 - vertex -12.0133 18.8648 0 - vertex -11.1208 19.5935 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9783 20.2187 0 - vertex -12.0133 18.8648 0 - vertex -11.5389 20.1801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.9783 20.2187 0 - vertex -15.009 16.7116 0 - vertex -12.0133 18.8648 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.3196 19.9968 0 - vertex -15.009 16.7116 0 - vertex -12.9783 20.2187 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.3196 19.9968 0 - vertex -17.0754 15.711 0 - vertex -15.009 16.7116 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.1789 19.4139 0 - vertex -17.0754 15.711 0 - vertex -16.3196 19.9968 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.0754 15.711 0 - vertex -20.1789 19.4139 0 - vertex -19.733 14.7364 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.1789 19.4139 0 - vertex -22.3118 14.0374 0 - vertex -19.733 14.7364 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.1572 19.0472 0 - vertex -22.3118 14.0374 0 - vertex -20.1789 19.4139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1572 19.0472 0 - vertex -24.873 13.6003 0 - vertex -22.3118 14.0374 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.5587 18.9414 0 - vertex -24.873 13.6003 0 - vertex -24.1572 19.0472 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.873 13.6003 0 - vertex -27.5587 18.9414 0 - vertex -27.4778 13.4117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.687 19.1409 0 - vertex -27.4778 13.4117 0 - vertex -27.5587 18.9414 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.687 19.1409 0 - vertex -29.9412 13.2465 0 - vertex -27.4778 13.4117 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.687 19.1409 0 - vertex -30.3118 13.0393 0 - vertex -29.9412 13.2465 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.0651 20.3093 0 - vertex -30.3118 13.0393 0 - vertex -29.687 19.1409 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3118 13.0393 0 - vertex -33.0651 20.3093 0 - vertex -30.3887 12.6783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.2082 3.44442 0 - vertex 23.5966 4.95794 0 - vertex 23.3811 5.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5966 4.95794 0 - vertex 23.2082 3.44442 0 - vertex 23.5377 4.18291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.8875 6.77518 0 - vertex 23.2082 3.44442 0 - vertex 23.3811 5.8089 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0239 2.90744 0 - vertex 23.2082 3.44442 0 - vertex 22.8875 6.77518 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.0239 2.90744 0 - vertex 22.8875 6.77518 0 - vertex 21.7142 8.22365 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.2139 -19.2263 0 - vertex 26.9177 3.98634 0 - vertex 26.953 2.16551 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 26.9177 3.98634 0 - vertex 27.209 8.08714 0 - vertex 26.8985 6.51977 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.7235 1.18648 0 - vertex 38.4798 -20.1181 0 - vertex 26.8464 1.29842 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.9177 3.98634 0 - vertex 27.528 9.70386 0 - vertex 27.209 8.08714 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.4798 -20.1181 0 - vertex 26.7235 1.18648 0 - vertex 29.9429 -19.4981 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.9429 -19.4981 0 - vertex 26.7235 1.18648 0 - vertex 28.989 -19.2301 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.6777 -11.13 0 - vertex 28.989 -19.2301 0 - vertex 26.7235 1.18648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9081 -2.19366 0 - vertex 26.7235 1.18648 0 - vertex 26.5455 1.2697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.989 -19.2301 0 - vertex 19.6777 -11.13 0 - vertex 27.8281 -19.1444 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.9858 2.16372 0 - vertex 26.5455 1.2697 0 - vertex 25.9977 1.96397 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.8281 -19.1444 0 - vertex 19.6777 -11.13 0 - vertex 26.5413 -19.2026 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.7523 2.4559 0 - vertex 25.9977 1.96397 0 - vertex 25.3153 2.68052 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.7523 2.4559 0 - vertex 25.3153 2.68052 0 - vertex 25.0347 2.67962 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.9858 2.16372 0 - vertex 25.9977 1.96397 0 - vertex 24.7523 2.4559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5455 1.2697 0 - vertex 23.9858 2.16372 0 - vertex 21.0968 -1.15452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0968 -1.15452 0 - vertex 23.9858 2.16372 0 - vertex 23.1222 1.97635 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7235 1.18648 0 - vertex 20.9081 -2.19366 0 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0282 0.220415 0 - vertex 23.1222 1.97635 0 - vertex 22.8505 1.9828 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.0282 0.220415 0 - vertex 22.8505 1.9828 0 - vertex 22.7784 2.30129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.2082 3.44442 0 - vertex 16.0239 2.90744 0 - vertex 22.7784 2.30129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5455 1.2697 0 - vertex 21.0968 -1.15452 0 - vertex 20.9081 -2.19366 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.5413 -19.2026 0 - vertex 19.6777 -11.13 0 - vertex 25.4359 -19.4082 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1222 1.97635 0 - vertex 21.0282 0.220415 0 - vertex 21.0968 -1.15452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3368 5.33522 0 - vertex 21.7142 8.22365 0 - vertex 19.7157 9.66569 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 19.4865 -0.127098 0 - vertex 22.7784 2.30129 0 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9551 7.69881 0 - vertex 19.7157 9.66569 0 - vertex 18.6847 10.137 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.7784 2.30129 0 - vertex 19.4865 -0.127098 0 - vertex 21.0282 0.220415 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 16.8564 0.883682 0 - vertex 19.4865 -0.127098 0 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9551 7.69881 0 - vertex 18.6847 10.137 0 - vertex 17.337 10.3363 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4865 -0.127098 0 - vertex 16.8564 0.883682 0 - vertex 18.2674 -0.466912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.2674 -0.466912 0 - vertex 16.8564 0.883682 0 - vertex 17.6745 -0.267811 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3572 9.74689 0 - vertex 17.337 10.3363 0 - vertex 15.9933 10.3315 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3572 9.74689 0 - vertex 15.9933 10.3315 0 - vertex 15.6762 10.1383 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.9426 8.95486 0 - vertex 17.337 10.3363 0 - vertex 15.3572 9.74689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7142 8.22365 0 - vertex 15.3368 5.33522 0 - vertex 16.0239 2.90744 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.7157 9.66569 0 - vertex 14.9551 7.69881 0 - vertex 15.3368 5.33522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.337 10.3363 0 - vertex 14.9426 8.95486 0 - vertex 14.9551 7.69881 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.4359 -19.4082 0 - vertex 19.6777 -11.13 0 - vertex 23.0737 -20.4525 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.7235 1.18648 0 - vertex 20.4179 -3.0084 0 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.1521 -17.7131 0 - vertex 23.0737 -20.4525 0 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.0737 -20.4525 0 - vertex 17.1521 -17.7131 0 - vertex 21.6367 -21.3703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.4179 -3.0084 0 - vertex 19.5452 -10.7956 0 - vertex 19.6777 -11.13 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.4334 -3.80993 0 - vertex 19.5452 -10.7956 0 - vertex 20.4179 -3.0084 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 17.7619 -4.80944 0 - vertex 19.5452 -10.7956 0 - vertex 19.4334 -3.80993 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5452 -10.7956 0 - vertex 17.7619 -4.80944 0 - vertex 19.0845 -10.6988 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.0012 -6.23992 0 - vertex 19.0845 -10.6988 0 - vertex 17.7619 -4.80944 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0845 -10.6988 0 - vertex 15.0012 -6.23992 0 - vertex 16.7993 -11.2316 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.6103 -7.15898 0 - vertex 16.7993 -11.2316 0 - vertex 15.0012 -6.23992 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.7993 -11.2316 0 - vertex 12.6103 -7.15898 0 - vertex 13.71 -12.1451 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.71 -12.1451 0 - vertex 12.6103 -7.15898 0 - vertex 13.1035 -12.4147 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.2421 -7.67101 0 - vertex 13.1035 -12.4147 0 - vertex 12.6103 -7.15898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.1035 -12.4147 0 - vertex 10.2421 -7.67101 0 - vertex 12.6527 -12.8127 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6527 -12.8127 0 - vertex 10.2421 -7.67101 0 - vertex 12.4073 -13.2773 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.2177 -19.5302 0 - vertex 12.4073 -13.2773 0 - vertex 10.3474 -19.1774 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.058 -19.7199 0 - vertex 11.2177 -19.5302 0 - vertex 11.7785 -19.8211 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4073 -13.2773 0 - vertex 11.2177 -19.5302 0 - vertex 12.058 -19.7199 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 7.54923 -7.88041 0 - vertex 12.4073 -13.2773 0 - vertex 10.2421 -7.67101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4073 -13.2773 0 - vertex 8.75581 -19.1712 0 - vertex 10.3474 -19.1774 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.06268 -19.3694 0 - vertex 12.4073 -13.2773 0 - vertex 7.54923 -7.88041 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.4073 -13.2773 0 - vertex 7.06268 -19.3694 0 - vertex 8.75581 -19.1712 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.03167 -7.88498 0 - vertex 7.06268 -19.3694 0 - vertex 7.54923 -7.88041 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.06268 -19.3694 0 - vertex 5.03167 -7.88498 0 - vertex 5.689 -19.9339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.854 -7.59505 0 - vertex 5.689 -19.9339 0 - vertex 5.03167 -7.88498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.854 -7.59505 0 - vertex 3.72385 -21.1527 0 - vertex 5.689 -19.9339 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.70045 -19.8327 0 - vertex 3.72385 -21.1527 0 - vertex 3.854 -7.59505 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.57075 -19.2012 0 - vertex 3.854 -7.59505 0 - vertex 1.04019 -5.91722 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -4.06681 -20.6308 0 - vertex 3.72385 -21.1527 0 - vertex -4.70045 -19.8327 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex -3.85646 -21.6547 0 - vertex 1.84511 -22.661 0 - vertex -4.06681 -20.6308 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.57075 -19.2012 0 - vertex 1.04019 -5.91722 0 - vertex -2.05653 -4.03047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.84511 -22.661 0 - vertex -3.85646 -21.6547 0 - vertex 0.168338 -24.355 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.168338 -24.355 0 - vertex -3.89417 -22.8317 0 - vertex -1.19093 -26.1306 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.1272 -19.1706 0 - vertex -2.05653 -4.03047 0 - vertex -3.45272 -3.03042 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.4385 -11.5861 0 - vertex -3.45272 -3.03042 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -4.26405 -24.3543 0 - vertex -1.19093 -26.1306 0 - vertex -3.89417 -22.8317 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.6367 -21.3703 0 - vertex 17.1521 -17.7131 0 - vertex 20.2954 -22.4759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2954 -22.4759 0 - vertex 17.1521 -17.7131 0 - vertex 19.0386 -23.7798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.5835 -23.8342 0 - vertex 19.0386 -23.7798 0 - vertex 17.1521 -17.7131 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0386 -23.7798 0 - vertex 14.5835 -23.8342 0 - vertex 17.855 -25.2923 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.855 -25.2923 0 - vertex 14.5835 -23.8342 0 - vertex 16.4055 -27.6373 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.4055 -27.6373 0 - vertex 14.5835 -23.8342 0 - vertex 15.3794 -29.9771 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3794 -29.9771 0 - vertex 11.4887 -31.4602 0 - vertex 14.7938 -32.2631 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.4887 -31.4602 0 - vertex 15.3794 -29.9771 0 - vertex 14.5835 -23.8342 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.1513 17.7384 0 - vertex 26.0816 17.5963 0 - vertex 25.9892 18.2943 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.1513 17.7384 0 - vertex 25.9892 18.2943 0 - vertex 25.7331 18.8483 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 25.704 16.8274 0 - vertex 26.0816 17.5963 0 - vertex 25.4738 17.2443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0816 17.5963 0 - vertex 25.704 16.8274 0 - vertex 25.8979 16.7563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5942 18.0475 0 - vertex 25.7331 18.8483 0 - vertex 25.3447 19.2137 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0816 17.5963 0 - vertex 25.1513 17.7384 0 - vertex 25.4738 17.2443 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.5942 18.0475 0 - vertex 25.3447 19.2137 0 - vertex 24.8554 19.3454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.7331 18.8483 0 - vertex 24.5942 18.0475 0 - vertex 25.1513 17.7384 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3909 19.6849 0 - vertex 24.5942 18.0475 0 - vertex 24.8554 19.3454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.335 18.2522 0 - vertex 23.3909 19.6849 0 - vertex 22.6368 20.047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.3909 19.6849 0 - vertex 22.335 18.2522 0 - vertex 24.5942 18.0475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9591 18.304 0 - vertex 22.6368 20.047 0 - vertex 22.0911 20.5797 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.6596 20.6529 0 - vertex 22.0911 20.5797 0 - vertex 21.7245 21.3239 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.4421 21.9215 0 - vertex 21.7245 21.3239 0 - vertex 21.508 22.3204 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.4421 21.9215 0 - vertex 21.508 22.3204 0 - vertex 21.2518 23.2891 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.0911 20.5797 0 - vertex 19.6596 20.6529 0 - vertex 19.8405 19.3078 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9185 22.6398 0 - vertex 21.2518 23.2891 0 - vertex 20.762 24.0784 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.6368 20.047 0 - vertex 20.9591 18.304 0 - vertex 22.335 18.2522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9185 22.6398 0 - vertex 20.762 24.0784 0 - vertex 20.0338 24.6942 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.0911 20.5797 0 - vertex 19.8405 19.3078 0 - vertex 20.9591 18.304 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.9591 18.304 0 - vertex 19.8405 19.3078 0 - vertex 20.2006 18.5903 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.7245 21.3239 0 - vertex 19.4421 21.9215 0 - vertex 19.6596 20.6529 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.9185 22.6398 0 - vertex 20.0338 24.6942 0 - vertex 19.062 25.1422 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2518 23.2891 0 - vertex 18.9185 22.6398 0 - vertex 19.4421 21.9215 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.062 25.1422 0 - vertex 17.6852 23.4449 0 - vertex 18.9185 22.6398 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.2513 25.98 0 - vertex 17.6852 23.4449 0 - vertex 19.062 25.1422 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.1211 24.4531 0 - vertex 17.2513 25.98 0 - vertex 15.7223 27.2873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.4969 25.2416 0 - vertex 15.7223 27.2873 0 - vertex 15.122 28.0941 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.2513 25.98 0 - vertex 15.1211 24.4531 0 - vertex 17.6852 23.4449 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.7374 28.4518 0 - vertex 15.122 28.0941 0 - vertex 15.0577 29.0611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.7223 27.2873 0 - vertex 13.4969 25.2416 0 - vertex 15.1211 24.4531 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.0303 22.3563 0 - vertex -30.0976 22.0525 0 - vertex -28.3511 21.9725 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3878 23.2826 0 - vertex -30.0976 22.0525 0 - vertex -29.0303 22.3563 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -32.1178 22.3529 0 - vertex -30.3878 23.2826 0 - vertex -31.0943 24.213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3878 23.2826 0 - vertex -32.1178 22.3529 0 - vertex -30.0976 22.0525 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.2108 23.023 0 - vertex -31.0943 24.213 0 - vertex -31.2773 24.779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.1793 25.0376 0 - vertex -34.2108 23.023 0 - vertex -31.2773 24.779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5428 -26.6889 0 - vertex -23.655 -30.4649 0 - vertex -23.4462 -30.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.4741 -26.9141 0 - vertex -18.5428 -26.6889 0 - vertex -24.4076 -24.3815 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5428 -26.6889 0 - vertex -25.4741 -26.9141 0 - vertex -23.655 -30.4649 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.655 -30.4649 0 - vertex -25.4741 -26.9141 0 - vertex -24.0819 -30.2475 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.0819 -30.2475 0 - vertex -25.4741 -26.9141 0 - vertex -24.4667 -30.1541 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.2338 -28.3696 0 - vertex -24.4667 -30.1541 0 - vertex -25.4741 -26.9141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4667 -30.1541 0 - vertex -26.2338 -28.3696 0 - vertex -24.8569 -30.2998 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -26.8752 -29.0336 0 - vertex -24.8569 -30.2998 0 - vertex -26.2338 -28.3696 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8569 -30.2998 0 - vertex -26.8752 -29.0336 0 - vertex -26.8283 -32.1012 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -27.5872 -29.1914 0 - vertex -26.8283 -32.1012 0 - vertex -26.8752 -29.0336 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -26.8283 -32.1012 0 - vertex -27.5872 -29.1914 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -29.0969 -33.8499 0 - vertex -26.8283 -32.1012 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1838 -28.4809 0 - vertex -32.142 -25.4759 0 - vertex -28.1878 -29.097 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -35.4824 -26.6225 0 - vertex -28.1878 -29.097 0 - vertex -32.142 -25.4759 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -30.2578 -34.4631 0 - vertex -29.0969 -33.8499 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -31.3644 -34.8586 0 - vertex -30.2578 -34.4631 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.4824 -26.6225 0 - vertex -32.142 -25.4759 0 - vertex -34.9626 -25.4747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.1878 -29.097 0 - vertex -35.4824 -26.6225 0 - vertex -31.3644 -34.8586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.3644 -34.8586 0 - vertex -35.4824 -26.6225 0 - vertex -35.0529 -35.0835 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -38.7331 -34.5543 0 - vertex -35.0529 -35.0835 0 - vertex -35.4824 -26.6225 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.0529 -35.0835 0 - vertex -38.7331 -34.5543 0 - vertex -38.4261 -34.9619 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6886 -22.3738 0 - vertex -24.4076 -24.3815 0 - vertex -18.5428 -26.6889 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.8149 -31.5911 0 - vertex -21.28 -33.2523 0 - vertex -23.4462 -30.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.5428 -26.6889 0 - vertex -23.4462 -30.738 0 - vertex -21.28 -33.2523 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -24.7956 -33.2498 0 - vertex -21.28 -33.2523 0 - vertex -23.8149 -31.5911 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.28 -33.2523 0 - vertex -24.7956 -33.2498 0 - vertex -22.458 -35.4568 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -23.6767 -35.9691 0 - vertex -22.458 -35.4568 0 - vertex -24.7956 -33.2498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.458 -35.4568 0 - vertex -23.6767 -35.9691 0 - vertex -23.007 -35.8619 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.6767 -35.9691 0 - vertex -24.7956 -33.2498 0 - vertex -24.4194 -36.2501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2791 -36.8782 0 - vertex -24.4194 -36.2501 0 - vertex -24.7956 -33.2498 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4194 -36.2501 0 - vertex -27.2791 -36.8782 0 - vertex -24.9699 -36.888 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.9699 -36.888 0 - vertex -27.2791 -36.8782 0 - vertex -25.157 -37.5754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4212 26.8695 0 - vertex -21.4485 26.3569 0 - vertex -21.2681 26.5576 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.4485 26.3569 0 - vertex -22.4212 26.8695 0 - vertex -22.0473 26.2369 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.8433 26.205 0 - vertex -22.4212 26.8695 0 - vertex -23.8902 27.3484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4212 26.8695 0 - vertex -24.8433 26.205 0 - vertex -22.0473 26.2369 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3225 27.6757 0 - vertex -24.8433 26.205 0 - vertex -23.8902 27.3484 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.4214 26.3653 0 - vertex -24.3225 27.6757 0 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.78909 -22.7249 0 - vertex -8.46819 -23.4267 0 - vertex -8.55624 -22.9989 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.46819 -23.4267 0 - vertex -8.78909 -22.7249 0 - vertex -9.69161 -22.56 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.46819 -23.4267 0 - vertex -9.69161 -22.56 0 - vertex -8.72405 -24.8218 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.5461 -22.7271 0 - vertex -8.72405 -24.8218 0 - vertex -9.69161 -22.56 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.3967 -23.0769 0 - vertex -8.72405 -24.8218 0 - vertex -10.5461 -22.7271 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -12.4124 -23.7203 0 - vertex -8.72405 -24.8218 0 - vertex -11.3967 -23.0769 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.72405 -24.8218 0 - vertex -12.4124 -23.7203 0 - vertex -9.55184 -27.0667 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.1427 -24.3848 0 - vertex -9.55184 -27.0667 0 - vertex -12.4124 -23.7203 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -14.2216 -26.3227 0 - vertex -9.55184 -27.0667 0 - vertex -13.7062 -25.2068 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.55184 -27.0667 0 - vertex -15.3894 -29.1914 0 - vertex -11.5932 -32.143 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -9.55184 -27.0667 0 - vertex -13.1427 -24.3848 0 - vertex -13.7062 -25.2068 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.3894 -29.1914 0 - vertex -9.55184 -27.0667 0 - vertex -14.2216 -26.3227 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.8281 -32.7116 0 - vertex -11.5932 -32.143 0 - vertex -15.3894 -29.1914 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.5932 -32.143 0 - vertex -16.8281 -32.7116 0 - vertex -12.3385 -33.8339 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.3385 -33.8339 0 - vertex -16.8281 -32.7116 0 - vertex -13.0448 -35.0276 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -14.3732 -35.9691 0 - vertex -13.0448 -35.0276 0 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.0448 -35.0276 0 - vertex -14.3732 -35.9691 0 - vertex -13.7203 -35.7356 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.3732 -35.9691 0 - vertex -16.8281 -32.7116 0 - vertex -14.8949 -36.1495 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -16.5846 -36.2152 0 - vertex -14.8949 -36.1495 0 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6989 -37.6188 0 - vertex -15.9213 -37.1689 0 - vertex -16.2226 -36.752 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.8949 -36.1495 0 - vertex -16.5846 -36.2152 0 - vertex -15.4682 -36.5832 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4682 -36.5832 0 - vertex -16.2226 -36.752 0 - vertex -15.9213 -37.1689 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.4682 -36.5832 0 - vertex -16.5846 -36.2152 0 - vertex -16.2226 -36.752 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.7285 -35.3062 0 - vertex -16.5846 -36.2152 0 - vertex -16.8281 -32.7116 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.5846 -36.2152 0 - vertex -17.7285 -35.3062 0 - vertex -17.3742 -35.9691 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.3742 -35.9691 0 - vertex -17.7285 -35.3062 0 - vertex -17.6987 -35.8223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.3766 -20.1728 0 - vertex -11.7016 -19.4898 0 - vertex -11.6824 -19.9072 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -11.9141 -19.2259 0 - vertex -11.7016 -19.4898 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -17.4385 -11.5861 0 - vertex -11.9141 -19.2259 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.5299 12.3491 0 - vertex -3.71458 -2.66291 0 - vertex -13.7227 13.3517 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.4456 -12.0833 0 - vertex -11.9141 -19.2259 0 - vertex -17.4385 -11.5861 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.9141 -19.2259 0 - vertex -17.4456 -12.0833 0 - vertex -12.3137 -19.1333 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.7993 -11.4712 0 - vertex -3.71458 -2.66291 0 - vertex -17.5299 12.3491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.71458 -2.66291 0 - vertex -17.7993 -11.4712 0 - vertex -17.4385 -11.5861 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.0298 12.0063 0 - vertex -17.7993 -11.4712 0 - vertex -17.5299 12.3491 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -22.4428 11.7593 0 - vertex -17.7993 -11.4712 0 - vertex -20.0298 12.0063 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.1868 -11.3523 0 - vertex -22.4428 11.7593 0 - vertex -25.7097 11.6586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4428 11.7593 0 - vertex -27.1868 -11.3523 0 - vertex -17.7993 -11.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.6588 11.7129 0 - vertex -27.1868 -11.3523 0 - vertex -25.7097 11.6586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -34.87 -11.3196 0 - vertex -28.6588 11.7129 0 - vertex -30.1182 11.9311 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.792 -11.6364 0 - vertex -30.1182 11.9311 0 - vertex -30.3887 12.6783 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -35.7552 21.6337 0 - vertex -30.3887 12.6783 0 - vertex -33.0651 20.3093 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.6588 11.7129 0 - vertex -34.87 -11.3196 0 - vertex -27.1868 -11.3523 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.6991 23.0789 0 - vertex -30.3887 12.6783 0 - vertex -35.7552 21.6337 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1182 11.9311 0 - vertex -36.1936 -11.4238 0 - vertex -34.87 -11.3196 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.1182 11.9311 0 - vertex -36.792 -11.6364 0 - vertex -36.1936 -11.4238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3887 12.6783 0 - vertex -37.6991 23.0789 0 - vertex -36.792 -11.6364 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -36.792 -11.6364 0 - vertex -37.6991 23.0789 0 - vertex -37.3951 -12.1929 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -38.3729 23.836 0 - vertex -37.3951 -12.1929 0 - vertex -37.6991 23.0789 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.80393 -35.193 0 - vertex -7.51249 -36.3769 0 - vertex -7.31439 -36.7536 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.99709 -33.5697 0 - vertex -8.33648 -34.384 0 - vertex -7.51249 -36.3769 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.51249 -36.3769 0 - vertex -8.33648 -34.384 0 - vertex -7.98605 -36.0592 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.56822 -35.3052 0 - vertex -7.98605 -36.0592 0 - vertex -8.33648 -34.384 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.98605 -36.0592 0 - vertex -8.56822 -35.3052 0 - vertex -8.51129 -35.7129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.41055 11.926 0 - vertex 1.8467 12.7398 0 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.8467 12.7398 0 - vertex 1.41055 11.926 0 - vertex 1.87173 12.344 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.918757 13.5702 0 - vertex 1.41055 11.926 0 - vertex 1.50002 13.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.918757 13.5702 0 - vertex 0.535115 11.4454 0 - vertex 1.41055 11.926 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 0.918757 13.5702 0 - vertex -0.394194 11.1972 0 - vertex 0.535115 11.4454 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.928844 14.138 0 - vertex -0.394194 11.1972 0 - vertex 0.918757 13.5702 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.928844 14.138 0 - vertex -1.46211 11.1697 0 - vertex -0.394194 11.1972 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.928844 14.138 0 - vertex -2.75335 11.3511 0 - vertex -1.46211 11.1697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.65881 14.4362 0 - vertex -2.75335 11.3511 0 - vertex -0.928844 14.138 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.65881 14.4362 0 - vertex -5.07797 11.6776 0 - vertex -2.75335 11.3511 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.23385 14.4578 0 - vertex -5.07797 11.6776 0 - vertex -3.65881 14.4362 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.07797 11.6776 0 - vertex -7.23385 14.4578 0 - vertex -5.71478 11.6495 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.71478 11.6495 0 - vertex -7.23385 14.4578 0 - vertex -5.93765 11.491 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -13.7227 13.3517 0 - vertex -5.93765 11.491 0 - vertex -10.6367 14.238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.99153 10.6633 0 - vertex -13.7227 13.3517 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -8.78621 -19.378 0 - vertex -7.1272 -19.1706 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.45272 -3.03042 0 - vertex -11.7016 -19.4898 0 - vertex -8.78621 -19.378 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -11.7016 -19.4898 0 - vertex -10.3766 -20.1728 0 - vertex -8.78621 -19.378 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.8627 -20.4599 0 - vertex -10.3766 -20.1728 0 - vertex -11.6824 -19.9072 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -10.3766 -20.1728 0 - vertex -11.8627 -20.4599 0 - vertex -12.0544 -21.102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -12.3137 -19.1333 0 - vertex -17.4456 -12.0833 0 - vertex -15.1553 -19.8912 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.3785 -17.1305 0 - vertex -15.1553 -19.8912 0 - vertex -17.4456 -12.0833 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.1553 -19.8912 0 - vertex -19.3785 -17.1305 0 - vertex -17.9982 -20.7653 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -19.683 -17.584 0 - vertex -17.9982 -20.7653 0 - vertex -19.3785 -17.1305 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.1126 -17.9213 0 - vertex -17.9982 -20.7653 0 - vertex -19.683 -17.584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.9982 -20.7653 0 - vertex -20.1126 -17.9213 0 - vertex -18.4336 -21.0091 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.8179 -22.6324 0 - vertex -17.299 -23.335 0 - vertex -17.2695 -22.7276 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3659 -22.5704 0 - vertex -17.299 -23.335 0 - vertex -17.8179 -22.6324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.3659 -22.5704 0 - vertex -18.5428 -26.6889 0 - vertex -17.299 -23.335 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.6886 -22.3738 0 - vertex -18.5428 -26.6889 0 - vertex -18.3659 -22.5704 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.7084 -21.5139 0 - vertex -22.6991 -20.0641 0 - vertex -18.7986 -22.0269 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.6062 -18.108 0 - vertex -18.4336 -21.0091 0 - vertex -20.1126 -17.9213 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.4336 -21.0091 0 - vertex -20.6062 -18.108 0 - vertex -18.7084 -21.5139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6991 -20.0641 0 - vertex -20.6062 -18.108 0 - vertex -22.6057 -19.3555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.6062 -18.108 0 - vertex -22.6991 -20.0641 0 - vertex -18.7084 -21.5139 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6057 -19.3555 0 - vertex -20.6062 -18.108 0 - vertex -21.1029 -18.1093 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -23.1278 -21.2395 0 - vertex -18.7986 -22.0269 0 - vertex -22.6991 -20.0641 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.6057 -19.3555 0 - vertex -21.1029 -18.1093 0 - vertex -21.3898 -18.0171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.8641 -19.008 0 - vertex -21.3898 -18.0171 0 - vertex -21.538 -17.8042 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.4908 -18.9156 0 - vertex -21.538 -17.8042 0 - vertex -21.5846 -16.4428 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1413 -14.5577 0 - vertex -21.5846 -16.4428 0 - vertex -21.6401 -15.0493 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.1413 -14.5577 0 - vertex -21.6401 -15.0493 0 - vertex -21.8106 -14.7733 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -18.7986 -22.0269 0 - vertex -23.1278 -21.2395 0 - vertex -18.6886 -22.3738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5846 -16.4428 0 - vertex -22.1413 -14.5577 0 - vertex -23.3419 -14.2877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.4076 -24.3815 0 - vertex -18.6886 -22.3738 0 - vertex -23.1278 -21.2395 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.28 -33.2523 0 - vertex -22.458 -35.4568 0 - vertex -21.9191 -34.6287 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.3898 -18.0171 0 - vertex -22.8641 -19.008 0 - vertex -22.6057 -19.3555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.5846 -16.4428 0 - vertex -23.3419 -14.2877 0 - vertex -23.4908 -18.9156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -21.538 -17.8042 0 - vertex -23.4908 -18.9156 0 - vertex -22.8641 -19.008 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -23.3419 -14.2877 0 - vertex -24.1111 -19.1062 0 - vertex -23.4908 -18.9156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.1195 -14.1654 0 - vertex -24.1111 -19.1062 0 - vertex -23.3419 -14.2877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.1111 -19.1062 0 - vertex -26.1195 -14.1654 0 - vertex -24.7225 -19.9745 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -30.8809 -15.6487 0 - vertex -24.7225 -19.9745 0 - vertex -26.1195 -14.1654 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.7225 -19.9745 0 - vertex -30.8809 -15.6487 0 - vertex -25.7001 -21.2849 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -32.1593 -18.5412 0 - vertex -25.7001 -21.2849 0 - vertex -30.8809 -15.6487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8809 -15.6487 0 - vertex -26.1195 -14.1654 0 - vertex -29.5608 -14.1906 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.3887 -14.5514 0 - vertex -29.5608 -14.1906 0 - vertex -30.2116 -14.321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -29.5608 -14.1906 0 - vertex -30.3887 -14.5514 0 - vertex -30.8809 -15.6487 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.7001 -21.2849 0 - vertex -32.1593 -18.5412 0 - vertex -26.9351 -22.1109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -26.9351 -22.1109 0 - vertex -32.1593 -18.5412 0 - vertex -28.6031 -22.5277 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.6031 -22.5277 0 - vertex -32.1593 -18.5412 0 - vertex -30.8797 -22.6102 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -33.3019 -21.4299 0 - vertex -30.8797 -22.6102 0 - vertex -32.1593 -18.5412 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -30.8797 -22.6102 0 - vertex -33.3019 -21.4299 0 - vertex -32.5249 -22.5543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -33.3019 -21.4299 0 - vertex -33.3295 -22.4108 0 - vertex -32.5249 -22.5543 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -33.3295 -22.4108 0 - vertex -33.3019 -21.4299 0 - vertex -33.5147 -22.0719 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2455 -2.23644 0 - vertex 14.2516 -3.15818 0 - vertex 14.333 -2.7489 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2455 -2.23644 0 - vertex 13.8131 -3.7697 0 - vertex 14.2516 -3.15818 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.172 -4.2601 0 - vertex 14.2455 -2.23644 0 - vertex 13.5923 -0.94501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.2455 -2.23644 0 - vertex 13.172 -4.2601 0 - vertex 13.8131 -3.7697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5923 -0.94501 0 - vertex 12.4032 -4.58609 0 - vertex 13.172 -4.2601 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.2758 -4.53506 0 - vertex 13.5923 -0.94501 0 - vertex 12.3489 0.629998 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5923 -0.94501 0 - vertex 11.5814 -4.70438 0 - vertex 12.4032 -4.58609 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.74282 -3.09522 0 - vertex 12.3489 0.629998 0 - vertex 10.5724 2.40247 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.5923 -0.94501 0 - vertex 10.2758 -4.53506 0 - vertex 11.5814 -4.70438 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.41545 -1.76788 0 - vertex 10.5724 2.40247 0 - vertex 9.13441 3.60373 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3489 0.629998 0 - vertex 9.01294 -4.00814 0 - vertex 10.2758 -4.53506 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.6091 0.441775 0 - vertex 9.13441 3.60373 0 - vertex 8.18559 4.25764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.3489 0.629998 0 - vertex 7.74282 -3.09522 0 - vertex 9.01294 -4.00814 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.5724 2.40247 0 - vertex 6.41545 -1.76788 0 - vertex 7.74282 -3.09522 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.39665 0.754678 0 - vertex 8.18559 4.25764 0 - vertex 5.26682 5.76024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.13441 3.60373 0 - vertex 4.6091 0.441775 0 - vertex 6.41545 -1.76788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.18559 4.25764 0 - vertex 4.39665 0.754678 0 - vertex 4.6091 0.441775 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.66409 7.13679 0 - vertex 4.39665 0.754678 0 - vertex 5.26682 5.76024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.39665 0.754678 0 - vertex 1.66409 7.13679 0 - vertex 4.24084 0.464987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex 4.24084 0.464987 0 - vertex 1.66409 7.13679 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.24084 0.464987 0 - vertex 1.09298 -4.60426 0 - vertex 3.9592 -5.58648 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex 1.66409 7.13679 0 - vertex -0.248642 7.94666 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.24084 0.464987 0 - vertex -1.72768 -3.30659 0 - vertex 1.09298 -4.60426 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex -0.248642 7.94666 0 - vertex -2.78119 9.30203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.24084 0.464987 0 - vertex -3.55278 -2.51803 0 - vertex -1.72768 -3.30659 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -4.99153 10.6633 0 - vertex -3.55278 -2.51803 0 - vertex -2.78119 9.30203 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.19093 -26.1306 0 - vertex -4.26405 -24.3543 0 - vertex -2.25121 -28.0146 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.89417 -22.8317 0 - vertex 0.168338 -24.355 0 - vertex -3.85646 -21.6547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.72385 -21.1527 0 - vertex -4.06681 -20.6308 0 - vertex 1.84511 -22.661 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.55278 -2.51803 0 - vertex -4.99153 10.6633 0 - vertex -3.71458 -2.66291 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -13.7227 13.3517 0 - vertex -4.99153 10.6633 0 - vertex -5.93765 11.491 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.854 -7.59505 0 - vertex -5.57075 -19.2012 0 - vertex -4.70045 -19.8327 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -10.6367 14.238 0 - vertex -5.93765 11.491 0 - vertex -7.23385 14.4578 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.05653 -4.03047 0 - vertex -7.1272 -19.1706 0 - vertex -5.57075 -19.2012 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.03104 -4.97268 0 - vertex 7.21237 -5.88439 0 - vertex 7.79727 -5.75259 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.81183 -5.98051 0 - vertex 7.03104 -4.97268 0 - vertex 5.97791 -3.63939 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.03104 -4.97268 0 - vertex 5.81183 -5.98051 0 - vertex 7.21237 -5.88439 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.9592 -5.58648 0 - vertex 5.97791 -3.63939 0 - vertex 5.02006 -2.01238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.9592 -5.58648 0 - vertex 5.02006 -2.01238 0 - vertex 4.37015 -0.506109 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.97791 -3.63939 0 - vertex 3.9592 -5.58648 0 - vertex 5.81183 -5.98051 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.9592 -5.58648 0 - vertex 4.37015 -0.506109 0 - vertex 4.24084 0.464987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -34.4466 0 - vertex 12.1385 -34.7994 0 - vertex 12.2351 -35.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.7938 -32.2631 0 - vertex 11.871 -34.5351 0 - vertex 14.6656 -34.4466 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.6656 -34.4466 0 - vertex 11.871 -34.5351 0 - vertex 12.1385 -34.7994 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.915 -33.0747 0 - vertex 11.871 -34.5351 0 - vertex 11.4887 -31.4602 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.871 -34.5351 0 - vertex 10.915 -33.0747 0 - vertex 11.4551 -34.4353 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.7197 -33.9677 0 - vertex 11.4551 -34.4353 0 - vertex 10.915 -33.0747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.4551 -34.4353 0 - vertex 10.7197 -33.9677 0 - vertex 10.9006 -34.3507 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.858 -14.1239 0 - vertex 13.2867 -16.8469 0 - vertex 14.1246 -14.3424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.417 -13.7469 0 - vertex 13.2867 -16.8469 0 - vertex 12.858 -14.1239 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.417 -13.7469 0 - vertex 12.058 -19.7199 0 - vertex 13.2867 -16.8469 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.058 -19.7199 0 - vertex 12.417 -13.7469 0 - vertex 12.4073 -13.2773 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.8088 29.3224 0 - vertex 15.0577 29.0611 0 - vertex 12.0187 29.9363 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 11.7374 28.4518 0 - vertex 11.8052 27.5343 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.0577 29.0611 0 - vertex 11.8088 29.3224 0 - vertex 11.7374 28.4518 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 11.8052 27.5343 0 - vertex 12.0123 26.7794 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 12.0123 26.7794 0 - vertex 12.5486 25.9653 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.1542 17.4223 0 - vertex 24.7931 16.6725 0 - vertex 24.7174 17.1695 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.1542 17.4223 0 - vertex 23.3802 15.8262 0 - vertex 24.7931 16.6725 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.547 17.5015 0 - vertex 23.3802 15.8262 0 - vertex 24.1542 17.4223 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.547 17.5015 0 - vertex 21.1653 14.8489 0 - vertex 23.3802 15.8262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2159 17.5562 0 - vertex 21.1653 14.8489 0 - vertex 22.547 17.5015 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2159 17.5562 0 - vertex 20.0668 14.6265 0 - vertex 21.1653 14.8489 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.4164 15.1559 0 - vertex 20.2159 17.5562 0 - vertex 19.8437 17.7553 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.5954 15.8977 0 - vertex 19.8437 17.7553 0 - vertex 19.5351 18.2611 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2045 16.623 0 - vertex 19.5351 18.2611 0 - vertex 19.0948 20.2262 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.155 22.8321 0 - vertex 19.0948 20.2262 0 - vertex 18.6529 22.0992 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.2159 17.5562 0 - vertex 18.4164 15.1559 0 - vertex 20.0668 14.6265 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.99 17.4864 0 - vertex 19.0948 20.2262 0 - vertex 17.155 22.8321 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.8437 17.7553 0 - vertex 16.5954 15.8977 0 - vertex 18.4164 15.1559 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.6982 18.6425 0 - vertex 17.155 22.8321 0 - vertex 15.5055 23.4995 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5351 18.2611 0 - vertex 15.2045 16.623 0 - vertex 16.5954 15.8977 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9729 20.5521 0 - vertex 15.5055 23.4995 0 - vertex 14.0164 24.1527 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0948 20.2262 0 - vertex 13.99 17.4864 0 - vertex 15.2045 16.623 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.9729 20.5521 0 - vertex 14.0164 24.1527 0 - vertex 13.0733 24.7212 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.155 22.8321 0 - vertex 12.6982 18.6425 0 - vertex 13.99 17.4864 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.71033 23.0922 0 - vertex 13.0733 24.7212 0 - vertex 12.1975 25.5292 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.07032 24.476 0 - vertex 12.1975 25.5292 0 - vertex 11.5037 26.4501 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.51885 25.3107 0 - vertex 11.5037 26.4501 0 - vertex 11.1066 27.3577 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.5055 23.4995 0 - vertex 10.9729 20.5521 0 - vertex 12.6982 18.6425 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.91411 25.7528 0 - vertex 11.1066 27.3577 0 - vertex 11.0411 28.3898 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.30515 36.0346 0 - vertex 12.0544 30.7144 0 - vertex 4.72188 37.0399 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.0544 30.7144 0 - vertex 4.30515 36.0346 0 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.57109 31.3388 0 - vertex 11.5971 30.3591 0 - vertex 3.93589 34.5584 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5971 30.3591 0 - vertex 4.30515 36.0346 0 - vertex 3.93589 34.5584 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 4.3138 28.4461 0 - vertex 11.5971 30.3591 0 - vertex 3.57109 31.3388 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5971 30.3591 0 - vertex 4.3138 28.4461 0 - vertex 5.72413 26.6445 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.3138 28.4461 0 - vertex 3.57109 31.3388 0 - vertex 3.67763 29.7129 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.41168 -29.738 0 - vertex -2.25121 -28.0146 0 - vertex -4.26405 -24.3543 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.25121 -28.0146 0 - vertex -6.41168 -29.738 0 - vertex -3.14673 -30.0798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.14673 -30.0798 0 - vertex -6.41168 -29.738 0 - vertex -3.7659 -32.0301 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8444 -30.1753 0 - vertex 30.1062 -30.7807 0 - vertex 30.2029 -31.1764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.7817 -27.1595 0 - vertex 29.6885 -30.4984 0 - vertex 30.1062 -30.7807 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 28.9763 -27.4135 0 - vertex 29.6885 -30.4984 0 - vertex 30.7817 -27.1595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.6885 -30.4984 0 - vertex 28.9763 -27.4135 0 - vertex 29.2916 -30.4642 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.9763 -27.4135 0 - vertex 28.199 -31.2235 0 - vertex 29.2916 -30.4642 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.3774 -27.4375 0 - vertex 28.199 -31.2235 0 - vertex 28.9763 -27.4135 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.199 -31.2235 0 - vertex 25.3774 -27.4375 0 - vertex 26.4192 -32.7448 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.3774 -27.4375 0 - vertex 24.9271 -33.7368 0 - vertex 26.4192 -32.7448 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.5138 -29.5327 0 - vertex 24.9271 -33.7368 0 - vertex 25.3774 -27.4375 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.9271 -33.7368 0 - vertex 19.5138 -29.5327 0 - vertex 23.5816 -34.2758 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.3087 -31.0557 0 - vertex 23.5816 -34.2758 0 - vertex 19.5138 -29.5327 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 22.2417 -34.4379 0 - vertex 19.3087 -31.0557 0 - vertex 21.4183 -34.349 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.9054 -28.0436 0 - vertex 25.3774 -27.4375 0 - vertex 20.1129 -27.4424 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.5138 -29.5327 0 - vertex 25.3774 -27.4375 0 - vertex 19.9054 -28.0436 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.5816 -34.2758 0 - vertex 19.3087 -31.0557 0 - vertex 22.2417 -34.4379 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.3085 -32.3556 0 - vertex 21.4183 -34.349 0 - vertex 19.3087 -31.0557 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4183 -34.349 0 - vertex 19.3085 -32.3556 0 - vertex 20.6651 -34.0963 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.6651 -34.0963 0 - vertex 19.3085 -32.3556 0 - vertex 20.0228 -33.6987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.0228 -33.6987 0 - vertex 19.3085 -32.3556 0 - vertex 19.5322 -33.1754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.3585 -24.1311 0 - vertex 37.9618 -36.3241 0 - vertex 38.113 -36.8464 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.8272 -33.2656 0 - vertex 37.9618 -36.3241 0 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9618 -36.3241 0 - vertex 36.8272 -33.2656 0 - vertex 37.1913 -36.0604 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 36.2918 -35.0946 0 - vertex 37.1913 -36.0604 0 - vertex 36.8272 -33.2656 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.1913 -36.0604 0 - vertex 36.2918 -35.0946 0 - vertex 36.3972 -35.7834 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.9875 -20.1225 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 47.7267 -19.5813 0 - vertex 47.9875 -20.1225 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.5422 14.7505 0 - vertex 47.7267 -19.5813 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.7267 -19.5813 0 - vertex 27.5422 14.7505 0 - vertex 47.2139 -19.2263 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 27.6094 12.2412 0 - vertex 47.2139 -19.2263 0 - vertex 27.5422 14.7505 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.528 9.70386 0 - vertex 47.2139 -19.2263 0 - vertex 27.6094 12.2412 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.9177 3.98634 0 - vertex 47.2139 -19.2263 0 - vertex 27.528 9.70386 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 42.1032 -19.4743 0 - vertex 44.5909 -19.3768 0 - vertex 41.8934 -19.2238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.5909 -19.3768 0 - vertex 42.1032 -19.4743 0 - vertex 42.943 -20.2657 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.2623 -19.1343 0 - vertex 41.5319 -19.1343 0 - vertex 44.5909 -19.3768 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.5909 -19.3768 0 - vertex 41.5319 -19.1343 0 - vertex 41.8934 -19.2238 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 47.2139 -19.2263 0 - vertex 26.953 2.16551 0 - vertex 46.2623 -19.1343 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.2623 -19.1343 0 - vertex 26.8464 1.29842 0 - vertex 41.5319 -19.1343 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.4974 -26.3899 0 - vertex 35.3305 -26.5156 0 - vertex 31.8275 -24.8188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8275 -24.8188 0 - vertex 34.62 -22.2927 0 - vertex 32.0255 -23.3848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8086 -21.404 0 - vertex 34.62 -22.2927 0 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.4798 -20.1181 0 - vertex 30.7248 -19.9631 0 - vertex 35.5661 -21.102 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.62 -22.2927 0 - vertex 32.0232 -22.2828 0 - vertex 32.0255 -23.3848 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.62 -22.2927 0 - vertex 31.8086 -21.404 0 - vertex 32.0232 -22.2828 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.5661 -21.102 0 - vertex 30.7248 -19.9631 0 - vertex 35.2187 -21.2043 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.9156 -21.474 0 - vertex 31.3699 -20.64 0 - vertex 31.8086 -21.404 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.2187 -21.2043 0 - vertex 31.3699 -20.64 0 - vertex 34.9156 -21.474 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 31.3699 -20.64 0 - vertex 35.2187 -21.2043 0 - vertex 30.7248 -19.9631 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.8464 1.29842 0 - vertex 46.2623 -19.1343 0 - vertex 26.953 2.16551 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.5319 -19.1343 0 - vertex 26.8464 1.29842 0 - vertex 38.4798 -20.1181 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 30.7248 -19.9631 0 - vertex 38.4798 -20.1181 0 - vertex 29.9429 -19.4981 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 26.4742 18.624 0 - vertex 27.5422 14.7505 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.5422 14.7505 0 - vertex 26.4742 18.624 0 - vertex 27.1755 15.8473 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.1755 15.8473 0 - vertex 26.4742 18.624 0 - vertex 26.6933 17.4601 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 117.5 117.5 0 - vertex 25.9424 19.4837 0 - vertex 26.4742 18.624 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 21.2755 24.568 0 - vertex 25.9424 19.4837 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 21.8319 23.6658 0 - vertex 25.9424 19.4837 0 - vertex 21.2755 24.568 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.0827 22.427 0 - vertex 25.0752 20.0627 0 - vertex 21.8319 23.6658 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.0752 20.0627 0 - vertex 22.0827 22.427 0 - vertex 23.8499 20.3844 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 22.2698 21.5943 0 - vertex 23.8499 20.3844 0 - vertex 22.0827 22.427 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.1387 20.59 0 - vertex 22.2698 21.5943 0 - vertex 22.6169 20.9877 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 23.8499 20.3844 0 - vertex 22.2698 21.5943 0 - vertex 23.1387 20.59 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 25.9424 19.4837 0 - vertex 21.8319 23.6658 0 - vertex 25.0752 20.0627 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 15.3134 30.0845 0 - vertex 21.2755 24.568 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.2755 24.568 0 - vertex 15.3134 30.0845 0 - vertex 20.1819 25.3734 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1819 25.3734 0 - vertex 15.4783 29.8698 0 - vertex 18.3193 26.3216 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 18.3193 26.3216 0 - vertex 15.4783 29.8698 0 - vertex 17.0772 26.9817 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 15.6084 29.1601 0 - vertex 17.0772 26.9817 0 - vertex 15.4783 29.8698 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 17.0772 26.9817 0 - vertex 15.6084 29.1601 0 - vertex 16.2688 27.6146 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.2688 27.6146 0 - vertex 15.6084 29.1601 0 - vertex 15.808 28.3106 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 20.1819 25.3734 0 - vertex 15.3134 30.0845 0 - vertex 15.4783 29.8698 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2907 30.5214 0 - vertex 15.0577 29.0611 0 - vertex 15.1584 29.8123 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.122 28.0941 0 - vertex 12.5486 25.9653 0 - vertex 13.4969 25.2416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.2907 30.5214 0 - vertex 15.1584 29.8123 0 - vertex 15.3134 30.0845 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.0187 29.9363 0 - vertex 15.0577 29.0611 0 - vertex 12.2907 30.5214 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.15152 38.5852 0 - vertex 15.3134 30.0845 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 5.25321 38.4452 0 - vertex 15.3134 30.0845 0 - vertex 5.15152 38.5852 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 12.0544 30.7144 0 - vertex 15.3134 30.0845 0 - vertex 5.25321 38.4452 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 13.0733 24.7212 0 - vertex 9.71033 23.0922 0 - vertex 10.9729 20.5521 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.72413 26.6445 0 - vertex 11.0411 28.3898 0 - vertex 11.2319 29.4873 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 12.1975 25.5292 0 - vertex 9.07032 24.476 0 - vertex 9.71033 23.0922 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.72413 26.6445 0 - vertex 11.2319 29.4873 0 - vertex 11.5971 30.3591 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.5037 26.4501 0 - vertex 8.51885 25.3107 0 - vertex 9.07032 24.476 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.1066 27.3577 0 - vertex 7.91411 25.7528 0 - vertex 8.51885 25.3107 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0411 28.3898 0 - vertex 7.11433 25.9588 0 - vertex 7.91411 25.7528 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 11.0411 28.3898 0 - vertex 5.72413 26.6445 0 - vertex 7.11433 25.9588 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.19939 38.083 0 - vertex 12.0544 30.7144 0 - vertex 5.25321 38.4452 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 4.72188 37.0399 0 - vertex 12.0544 30.7144 0 - vertex 5.19939 38.083 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.11433 25.9588 0 - vertex 5.72413 26.6445 0 - vertex 6.4022 26.1795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.3134 30.0845 0 - vertex 12.0544 30.7144 0 - vertex 12.2907 30.5214 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.46161 28.0795 0 - vertex 1.04836 28.6106 0 - vertex 1.1273 29.8907 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04836 28.6106 0 - vertex -0.115935 27.2162 0 - vertex 0.858783 27.1101 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -2.77953 29.7664 0 - vertex 1.1273 29.8907 0 - vertex 1.37489 31.173 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04836 28.6106 0 - vertex -0.786632 27.5359 0 - vertex -0.115935 27.2162 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -3.97987 32.1322 0 - vertex 1.37489 31.173 0 - vertex 2.44067 33.9939 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.04836 28.6106 0 - vertex -1.46161 28.0795 0 - vertex -0.786632 27.5359 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -5.55994 36.5001 0 - vertex 2.44067 33.9939 0 - vertex 4.08079 37.0842 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.1273 29.8907 0 - vertex -2.77953 29.7664 0 - vertex -1.46161 28.0795 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.55994 36.5001 0 - vertex 4.08079 37.0842 0 - vertex 5.15152 38.5852 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 1.37489 31.173 0 - vertex -3.97987 32.1322 0 - vertex -2.77953 29.7664 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.44067 33.9939 0 - vertex -4.97284 35.0324 0 - vertex -3.97987 32.1322 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -117.5 117.5 0 - vertex 5.15152 38.5852 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.44067 33.9939 0 - vertex -5.55994 36.5001 0 - vertex -4.97284 35.0324 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.15152 38.5852 0 - vertex -5.8163 36.5812 0 - vertex -5.55994 36.5001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.80952 27.3973 0 - vertex -6.28322 28.2565 0 - vertex -6.22131 31.7226 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.546 27.7352 0 - vertex -6.22131 31.7226 0 - vertex -6.055 36.2349 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -7.25507 27.2437 0 - vertex -6.28322 28.2565 0 - vertex -8.80952 27.3973 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.28322 28.2565 0 - vertex -7.25507 27.2437 0 - vertex -6.38329 27.6173 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.38329 27.6173 0 - vertex -7.25507 27.2437 0 - vertex -6.55612 27.3597 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.22131 31.7226 0 - vertex -11.546 27.7352 0 - vertex -8.80952 27.3973 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -13.5562 27.8374 0 - vertex -11.546 27.7352 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -22.4093 27.9007 0 - vertex -6.055 36.2349 0 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -15.2376 27.7001 0 - vertex -13.5562 27.8374 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -20.8096 27.6578 0 - vertex -15.2376 27.7001 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.2376 27.7001 0 - vertex -20.8096 27.6578 0 - vertex -16.9875 27.3196 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9875 27.3196 0 - vertex -19.9485 27.2141 0 - vertex -19.335 26.703 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.9875 27.3196 0 - vertex -20.8096 27.6578 0 - vertex -19.9485 27.2141 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.15152 38.5852 0 - vertex -117.5 117.5 0 - vertex -5.8163 36.5812 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -31.2177 27.4629 0 - vertex -5.8163 36.5812 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -6.055 36.2349 0 - vertex -22.4093 27.9007 0 - vertex -20.8096 27.6578 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3225 27.6757 0 - vertex -27.4214 26.3653 0 - vertex -24.8433 26.205 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8163 36.5812 0 - vertex -24.3632 27.9554 0 - vertex -22.4093 27.9007 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -29.2879 26.9865 0 - vertex -24.3632 27.9554 0 - vertex -30.666 27.4912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -24.3632 27.9554 0 - vertex -29.2879 26.9865 0 - vertex -27.4214 26.3653 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8163 36.5812 0 - vertex -30.666 27.4912 0 - vertex -24.3632 27.9554 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.0943 24.213 0 - vertex -34.2108 23.023 0 - vertex -32.1178 22.3529 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.7877 25.1404 0 - vertex -31.2912 27.2229 0 - vertex -31.2177 27.4629 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2912 27.2229 0 - vertex -36.1697 23.9798 0 - vertex -34.2108 23.023 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2912 27.2229 0 - vertex -37.7877 25.1404 0 - vertex -36.1697 23.9798 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -5.8163 36.5812 0 - vertex -31.2177 27.4629 0 - vertex -30.666 27.4912 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2177 27.4629 0 - vertex -38.5782 25.7376 0 - vertex -37.7877 25.1404 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -39.0347 25.8392 0 - vertex -31.2177 27.4629 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -47.2102 -36.2359 0 - vertex -37.5366 -12.7854 0 - vertex -47.8577 -36.863 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.9072 -25.4747 0 - vertex -47.2102 -36.2359 0 - vertex -42.237 -30.9405 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -42.237 -30.9405 0 - vertex -47.2102 -36.2359 0 - vertex -43.2543 -33.2915 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -46.1801 -35.8499 0 - vertex -43.2543 -33.2915 0 - vertex -47.2102 -36.2359 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -44.1198 -34.7306 0 - vertex -46.1801 -35.8499 0 - vertex -45.0296 -35.5019 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -43.2543 -33.2915 0 - vertex -46.1801 -35.8499 0 - vertex -44.1198 -34.7306 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -37.5366 -12.7854 0 - vertex -47.2102 -36.2359 0 - vertex -39.9072 -25.4747 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 117.5 0 - vertex -47.8577 -36.863 0 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -47.8577 -36.863 0 - vertex -117.5 117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -39.0347 25.8392 0 - vertex -117.5 117.5 0 - vertex -39.1303 25.4589 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -31.2177 27.4629 0 - vertex -39.0347 25.8392 0 - vertex -38.5782 25.7376 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.8425 -21.0531 0 - vertex 117.5 -117.5 0 - vertex 47.9875 -20.1225 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.5305 -21.9981 0 - vertex 117.5 -117.5 0 - vertex 47.8425 -21.0531 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 47.0957 -22.796 0 - vertex 117.5 -117.5 0 - vertex 47.5305 -21.9981 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 46.5684 -23.4293 0 - vertex 117.5 -117.5 0 - vertex 47.0957 -22.796 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9939 -37.5705 0 - vertex 46.5684 -23.4293 0 - vertex 45.9792 -23.8802 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.113 -36.8464 0 - vertex 45.9792 -23.8802 0 - vertex 45.3585 -24.1311 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 38.2188 -29.6614 0 - vertex 45.3585 -24.1311 0 - vertex 44.7368 -24.1643 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 40.0289 -25.46 0 - vertex 44.7368 -24.1643 0 - vertex 44.1445 -23.9621 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 41.2986 -23.9223 0 - vertex 44.1445 -23.9621 0 - vertex 43.6122 -23.5069 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 41.2986 -23.9223 0 - vertex 43.6122 -23.5069 0 - vertex 42.7682 -22.851 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1445 -23.9621 0 - vertex 41.2986 -23.9223 0 - vertex 40.5923 -24.6171 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.1445 -23.9621 0 - vertex 40.5923 -24.6171 0 - vertex 40.0289 -25.46 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 44.7368 -24.1643 0 - vertex 40.0289 -25.46 0 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 37.9618 -36.3241 0 - vertex 45.3585 -24.1311 0 - vertex 38.2188 -29.6614 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 45.9792 -23.8802 0 - vertex 38.113 -36.8464 0 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 46.5684 -23.4293 0 - vertex 37.9939 -37.5705 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 37.381 -37.9628 0 - vertex 117.5 -117.5 0 - vertex 37.9939 -37.5705 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.8907 -38.1241 0 - vertex 117.5 -117.5 0 - vertex 37.381 -37.9628 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 33.1396 -38.1555 0 - vertex 117.5 -117.5 0 - vertex 35.8907 -38.1241 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8074 -38.0948 0 - vertex 117.5 -117.5 0 - vertex 33.1396 -38.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4079 -38.2833 0 - vertex 29.8074 -38.0948 0 - vertex 28.6431 -37.8931 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.553 -36.8405 0 - vertex 25.9895 -35.834 0 - vertex 28.4102 -37.3704 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 24.0601 -37.0678 0 - vertex 28.4102 -37.3704 0 - vertex 25.9895 -35.834 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 28.4102 -37.3704 0 - vertex 24.0601 -37.0678 0 - vertex 28.6431 -37.8931 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 21.4079 -38.2833 0 - vertex 28.6431 -37.8931 0 - vertex 24.0601 -37.0678 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8074 -38.0948 0 - vertex 21.4079 -38.2833 0 - vertex 20.3084 -38.5182 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.8074 -38.0948 0 - vertex 20.3084 -38.5182 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 19.0956 -38.5852 0 - vertex 117.5 -117.5 0 - vertex 20.3084 -38.5182 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 19.0956 -38.5852 0 - vertex 17.8945 -38.4707 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 17.8945 -38.4707 0 - vertex 16.8412 -38.0675 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.519 -36.9119 0 - vertex 16.8412 -38.0675 0 - vertex 15.8953 -37.4336 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 11.871 -34.5351 0 - vertex 14.7938 -32.2631 0 - vertex 11.4887 -31.4602 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.2351 -35.1874 0 - vertex 14.8379 -35.6738 0 - vertex 14.6656 -34.4466 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 12.1379 -35.6584 0 - vertex 14.8379 -35.6738 0 - vertex 12.2351 -35.1874 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 14.8379 -35.6738 0 - vertex 12.1379 -35.6584 0 - vertex 15.2376 -36.6526 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.7916 -36.1064 0 - vertex 15.2376 -36.6526 0 - vertex 12.1379 -35.6584 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 11.1962 -36.5595 0 - vertex 15.2376 -36.6526 0 - vertex 11.7916 -36.1064 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 15.2376 -36.6526 0 - vertex 11.1962 -36.5595 0 - vertex 15.8953 -37.4336 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 10.519 -36.9119 0 - vertex 15.8953 -37.4336 0 - vertex 11.1962 -36.5595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8412 -38.0675 0 - vertex 10.519 -36.9119 0 - vertex 9.92719 -37.0575 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8412 -38.0675 0 - vertex 9.92719 -37.0575 0 - vertex 8.47177 -37.477 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 16.8412 -38.0675 0 - vertex 8.47177 -37.477 0 - vertex 5.33583 -38.4712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 19.0956 -38.5852 0 - vertex 5.33583 -38.4712 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.31266 -38.26 0 - vertex 5.33583 -38.4712 0 - vertex 4.84381 -38.3343 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.43985 -37.8545 0 - vertex 4.73542 -37.8041 0 - vertex 4.64415 -37.2809 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.43985 -37.8545 0 - vertex 4.84381 -38.3343 0 - vertex 4.73542 -37.8041 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.31266 -38.26 0 - vertex 4.84381 -38.3343 0 - vertex 3.43985 -37.8545 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 2.31266 -38.26 0 - vertex 0.962702 -38.4962 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.33583 -38.4712 0 - vertex 0.962702 -38.4962 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex 117.5 -117.5 0 - vertex 0.962702 -38.4962 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.66873 -38.0883 0 - vertex -0.366978 -38.538 0 - vertex -1.43333 -38.36 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -8.07933 -37.9462 0 - vertex -1.43333 -38.36 0 - vertex -2.45619 -37.7112 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.7659 -32.0301 0 - vertex -6.41168 -29.738 0 - vertex -3.99709 -33.5697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.33648 -34.384 0 - vertex -3.99709 -33.5697 0 - vertex -6.41168 -29.738 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.51249 -36.3769 0 - vertex -3.80393 -35.193 0 - vertex -3.99709 -33.5697 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.80393 -35.193 0 - vertex -7.31439 -36.7536 0 - vertex -3.26834 -36.6145 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -7.3919 -37.1883 0 - vertex -3.26834 -36.6145 0 - vertex -7.31439 -36.7536 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -3.26834 -36.6145 0 - vertex -7.3919 -37.1883 0 - vertex -2.45619 -37.7112 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -7.74517 -37.6801 0 - vertex -2.45619 -37.7112 0 - vertex -7.3919 -37.1883 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -8.07933 -37.9462 0 - vertex -2.45619 -37.7112 0 - vertex -7.74517 -37.6801 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -1.43333 -38.36 0 - vertex -8.07933 -37.9462 0 - vertex -8.66873 -38.0883 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex -8.66873 -38.0883 0 - vertex -12.0013 -38.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex -12.0013 -38.1555 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -12.0013 -38.1555 0 - vertex -15.3277 -38.0928 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.5781 -38.0841 0 - vertex -15.3277 -38.0928 0 - vertex -15.7983 -37.9502 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.9213 -37.1689 0 - vertex -16.6989 -37.6188 0 - vertex -15.9433 -37.6764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6989 -37.6188 0 - vertex -15.7983 -37.9502 0 - vertex -15.9433 -37.6764 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -17.033 -37.9274 0 - vertex -15.7983 -37.9502 0 - vertex -16.6989 -37.6188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -17.5781 -38.0841 0 - vertex -15.7983 -37.9502 0 - vertex -17.033 -37.9274 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -15.3277 -38.0928 0 - vertex -17.5781 -38.0841 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -17.5781 -38.0841 0 - vertex -20.8226 -38.1301 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2835 -38.1638 0 - vertex -20.8226 -38.1301 0 - vertex -24.8096 -38.0047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -27.2791 -36.8782 0 - vertex -25.0608 -37.8416 0 - vertex -25.157 -37.5754 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -28.2835 -38.1638 0 - vertex -25.0608 -37.8416 0 - vertex -27.2791 -36.8782 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -25.0608 -37.8416 0 - vertex -28.2835 -38.1638 0 - vertex -24.8096 -38.0047 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.8226 -38.1301 0 - vertex -28.2835 -38.1638 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -28.2835 -38.1638 0 - vertex -37.632 -38.1325 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -117.5 -117.5 0 - vertex -37.632 -38.1325 0 - vertex -47.4646 -37.9547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -0.366978 -38.538 0 - vertex -117.5 -117.5 0 - vertex 117.5 -117.5 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8161 -37.7712 0 - vertex -117.5 -117.5 0 - vertex -47.4646 -37.9547 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.9875 -37.5097 0 - vertex -117.5 -117.5 0 - vertex -47.8161 -37.7712 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -47.8577 -36.863 0 - vertex -117.5 -117.5 0 - vertex -47.9875 -37.5097 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 42.0238 -20.3507 0 - vertex 42.943 -20.2657 0 - vertex 42.1032 -19.4743 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 42.0238 -20.3507 0 - vertex 41.971 -20.8453 0 - vertex 42.943 -20.2657 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex 41.971 -20.8453 0 - vertex 42.0238 -20.3507 0 - vertex 41.8981 -20.7296 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.104 -22.9178 0 - vertex 36.2859 -23.7121 0 - vertex 36.3422 -23.0402 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 35.2001 -22.9271 0 - vertex 36.2859 -23.7121 0 - vertex 36.104 -22.9178 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 36.2859 -23.7121 0 - vertex 35.2001 -22.9271 0 - vertex 35.3305 -26.5156 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 34.7441 -22.7166 0 - vertex 35.3305 -26.5156 0 - vertex 35.2001 -22.9271 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.8275 -24.8188 0 - vertex 34.7441 -22.7166 0 - vertex 34.62 -22.2927 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 31.8275 -24.8188 0 - vertex 35.3305 -26.5156 0 - vertex 34.7441 -22.7166 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.2318 -26.857 0 - vertex 35.3305 -26.5156 0 - vertex 31.4974 -26.3899 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 35.3305 -26.5156 0 - vertex 31.2318 -26.857 0 - vertex 33.8444 -30.1753 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 30.7817 -27.1595 0 - vertex 33.8444 -30.1753 0 - vertex 31.2318 -26.857 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 33.8444 -30.1753 0 - vertex 30.2029 -31.1764 0 - vertex 32.5255 -33.371 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 29.8709 -31.8517 0 - vertex 32.5255 -33.371 0 - vertex 30.2029 -31.1764 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.1062 -30.7807 0 - vertex 33.8444 -30.1753 0 - vertex 30.7817 -27.1595 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 32.5255 -33.371 0 - vertex 29.8709 -31.8517 0 - vertex 31.6707 -35.0376 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 31.6707 -35.0376 0 - vertex 29.8709 -31.8517 0 - vertex 30.8837 -35.7486 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 27.8442 -34.1555 0 - vertex 30.8837 -35.7486 0 - vertex 29.8709 -31.8517 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 30.8837 -35.7486 0 - vertex 27.8442 -34.1555 0 - vertex 29.7686 -36.0779 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.7686 -36.0779 0 - vertex 27.8442 -34.1555 0 - vertex 29.0223 -36.3831 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 29.0223 -36.3831 0 - vertex 27.8442 -34.1555 0 - vertex 28.553 -36.8405 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 25.9895 -35.834 0 - vertex 28.553 -36.8405 0 - vertex 27.8442 -34.1555 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2742 24.7069 0 - vertex -10.5829 24.4 0 - vertex -10.6709 24.5009 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -14.1729 23.8467 0 - vertex -11.2742 24.7069 0 - vertex -13.9393 24.99 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -11.2742 24.7069 0 - vertex -14.1729 23.8467 0 - vertex -10.5829 24.4 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -16.6107 24.7853 0 - vertex -14.1729 23.8467 0 - vertex -13.9393 24.99 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -16.6107 24.7853 0 - vertex -19.3275 23.0662 0 - vertex -14.1729 23.8467 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -19.3275 23.0662 0 - vertex -16.6107 24.7853 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -21.5591 22.7309 0 - vertex -19.3275 23.0662 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -22.0432 22.8497 0 - vertex -21.5591 22.7309 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex -20.4324 24.2101 0 - vertex -22.6641 23.2546 0 - vertex -22.0432 22.8497 0 - endloop - endfacet - facet normal 0 -0 1 - outer loop - vertex -22.6641 23.2546 0 - vertex -20.4324 24.2101 0 - vertex -23.3809 23.8604 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.49325 -21.5121 0 - vertex 10.169 -23.3758 0 - vertex 10.0454 -22.5812 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.169 -23.3758 0 - vertex 7.70773 -21.5983 0 - vertex 10.0775 -24.2416 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.16984 -21.6481 0 - vertex 10.0454 -22.5812 0 - vertex 9.69979 -22.0048 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0454 -22.5812 0 - vertex 9.16984 -21.6481 0 - vertex 8.49325 -21.5121 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.169 -23.3758 0 - vertex 8.49325 -21.5121 0 - vertex 7.70773 -21.5983 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 6.85097 -21.9079 0 - vertex 10.0775 -24.2416 0 - vertex 7.70773 -21.5983 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 10.0775 -24.2416 0 - vertex 6.85097 -21.9079 0 - vertex 9.7411 -25.4359 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.96068 -22.4422 0 - vertex 9.7411 -25.4359 0 - vertex 6.85097 -21.9079 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 5.07455 -23.2024 0 - vertex 9.7411 -25.4359 0 - vertex 5.96068 -22.4422 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 3.84714 -24.6213 0 - vertex 9.7411 -25.4359 0 - vertex 5.07455 -23.2024 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.7411 -25.4359 0 - vertex 3.84714 -24.6213 0 - vertex 7.96204 -29.9101 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 2.80055 -26.1986 0 - vertex 7.96204 -29.9101 0 - vertex 3.84714 -24.6213 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.95873 -27.8549 0 - vertex 7.96204 -29.9101 0 - vertex 2.80055 -26.1986 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 1.3456 -29.5107 0 - vertex 7.96204 -29.9101 0 - vertex 1.95873 -27.8549 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 7.96204 -29.9101 0 - vertex 1.3456 -29.5107 0 - vertex 6.30534 -33.4759 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.985088 -31.0867 0 - vertex 6.30534 -33.4759 0 - vertex 1.3456 -29.5107 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 0.901133 -32.5034 0 - vertex 6.30534 -33.4759 0 - vertex 0.985088 -31.0867 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 6.30534 -33.4759 0 - vertex 0.901133 -32.5034 0 - vertex 5.71313 -34.2297 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.71313 -34.2297 0 - vertex 0.901133 -32.5034 0 - vertex 5.04571 -34.678 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 5.04571 -34.678 0 - vertex 0.901133 -32.5034 0 - vertex 4.11511 -35.011 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 4.11511 -35.011 0 - vertex 0.901133 -32.5034 0 - vertex 3.17687 -35.0966 0 - endloop - endfacet - facet normal -0 -0 1 - outer loop - vertex 1.11766 -33.6813 0 - vertex 3.17687 -35.0966 0 - vertex 0.901133 -32.5034 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 3.17687 -35.0966 0 - vertex 1.11766 -33.6813 0 - vertex 2.32628 -34.9386 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 2.32628 -34.9386 0 - vertex 1.11766 -33.6813 0 - vertex 1.65861 -34.5411 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.76373 17.1908 0 - vertex 9.72145 16.1788 0 - vertex 10.4258 16.5104 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.76373 17.1908 0 - vertex 8.86535 15.8492 0 - vertex 9.72145 16.1788 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.028 17.0592 0 - vertex 9.76373 17.1908 0 - vertex 8.30319 18.4459 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 9.76373 17.1908 0 - vertex 8.028 17.0592 0 - vertex 8.86535 15.8492 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 7.15178 18.7442 0 - vertex 8.30319 18.4459 0 - vertex 7.1994 19.1268 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 8.30319 18.4459 0 - vertex 7.15178 18.7442 0 - vertex 8.028 17.0592 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0804 -21.8157 0 - vertex 27.3613 -24.0204 0 - vertex 27.3668 -22.8574 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 26.0804 -21.8157 0 - vertex 27.3668 -22.8574 0 - vertex 26.9354 -22.1189 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3613 -24.0204 0 - vertex 26.0804 -21.8157 0 - vertex 24.4233 -24.8188 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.4233 -24.8188 0 - vertex 26.0804 -21.8157 0 - vertex 24.8153 -21.9586 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 27.3613 -24.0204 0 - vertex 24.4233 -24.8188 0 - vertex 27.2283 -24.8188 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 23.7526 -22.3987 0 - vertex 24.4233 -24.8188 0 - vertex 24.8153 -21.9586 0 - endloop - endfacet - facet normal -0 0 1 - outer loop - vertex 22.6861 -23.3258 0 - vertex 24.4233 -24.8188 0 - vertex 23.7526 -22.3987 0 - endloop - endfacet - facet normal 0 0 1 - outer loop - vertex 24.4233 -24.8188 0 - vertex 22.6861 -23.3258 0 - vertex 21.6183 -24.6221 0 - endloop - endfacet - facet normal 1 -0 0 - outer loop - vertex 117.5 -117.5 0 - vertex 117.5 117.5 -3 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 1 0 0 - outer loop - vertex 117.5 117.5 -3 - vertex 117.5 -117.5 0 - vertex 117.5 -117.5 -3 - endloop - endfacet - facet normal 0 1 -0 - outer loop - vertex 117.5 117.5 -3 - vertex -117.5 117.5 0 - vertex 117.5 117.5 0 - endloop - endfacet - facet normal 0 1 0 - outer loop - vertex -117.5 117.5 0 - vertex 117.5 117.5 -3 - vertex -117.5 117.5 -3 - endloop - endfacet - facet normal 0 -1 0 - outer loop - vertex -117.5 -117.5 -3 - vertex 117.5 -117.5 0 - vertex -117.5 -117.5 0 - endloop - endfacet - facet normal 0 -1 -0 - outer loop - vertex 117.5 -117.5 0 - vertex -117.5 -117.5 -3 - vertex 117.5 -117.5 -3 - endloop - endfacet -endsolid OpenSCAD_Model diff --git a/resources/meshes/hellbot_adonis.obj b/resources/meshes/hellbot_adonis.obj new file mode 100644 index 0000000000..f5b73e7210 --- /dev/null +++ b/resources/meshes/hellbot_adonis.obj @@ -0,0 +1,70 @@ +# Blender v2.80 (sub 75) OBJ File: 'hellbotBed.blend' +# www.blender.org +mtllib hellbot_adonis.mtl +o Cube.001 +v -89.999985 90.000000 -1.000015 +v -89.999985 90.000000 0.999985 +v 90.000000 89.999985 0.999996 +v 90.000000 89.999985 -1.000004 +v 89.999985 -90.000000 1.000015 +v 89.999985 -90.000000 -0.999985 +v -90.000000 -89.999985 1.000004 +v 0.900000 -0.000000 0.000151 +v -0.900000 -0.000000 0.000151 +v 0.900000 0.000000 0.017850 +v -0.900000 0.000000 0.017850 +v -89.999985 90.000000 -1.000015 +v -89.999985 90.000000 0.999985 +v 90.000000 89.999985 -1.000004 +v 89.999985 -90.000000 1.000015 +v 89.999985 -90.000000 -0.999985 +v -90.000000 -89.999985 -0.999996 +v -90.000000 -89.999985 1.000004 +v 0.900000 0.000000 -1.000000 +v -0.900000 0.000000 -1.000000 +vt 0.000100 0.000100 +vt 0.999900 0.000100 +vt 0.999900 0.999900 +vt 0.000100 0.999900 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000000 0.000000 +vt 0.123047 0.000000 +vt 0.123047 0.126953 +vt 0.000000 0.126953 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +usemtl Material.001 +s 1 +f 7/1/1 5/2/1 3/3/1 2/4/1 +usemtl Material.001_NONE +s off +f 8/5/2 9/6/2 11/7/2 10/8/2 +s 1 +f 1/9/2 2/10/2 3/11/2 4/12/2 +f 4/13/3 3/14/3 5/15/3 6/16/3 +f 16/17/4 17/18/4 12/19/4 14/20/4 +f 17/21/5 18/22/5 13/23/5 12/24/5 +f 16/17/6 15/25/6 18/26/6 17/27/6 +l 20 19 diff --git a/resources/meshes/hellbot_magna.obj b/resources/meshes/hellbot_magna.obj new file mode 100644 index 0000000000..b9c616ee62 --- /dev/null +++ b/resources/meshes/hellbot_magna.obj @@ -0,0 +1,70 @@ +# Blender v2.80 (sub 75) OBJ File: '' +# www.blender.org +mtllib untitled.mtl +o Cube.001 +v -119.999985 120.000000 -1.000018 +v -119.999985 120.000000 0.999981 +v 120.000000 119.999985 0.999996 +v 120.000000 119.999985 -1.000004 +v 119.999985 -120.000000 1.000018 +v 119.999985 -120.000000 -0.999981 +v -120.000000 -119.999985 1.000004 +v 1.200000 -0.000000 0.000151 +v -1.200000 -0.000000 0.000151 +v 1.200000 0.000000 0.017850 +v -1.200000 0.000000 0.017850 +v -119.999985 120.000000 -1.000018 +v -119.999985 120.000000 0.999981 +v 120.000000 119.999985 -1.000004 +v 119.999985 -120.000000 1.000018 +v 119.999985 -120.000000 -0.999981 +v -120.000000 -119.999985 -0.999996 +v -120.000000 -119.999985 1.000004 +v 1.200000 0.000000 -1.000000 +v -1.200000 0.000000 -1.000000 +vt 0.000100 0.000100 +vt 0.999900 0.000100 +vt 0.999900 0.999900 +vt 0.000100 0.999900 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000000 0.000000 +vt 0.123047 0.000000 +vt 0.123047 0.126953 +vt 0.000000 0.126953 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vt 0.000013 0.000013 +vt 0.017463 0.000143 +vt 0.017463 0.000143 +vt 0.017463 0.999987 +vt 0.000013 0.999857 +vn -0.0000 0.0000 1.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 -1.0000 0.0000 +usemtl Material.001 +s 1 +f 7/1/1 5/2/1 3/3/1 2/4/1 +usemtl Material.001_NONE +s off +f 8/5/2 9/6/2 11/7/2 10/8/2 +s 1 +f 1/9/2 2/10/2 3/11/2 4/12/2 +f 4/13/3 3/14/3 5/15/3 6/16/3 +f 16/17/4 17/18/4 12/19/4 14/20/4 +f 17/21/5 18/22/5 13/23/5 12/24/5 +f 16/17/6 15/25/6 18/26/6 17/27/6 +l 20 19 diff --git a/resources/meshes/imade3d_jellybox_2_platform.stl b/resources/meshes/imade3d_jellybox_2_platform.stl new file mode 100644 index 0000000000..d897e1c3e0 Binary files /dev/null and b/resources/meshes/imade3d_jellybox_2_platform.stl differ diff --git a/resources/meshes/leapfrog_bolt_pro_platform.stl b/resources/meshes/leapfrog_bolt_pro_platform.stl new file mode 100644 index 0000000000..be006a5ee3 Binary files /dev/null and b/resources/meshes/leapfrog_bolt_pro_platform.stl differ diff --git a/resources/meshes/skriware_2_platform.stl b/resources/meshes/skriware_2_platform.stl new file mode 100644 index 0000000000..b85b33ad94 Binary files /dev/null and b/resources/meshes/skriware_2_platform.stl differ diff --git a/resources/meshes/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/ActionButton.qml b/resources/qml/ActionButton.qml index 905863a561..bb1abcf57e 100644 --- a/resources/qml/ActionButton.qml +++ b/resources/qml/ActionButton.qml @@ -67,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 @@ -124,7 +133,7 @@ Button Cura.ToolTip { id: tooltip - visible: button.hovered + visible: button.hovered && buttonTextMetrics.elidedText != buttonText.text } BusyIndicator diff --git a/resources/qml/ActionPanel/ActionPanelWidget.qml b/resources/qml/ActionPanel/ActionPanelWidget.qml index 4d61380c99..6efa77518b 100644 --- a/resources/qml/ActionPanel/ActionPanelWidget.qml +++ b/resources/qml/ActionPanel/ActionPanelWidget.qml @@ -27,7 +27,7 @@ Item width: UM.Theme.getSize("action_panel_widget").width height: childrenRect.height + 2 * UM.Theme.getSize("thick_margin").height - anchors. right: parent.right + anchors.right: parent.right color: UM.Theme.getColor("main_background") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") @@ -103,4 +103,4 @@ Item CuraApplication.additionalComponents["saveButton"][component].parent = additionalComponentsRow } } -} \ No newline at end of file +} diff --git a/resources/qml/ActionPanel/OutputProcessWidget.qml b/resources/qml/ActionPanel/OutputProcessWidget.qml index 7e76768cb4..be6d68de4f 100644 --- a/resources/qml/ActionPanel/OutputProcessWidget.qml +++ b/resources/qml/ActionPanel/OutputProcessWidget.qml @@ -100,6 +100,7 @@ Column 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/Actions.qml b/resources/qml/Actions.qml index ce9618a560..e5b39c6ba5 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -65,6 +65,7 @@ Item property alias about: aboutAction; property alias toggleFullScreen: toggleFullScreenAction; + property alias exitFullScreen: exitFullScreenAction property alias configureSettingVisibility: configureSettingVisibilityAction @@ -82,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 @@ -101,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(); @@ -110,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 @@ -249,7 +258,7 @@ Item text: catalog.i18ncp("@action:inmenu menubar:edit", "Delete Selected Model", "Delete Selected Models", UM.Selection.selectionCount); enabled: UM.Controller.toolsEnabled && UM.Selection.hasSelection; iconName: "edit-delete"; - shortcut: StandardKey.Delete; + shortcut: StandardKey.Delete | "Backspace" onTriggered: CuraActions.deleteSelection(); } diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 790a522b26..8dcf60018f 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -21,7 +21,8 @@ UM.MainWindow id: base // Cura application window title - title: catalog.i18nc("@title:window", "Ultimaker Cura") + title: PrintInformation.jobName + " - " + catalog.i18nc("@title:window", CuraApplication.applicationDisplayName) + backgroundColor: UM.Theme.getColor("viewport_background") UM.I18nCatalog @@ -301,6 +302,15 @@ UM.MainWindow } } + // A hint for the loaded content view. Overlay items / controls can safely be placed in this area + Item { + id: mainSafeArea + anchors.left: viewOrientationControls.right + anchors.right: main.right + anchors.top: main.top + anchors.bottom: main.bottom + } + Loader { // A stage can control this area. If nothing is set, it will therefore show the 3D view. @@ -316,6 +326,12 @@ UM.MainWindow } source: UM.Controller.activeStage != null ? UM.Controller.activeStage.mainComponent : "" + + onLoaded: { + if (main.item.safeArea !== undefined){ + main.item.safeArea = Qt.binding(function() { return mainSafeArea }); + } + } } Loader @@ -447,7 +463,6 @@ UM.MainWindow target: Cura.Actions.addProfile onTriggered: { - preferences.show(); preferences.setPage(4); // Create a new profile after a very short delay so the preference page has time to initiate @@ -573,7 +588,13 @@ UM.MainWindow Connections { target: Cura.Actions.toggleFullScreen - onTriggered: base.toggleFullscreen(); + onTriggered: base.toggleFullscreen() + } + + Connections + { + target: Cura.Actions.exitFullScreen + onTriggered: base.exitFullscreen() } FileDialog @@ -585,7 +606,12 @@ UM.MainWindow 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 diff --git a/resources/qml/Dialogs/AboutDialog.qml b/resources/qml/Dialogs/AboutDialog.qml index 584903dd60..aa0a58aa8d 100644 --- a/resources/qml/Dialogs/AboutDialog.qml +++ b/resources/qml/Dialogs/AboutDialog.qml @@ -12,7 +12,7 @@ UM.Dialog id: base //: About dialog title - title: catalog.i18nc("@title:window","About Cura") + title: catalog.i18nc("@title:window","About " + catalog.i18nc("@title:window", CuraApplication.applicationDisplayName)) minimumWidth: 500 * screenScaleFactor minimumHeight: 650 * screenScaleFactor @@ -41,6 +41,7 @@ UM.Dialog source: UM.Theme.getImage("logo") sourceSize.width: width sourceSize.height: height + fillMode: Image.PreserveAspectFit anchors.top: parent.top anchors.topMargin: parent.topPadding diff --git a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml index f6436f62c5..8cdaeea5fa 100644 --- a/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml +++ b/resources/qml/Dialogs/AskOpenAsProjectOrModelsDialog.qml @@ -18,8 +18,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Open project file") - width: 450 * screenScaleFactor - height: 150 * screenScaleFactor + width: UM.Theme.getSize("small_popup_dialog").width + height: UM.Theme.getSize("small_popup_dialog").height maximumHeight: height maximumWidth: width @@ -53,7 +53,7 @@ UM.Dialog UM.Preferences.setValue("cura/choice_on_open_project", "open_as_model") } - CuraApplication.readLocalFile(base.fileUrl, true) + CuraApplication.readLocalFile(base.fileUrl, "open_as_model") var meshName = backgroundItem.getMeshName(base.fileUrl.toString()) backgroundItem.hasMesh(decodeURIComponent(meshName)) diff --git a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml index afa9fda0bd..a7701cf059 100644 --- a/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml +++ b/resources/qml/Dialogs/DiscardOrKeepProfileChangesDialog.qml @@ -14,8 +14,8 @@ UM.Dialog id: base title: catalog.i18nc("@title:window", "Discard or Keep changes") - width: 800 * screenScaleFactor - height: 400 * screenScaleFactor + width: UM.Theme.getSize("popup_dialog").width + height: UM.Theme.getSize("popup_dialog").height property var changesModel: Cura.UserChangesModel{ id: userChangesModel} onVisibilityChanged: { @@ -100,7 +100,6 @@ UM.Dialog { text: styleData.value font: UM.Theme.getFont("system") - color: UM.Theme.getColor("setting_control_disabled_text") } } diff --git a/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml b/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml index 0df914805a..187578f12c 100644 --- a/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml +++ b/resources/qml/Dialogs/OpenFilesIncludingProjectsDialog.qml @@ -42,7 +42,7 @@ UM.Dialog { for (var i in fileUrls) { - CuraApplication.readLocalFile(fileUrls[i], true); + CuraApplication.readLocalFile(fileUrls[i], "open_as_model"); } var meshName = backgroundItem.getMeshName(fileUrls[0].toString()); diff --git a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml index b8c9560b3a..6fe9607274 100644 --- a/resources/qml/Dialogs/WorkspaceSummaryDialog.qml +++ b/resources/qml/Dialogs/WorkspaceSummaryDialog.qml @@ -1,10 +1,10 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.1 -import QtQuick.Controls 1.1 -import QtQuick.Layouts 1.1 -import QtQuick.Window 2.1 +import QtQuick 2.10 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 +import QtQuick.Window 2.2 import UM 1.2 as UM import Cura 1.0 as Cura @@ -139,37 +139,31 @@ UM.Dialog } } } - Row - { - visible: Cura.MachineManager.hasVariantBuildplates - width: parent.width - height: childrenRect.height - Label - { - text: catalog.i18nc("@action:label", "Build plate") - width: Math.floor(scroll.width / 3) | 0 - } - Label - { - text: Cura.activeStack != null ? Cura.MachineManager.activeStack.variant.name : "" - width: Math.floor(scroll.width / 3) | 0 - } - } Repeater { width: parent.width height: childrenRect.height - model: Cura.MachineManager.currentExtruderPositions + model: Cura.MachineManager.activeMachine.extruderList delegate: Column { height: childrenRect.height width: parent.width - 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 : "" + property string variantName: + { + var extruder = modelData + var variant_name = extruder.variant.name + return (variant_name !== undefined) ? variant_name : "" + } + property string materialName: + { + var extruder = modelData + var material_name = extruder.material.name + return (material_name !== undefined) ? material_name : "" + } Label { text: { - var extruder = Number(modelData) + var extruder = Number(modelData.position) var extruder_id = "" if(!isNaN(extruder)) { @@ -177,12 +171,13 @@ UM.Dialog } else { - extruder_id = modelData + extruder_id = modelData.position } return catalog.i18nc("@action:label", "Extruder %1").arg(extruder_id) } font.bold: true + enabled: modelData.isEnabled } Row { @@ -200,6 +195,7 @@ UM.Dialog return catalog.i18nc("@action:label", "Material") } width: Math.floor(scroll.width / 3) | 0 + enabled: modelData.isEnabled } Label { @@ -211,7 +207,7 @@ UM.Dialog } return materialName } - + enabled: modelData.isEnabled width: Math.floor(scroll.width / 3) | 0 } } @@ -256,6 +252,23 @@ UM.Dialog width: Math.floor(scroll.width / 3) | 0 } } + + // Intent + Row + { + width: parent.width + height: childrenRect.height + Label + { + text: catalog.i18nc("@action:label", "Intent") + width: Math.floor(scroll.width / 3) | 0 + } + Label + { + text: Cura.MachineManager.activeIntentCategory + width: Math.floor(scroll.width / 3) | 0 + } + } } } } 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/IconWithText.qml b/resources/qml/IconWithText.qml index 24b6dc7fe2..b9fe873b25 100644 --- a/resources/qml/IconWithText.qml +++ b/resources/qml/IconWithText.qml @@ -19,6 +19,7 @@ Item property alias color: label.color property alias text: label.text property alias font: label.font + property alias elide: label.elide property real margin: UM.Theme.getSize("narrow_margin").width // These properties can be used in combination with layouts. diff --git a/resources/qml/JobSpecs.qml b/resources/qml/JobSpecs.qml index 63ccbc336a..e48d3facda 100644 --- a/resources/qml/JobSpecs.qml +++ b/resources/qml/JobSpecs.qml @@ -83,10 +83,22 @@ Item text: PrintInformation.jobName horizontalAlignment: TextInput.AlignLeft + property string textBeforeEdit: "" + + onActiveFocusChanged: + { + if (activeFocus) + { + textBeforeEdit = text + } + } + onEditingFinished: { - var new_name = text == "" ? catalog.i18nc("@text Print job name", "Untitled") : text - PrintInformation.setJobName(new_name, true) + if (text != textBeforeEdit) { + var new_name = text == "" ? catalog.i18nc("@text Print job name", "Untitled") : text + PrintInformation.setJobName(new_name, true) + } printJobTextfield.focus = false } diff --git a/resources/qml/LabelBar.qml b/resources/qml/LabelBar.qml new file mode 100644 index 0000000000..007c5f1f54 --- /dev/null +++ b/resources/qml/LabelBar.qml @@ -0,0 +1,65 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 + +import UM 1.2 as UM + +// The labelBar shows a set of labels that are evenly spaced from one another. +// The first item is aligned to the left, the last is aligned to the right. +// It's intended to be used together with RadioCheckBar. As such, it needs +// to know what the used itemSize is, so it can ensure the labels are aligned correctly. +Item +{ + id: base + property var model: null + property string modelKey: "" + property int itemSize: 14 + height: childrenRect.height + RowLayout + { + anchors.left: parent.left + anchors.right: parent.right + spacing: 0 + Repeater + { + id: repeater + model: base.model + + Item + { + Layout.fillWidth: true + Layout.maximumWidth: Math.round(index + 1 === repeater.count || repeater.count <= 1 ? itemSize : base.width / (repeater.count - 1)) + height: label.height + + Label + { + id: label + text: model[modelKey] + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + renderType: Text.NativeRendering + height: contentHeight + anchors + { + // Some magic to ensure that the items are aligned properly. + // We want the following: + // First item should be aligned to the left, no margin. + // Last item should be aligned to the right, no margin. + // The middle item(s) should be aligned to the center of the "item" it's showing (hence half the itemsize as offset). + // We want the center of the label to align with the center of the item, so we negatively offset by half the contentWidth + right: index + 1 === repeater.count ? parent.right: undefined + left: index + 1 === repeater.count || index === 0 ? undefined: parent.left + leftMargin: Math.round((itemSize - contentWidth) * 0.5) + + // For some reason, the last label in the row gets misaligned with Qt 5.10. This lines seems to + // fix it. + verticalCenter: parent.verticalCenter + } + } + } + } + } +} diff --git a/resources/qml/MachineSettings/ComboBoxWithOptions.qml b/resources/qml/MachineSettings/ComboBoxWithOptions.qml index fbb05c23b1..715a6e9224 100644 --- a/resources/qml/MachineSettings/ComboBoxWithOptions.qml +++ b/resources/qml/MachineSettings/ComboBoxWithOptions.qml @@ -91,6 +91,7 @@ UM.TooltipArea { target: propertyProvider onContainerStackChanged: defaultOptionsModel.updateModel() + onIsValueUsedChanged: defaultOptionsModel.updateModel() } Cura.ComboBox diff --git a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml index 5921a39933..9898fb2c6b 100644 --- a/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml +++ b/resources/qml/MachineSettings/NumericTextFieldWithUnit.qml @@ -35,6 +35,7 @@ UM.TooltipArea property alias labelWidth: fieldLabel.width property alias unitText: unitLabel.text + property alias textField: textFieldWithUnit property alias valueText: textFieldWithUnit.text property alias valueValidator: textFieldWithUnit.validator property alias editingFinishedFunction: textFieldWithUnit.editingFinishedFunction @@ -43,6 +44,8 @@ UM.TooltipArea // whether negative value is allowed. This affects the validation of the input field. property bool allowNegativeValue: false + // whether positive value is allowed. This affects the validation of the input field. + property bool allowPositiveValue: true // callback functions property var afterOnEditingFinishedFunction: dummy_func @@ -65,7 +68,7 @@ UM.TooltipArea anchors.left: parent.left anchors.verticalCenter: textFieldWithUnit.verticalCenter visible: text != "" - font: UM.Theme.getFont("medium") + font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") renderType: Text.NativeRendering } @@ -153,7 +156,13 @@ UM.TooltipArea const value = propertyProvider.properties.value return value ? value : "" } - validator: RegExpValidator { regExp: allowNegativeValue ? /-?[0-9\.,]{0,6}/ : /[0-9\.,]{0,6}/ } + validator: DoubleValidator + { + bottom: allowNegativeValue ? Number.NEGATIVE_INFINITY : 0 + top: allowPositiveValue ? Number.POSITIVE_INFINITY : 0 + decimals: 6 + notation: DoubleValidator.StandardNotation + } onEditingFinished: editingFinishedFunction() diff --git a/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml b/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml index 2eaaed4524..1bbdb3c5c5 100644 --- a/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml +++ b/resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml @@ -24,10 +24,10 @@ import Cura 1.1 as Cura // NumericTextFieldWithUnit { - id: machineXMaxField + id: printerHeadMinMaxField UM.I18nCatalog { id: catalog; name: "cura" } - containerStackId: Cura.MachineManager.activeMachineId + containerStackId: Cura.MachineManager.activeMachine.id settingKey: "machine_head_with_fans_polygon" settingStoreIndex: 1 @@ -43,31 +43,48 @@ NumericTextFieldWithUnit { result = func(result, polygon[i][item]) } - result = Math.abs(result) return result } - valueValidator: RegExpValidator { regExp: /[0-9\.,]{0,6}/ } + valueValidator: DoubleValidator { + bottom: allowNegativeValue ? Number.NEGATIVE_INFINITY : 0 + top: allowPositiveValue ? Number.POSITIVE_INFINITY : 0 + decimals: 6 + notation: DoubleValidator.StandardNotation + } + valueText: axisValue + Connections + { + target: textField + onActiveFocusChanged: + { + // When this text field loses focus and the entered text is not valid, make sure to recreate the binding to + // show the correct value. + if (!textField.activeFocus && !textField.acceptableInput) + { + valueText = Qt.binding(function() { return printerHeadMinMaxField.axisValue }) + } + } + } + editingFinishedFunction: function() { var polygon = JSON.parse(propertyProvider.properties.value) - var newValue = parseFloat(valueText.replace(',', '.')) + if (axisName == "x") // x min/x max { var start_i1 = (axisMinOrMax == "min") ? 0 : 2 - var factor = (axisMinOrMax == "min") ? -1 : 1 - polygon[start_i1][0] = newValue * factor - polygon[start_i1 + 1][0] = newValue * factor + polygon[start_i1][0] = newValue + polygon[start_i1 + 1][0] = newValue } 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 + polygon[start_i1][1] = newValue + polygon[start_i1 + 2][1] = newValue } var polygon_string = JSON.stringify(polygon) if (polygon_string != propertyProvider.properties.value) @@ -75,5 +92,8 @@ NumericTextFieldWithUnit propertyProvider.setPropertyValue("value", polygon_string) forceUpdateOnChangeFunction() } + + // Recreate the binding to show the correct value. + valueText = Qt.binding(function() { return axisValue }) } } diff --git a/resources/qml/MainWindow/ApplicationMenu.qml b/resources/qml/MainWindow/ApplicationMenu.qml index 7f343eb8f4..30e44d7d3b 100644 --- a/resources/qml/MainWindow/ApplicationMenu.qml +++ b/resources/qml/MainWindow/ApplicationMenu.qml @@ -129,6 +129,7 @@ Item { CuraApplication.deleteAll(); Cura.Actions.resetProfile.trigger(); + UM.Controller.setActiveStage("PrepareStage") } } @@ -159,7 +160,7 @@ Item target: Cura.Actions.browsePackages onTriggered: { - curaExtensions.callExtensionMethod("Toolbox", "browsePackages") + curaExtensions.callExtensionMethod("Toolbox", "launch") } } } \ No newline at end of file diff --git a/resources/qml/MainWindow/MainWindowHeader.qml b/resources/qml/MainWindow/MainWindowHeader.qml index 43ec03d947..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 diff --git a/resources/qml/Menus/BuildplateMenu.qml b/resources/qml/Menus/BuildplateMenu.qml deleted file mode 100644 index b924aa0879..0000000000 --- a/resources/qml/Menus/BuildplateMenu.qml +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.4 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Menu -{ - id: menu - title: "Build plate" - - property var buildPlateModel: CuraApplication.getBuildPlateModel() - - Instantiator - { - model: menu.buildPlateModel - - MenuItem { - text: model.name - checkable: true - checked: model.name == Cura.MachineManager.globalVariantName - exclusiveGroup: group - onTriggered: { - Cura.MachineManager.setGlobalVariant(model.container_node); - } - } - - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) - } - - ExclusiveGroup { id: group } -} diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml index afb3aba82b..b47d77243c 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationListView.qml @@ -107,8 +107,9 @@ Item Cura.PrinterTypeLabel { id: printerTypeLabel - text: Cura.MachineManager.getAbbreviatedMachineName(section) + text: section anchors.verticalCenter: parent.verticalCenter //One default margin above and one below. + autoFit: true } } diff --git a/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml index 77164429b3..f0ada92810 100644 --- a/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml +++ b/resources/qml/Menus/ConfigurationMenu/ConfigurationMenu.qml @@ -1,8 +1,8 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 2.0 +import QtQuick 2.10 +import QtQuick.Controls 2.3 import QtQuick.Controls.Styles 1.4 import UM 1.2 as UM @@ -32,7 +32,7 @@ Cura.ExpandablePopup } contentPadding: UM.Theme.getSize("default_lining").width - enabled: Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants || Cura.MachineManager.hasVariantBuildplates; //Only let it drop down if there is any configuration that you could change. + enabled: Cura.MachineManager.activeMachine.hasMaterials || Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasVariantBuildplates; //Only let it drop down if there is any configuration that you could change. headerItem: Item { @@ -44,7 +44,7 @@ Cura.ExpandablePopup orientation: ListView.Horizontal anchors.fill: parent model: extrudersModel - visible: Cura.MachineManager.hasMaterials + visible: Cura.MachineManager.activeMachine.hasMaterials delegate: Item { @@ -86,7 +86,7 @@ Cura.ExpandablePopup { id: variantLabel - visible: Cura.MachineManager.hasVariants + visible: Cura.MachineManager.activeMachine.hasVariants text: model.variant elide: Text.ElideRight @@ -99,12 +99,14 @@ Cura.ExpandablePopup left: extruderIcon.right leftMargin: UM.Theme.getSize("default_margin").width top: typeAndBrandNameLabel.bottom + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width } } } } - //Placeholder text if there is a configuration to select but no materials (so we can't show the materials per extruder). + // Placeholder text if there is a configuration to select but no materials (so we can't show the materials per extruder). Label { text: catalog.i18nc("@label", "Select configuration") @@ -113,7 +115,7 @@ Cura.ExpandablePopup color: UM.Theme.getColor("text") renderType: Text.NativeRendering - visible: !Cura.MachineManager.hasMaterials && (Cura.MachineManager.hasVariants || Cura.MachineManager.hasVariantBuildplates) + visible: !Cura.MachineManager.activeMachine.hasMaterials && (Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasVariantBuildplates) anchors { @@ -138,7 +140,7 @@ Cura.ExpandablePopup onVisibleChanged: { - is_connected = Cura.MachineManager.activeMachineHasRemoteConnection && Cura.MachineManager.printerConnected && Cura.MachineManager.printerOutputDevices[0].uniqueConfigurations.length > 0 //Re-evaluate. + is_connected = Cura.MachineManager.activeMachine.hasRemoteConnection && Cura.MachineManager.printerConnected && Cura.MachineManager.printerOutputDevices[0].uniqueConfigurations.length > 0 //Re-evaluate. // If the printer is not connected or does not have configurations, we switch always to the custom mode. If is connected instead, the auto mode // or the previous state is selected diff --git a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml index 6f3d6ffa17..65f5bcce8c 100644 --- a/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml +++ b/resources/qml/Menus/ConfigurationMenu/CustomConfiguration.qml @@ -221,6 +221,7 @@ Item OldControls.CheckBox { + id: enabledCheckbox checked: Cura.MachineManager.activeStack != null ? Cura.MachineManager.activeStack.isEnabled : false enabled: !checked || Cura.MachineManager.numberExtrudersEnabled > 1 //Disable if it's the last enabled extruder. height: parent.height @@ -243,7 +244,7 @@ Item Row { height: visible ? UM.Theme.getSize("print_setup_big_item").height : 0 - visible: Cura.MachineManager.hasMaterials + visible: Cura.MachineManager.activeMachine.hasMaterials Label { @@ -265,6 +266,7 @@ Item text: Cura.MachineManager.activeStack !== null ? Cura.MachineManager.activeStack.material.name : "" tooltip: text + enabled: enabledCheckbox.checked width: selectors.controlWidth height: parent.height @@ -303,7 +305,7 @@ Item Row { height: visible ? UM.Theme.getSize("print_setup_big_item").height : 0 - visible: Cura.MachineManager.hasVariants + visible: Cura.MachineManager.activeMachine.hasVariants Label { @@ -324,7 +326,8 @@ Item height: parent.height width: selectors.controlWidth style: UM.Theme.styles.print_setup_header_button - activeFocusOnPress: true; + activeFocusOnPress: true + enabled: enabledCheckbox.checked menu: Cura.NozzleMenu { extruderIndex: Cura.ExtruderManager.activeExtruderIndex } } diff --git a/resources/qml/Menus/FileMenu.qml b/resources/qml/Menus/FileMenu.qml index 955ac89693..df58ea6636 100644 --- a/resources/qml/Menus/FileMenu.qml +++ b/resources/qml/Menus/FileMenu.qml @@ -29,6 +29,7 @@ Menu MenuItem { id: saveWorkspaceMenu + shortcut: StandardKey.Save text: catalog.i18nc("@title:menu menubar:file", "&Save...") onTriggered: { diff --git a/resources/qml/Menus/MaterialMenu.qml b/resources/qml/Menus/MaterialMenu.qml index ba35a160ba..edc5ee1e0d 100644 --- a/resources/qml/Menus/MaterialMenu.qml +++ b/resources/qml/Menus/MaterialMenu.qml @@ -14,7 +14,11 @@ Menu property int extruderIndex: 0 property string currentRootMaterialId: Cura.MachineManager.currentRootMaterialId[extruderIndex] - property string activeMaterialId: Cura.MachineManager.allActiveMaterialIds[Cura.ExtruderManager.extruderIds[extruderIndex]] + property string activeMaterialId: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? "" : extruder.material.id + } property bool updateModels: true Cura.FavoriteMaterialsModel { @@ -50,12 +54,13 @@ Menu { text: model.brand + " " + model.name checkable: true + enabled: Cura.MachineManager.activeMachine.extruderList[extruderIndex].isEnabled checked: model.root_material_id === menu.currentRootMaterialId onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) - exclusiveGroup: group + exclusiveGroup: favoriteGroup // One favorite and one item from the others can be active at the same time. } onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) // TODO: This ain't gonna work, removeItem() takes an index, not object + onObjectRemoved: menu.removeItem(index) } MenuSeparator {} @@ -72,12 +77,17 @@ Menu { text: model.name checkable: true + enabled: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : extruder.isEnabled + } checked: model.root_material_id === menu.currentRootMaterialId exclusiveGroup: group onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) } onObjectAdded: genericMenu.insertItem(index, object) - onObjectRemoved: genericMenu.removeItem(object) // TODO: This ain't gonna work, removeItem() takes an index, not object + onObjectRemoved: genericMenu.removeItem(index) } } @@ -110,6 +120,11 @@ Menu { text: model.name checkable: true + enabled: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : extruder.isEnabled + } checked: model.id === menu.activeMaterialId exclusiveGroup: group onTriggered: Cura.MachineManager.setMaterial(extruderIndex, model.container_node) @@ -126,10 +141,16 @@ Menu onObjectRemoved: menu.removeItem(object) } - ExclusiveGroup { + ExclusiveGroup + { id: group } + ExclusiveGroup + { + id: favoriteGroup + } + MenuSeparator {} MenuItem diff --git a/resources/qml/Menus/NozzleMenu.qml b/resources/qml/Menus/NozzleMenu.qml index 886216dab0..2734e40489 100644 --- a/resources/qml/Menus/NozzleMenu.qml +++ b/resources/qml/Menus/NozzleMenu.qml @@ -1,7 +1,7 @@ // Copyright (c) 2017 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import UM 1.2 as UM @@ -28,9 +28,15 @@ Menu text: model.hotend_name checkable: true checked: { - return Cura.MachineManager.activeVariantNames[extruderIndex] == model.hotend_name + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : (extruder.variant.name == model.hotend_name) } exclusiveGroup: group + enabled: + { + var extruder = Cura.MachineManager.activeMachine.extruderList[extruderIndex] + return (extruder === undefined) ? false : extruder.isEnabled + } onTriggered: { Cura.MachineManager.setVariant(menu.extruderIndex, model.container_node); } diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml deleted file mode 100644 index 68260f2502..0000000000 --- a/resources/qml/Menus/ProfileMenu.qml +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.4 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Menu -{ - id: menu - - Instantiator - { - model: Cura.QualityProfilesDropDownMenuModel - - MenuItem - { - text: - { - var full_text = (model.layer_height != "") ? model.name + " - " + model.layer_height + model.layer_height_unit : model.name - full_text += model.is_experimental ? " - " + catalog.i18nc("@label", "Experimental") : "" - return full_text - } - checkable: true - checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name - exclusiveGroup: group - onTriggered: Cura.MachineManager.setQualityGroup(model.quality_group) - visible: model.available - } - - onObjectAdded: menu.insertItem(index, object) - onObjectRemoved: menu.removeItem(object) - } - - MenuSeparator - { - id: customSeparator - visible: Cura.CustomQualityProfilesDropDownMenuModel.count > 0 - } - - Instantiator - { - id: customProfileInstantiator - model: Cura.CustomQualityProfilesDropDownMenuModel - - Connections - { - target: Cura.CustomQualityProfilesDropDownMenuModel - onModelReset: customSeparator.visible = Cura.CustomQualityProfilesDropDownMenuModel.count > 0 - } - - MenuItem - { - text: model.name - checkable: true - checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name - exclusiveGroup: group - onTriggered: Cura.MachineManager.setQualityChangesGroup(model.quality_changes_group) - } - - onObjectAdded: - { - customSeparator.visible = model.count > 0; - menu.insertItem(index, object); - } - onObjectRemoved: - { - customSeparator.visible = model.count > 0; - menu.removeItem(object); - } - } - - ExclusiveGroup { id: group; } - - MenuSeparator { id: profileMenuSeparator } - - MenuItem { action: Cura.Actions.addProfile } - MenuItem { action: Cura.Actions.updateProfile } - MenuItem { action: Cura.Actions.resetProfile } - MenuSeparator { } - MenuItem { action: Cura.Actions.manageProfiles } -} diff --git a/resources/qml/Menus/RecentFilesMenu.qml b/resources/qml/Menus/RecentFilesMenu.qml index 0f1f67b6fa..b788b5e72e 100644 --- a/resources/qml/Menus/RecentFilesMenu.qml +++ b/resources/qml/Menus/RecentFilesMenu.qml @@ -29,42 +29,8 @@ Menu } onTriggered: { - var toShowDialog = false; - var toOpenAsProject = false; - var toOpenAsModel = false; + CuraApplication.readLocalFile(modelData); - if (CuraApplication.checkIsValidProjectFile(modelData)) { - // check preference - var choice = UM.Preferences.getValue("cura/choice_on_open_project"); - - if (choice == "open_as_project") - { - toOpenAsProject = true; - }else if (choice == "open_as_model"){ - toOpenAsModel = true; - }else{ - toShowDialog = true; - } - } - else { - toOpenAsModel = true; - } - - if (toShowDialog) { - askOpenAsProjectOrModelsDialog.fileUrl = modelData; - askOpenAsProjectOrModelsDialog.show(); - return; - } - - // open file in the prefered way - if (toOpenAsProject) - { - UM.WorkspaceFileHandler.readLocalFile(modelData); - } - else if (toOpenAsModel) - { - CuraApplication.readLocalFile(modelData, true); - } var meshName = backgroundItem.getMeshName(modelData.toString()) backgroundItem.hasMesh(decodeURIComponent(meshName)) } diff --git a/resources/qml/Menus/SettingsMenu.qml b/resources/qml/Menus/SettingsMenu.qml index f1f594f395..0afbccd5ca 100644 --- a/resources/qml/Menus/SettingsMenu.qml +++ b/resources/qml/Menus/SettingsMenu.qml @@ -15,25 +15,20 @@ Menu PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") } property var activeMachine: Cura.MachineManager.activeMachine - - onAboutToShow: extruderInstantiator.active = true - onAboutToHide: extruderInstantiator.active = false Instantiator { id: extruderInstantiator model: activeMachine == null ? null : activeMachine.extruderList - active: false - asynchronous: true Menu { title: modelData.name - - NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.hasVariants; extruderIndex: index } - MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.hasMaterials; extruderIndex: index } + property var extruder: Cura.MachineManager.activeMachine.extruderList[model.index] + NozzleMenu { title: Cura.MachineManager.activeDefinitionVariantsName; visible: Cura.MachineManager.activeMachine.hasVariants; extruderIndex: index } + MaterialMenu { title: catalog.i18nc("@title:menu", "&Material"); visible: Cura.MachineManager.activeMachine.hasMaterials; extruderIndex: index } MenuSeparator { - visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials + visible: Cura.MachineManager.activeMachine.hasVariants || Cura.MachineManager.activeMachine.hasMaterials } MenuItem @@ -46,14 +41,14 @@ Menu { text: catalog.i18nc("@action:inmenu", "Enable Extruder") onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, true) - visible: !Cura.MachineManager.getExtruder(model.index).isEnabled + visible: extruder === null ? false : !extruder.isEnabled } MenuItem { text: catalog.i18nc("@action:inmenu", "Disable Extruder") - onTriggered: Cura.MachineManager.setExtruderEnabled(model.index, false) - visible: Cura.MachineManager.getExtruder(model.index).isEnabled + onTriggered: Cura.MachineManager.setExtruderEnabled(index, false) + visible: extruder === null ? false : extruder.isEnabled enabled: Cura.MachineManager.numberExtrudersEnabled > 1 } @@ -62,14 +57,6 @@ Menu onObjectRemoved: base.removeItem(object) } - // TODO Only show in dev mode. Remove check when feature ready - BuildplateMenu - { - title: catalog.i18nc("@title:menu", "&Build plate") - visible: CuraSDKVersion == "dev" && Cura.MachineManager.hasVariantBuildplates - } - ProfileMenu { title: catalog.i18nc("@title:settings", "&Profile") } - MenuSeparator { } MenuItem { action: Cura.Actions.configureSettingVisibility } diff --git a/resources/qml/Menus/ViewMenu.qml b/resources/qml/Menus/ViewMenu.qml index 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 index 683d0ed52b..b454fd929a 100644 --- a/resources/qml/ObjectItemButton.qml +++ b/resources/qml/ObjectItemButton.qml @@ -51,5 +51,21 @@ Button border.color: objectItemButton.checked ? UM.Theme.getColor("primary") : "transparent" } + TextMetrics + { + id: buttonTextMetrics + text: buttonText.text + font: buttonText.font + elide: buttonText.elide + elideWidth: buttonText.width + } + + Cura.ToolTip + { + id: tooltip + tooltipText: objectItemButton.text + visible: objectItemButton.hovered && buttonTextMetrics.elidedText != buttonText.text + } + onClicked: Cura.SceneController.changeSelection(index) } diff --git a/resources/qml/ObjectSelector.qml b/resources/qml/ObjectSelector.qml index f2e5b6e3a7..6757863e1c 100644 --- a/resources/qml/ObjectSelector.qml +++ b/resources/qml/ObjectSelector.qml @@ -78,7 +78,7 @@ Item id: contents width: parent.width visible: objectSelector.opened - height: visible ? scroll.height : 0 + height: visible ? listView.height : 0 color: UM.Theme.getColor("main_background") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") @@ -87,40 +87,39 @@ Item anchors.bottom: parent.bottom - ScrollView + ListView { - id: scroll - width: parent.width + id: listView clip: true - padding: UM.Theme.getSize("default_lining").width - - contentItem: ListView + anchors { - id: listView + left: parent.left + right: parent.right + margins: UM.Theme.getSize("default_lining").width + } - // 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 + ScrollBar.vertical: ScrollBar + { + hoverEnabled: true + } - // We use an extra property here, since we only want to to be informed about the content size changes. - onContentHeightChanged: + property real maximumHeight: UM.Theme.getSize("objects_menu_size").height + + height: Math.min(contentHeight, maximumHeight) + + model: Cura.ObjectsModel {} + + delegate: ObjectItemButton + { + id: modelButton + Binding { - 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 - { - text: model.name - width: listView.width - - checked: model.selected + target: modelButton + property: "checked" + value: model.selected } + text: model.name + width: listView.width } } } diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 47cc11632c..5ce309cf8b 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -94,6 +94,12 @@ UM.PreferencesPage zoomToMouseCheckbox.checked = boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) UM.Preferences.resetPreference("view/top_layer_count"); topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count")) + UM.Preferences.resetPreference("general/restore_window_geometry") + restoreWindowPositionCheckbox.checked = boolCheck(UM.Preferences.getValue("general/restore_window_geometry")) + + UM.Preferences.resetPreference("general/camera_perspective_mode") + var defaultCameraMode = UM.Preferences.getValue("general/camera_perspective_mode") + setDefaultCameraMode(defaultCameraMode) UM.Preferences.resetPreference("cura/choice_on_profile_override") setDefaultDiscardOrKeepProfile(UM.Preferences.getValue("cura/choice_on_profile_override")) @@ -330,7 +336,8 @@ UM.PreferencesPage } } - UM.TooltipArea { + UM.TooltipArea + { width: childrenRect.width; height: childrenRect.height; text: catalog.i18nc("@info:tooltip", "Moves the camera so the model is in the center of the view when a model is selected") @@ -344,7 +351,8 @@ UM.PreferencesPage } } - UM.TooltipArea { + UM.TooltipArea + { width: childrenRect.width; height: childrenRect.height; text: catalog.i18nc("@info:tooltip", "Should the default zoom behavior of cura be inverted?") @@ -354,7 +362,13 @@ UM.PreferencesPage id: invertZoomCheckbox text: catalog.i18nc("@action:button", "Invert the direction of camera zoom."); checked: boolCheck(UM.Preferences.getValue("view/invert_zoom")) - onClicked: UM.Preferences.setValue("view/invert_zoom", checked) + onClicked: { + if(!checked && zoomToMouseCheckbox.checked) //Fix for Github issue Ultimaker/Cura#6490: Make sure the camera origin is in front when unchecking. + { + UM.Controller.setCameraOrigin("home"); + } + UM.Preferences.setValue("view/invert_zoom", checked); + } } } @@ -362,14 +376,30 @@ UM.PreferencesPage { width: childrenRect.width; height: childrenRect.height; - text: catalog.i18nc("@info:tooltip", "Should zooming move in the direction of the mouse?") + text: zoomToMouseCheckbox.enabled ? catalog.i18nc("@info:tooltip", "Should zooming move in the direction of the mouse?") : catalog.i18nc("@info:tooltip", "Zooming towards the mouse is not supported in the orthographic perspective.") CheckBox { id: zoomToMouseCheckbox - text: catalog.i18nc("@action:button", "Zoom toward mouse direction"); - checked: boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) + text: catalog.i18nc("@action:button", "Zoom toward mouse direction") + checked: boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) && zoomToMouseCheckbox.enabled onClicked: UM.Preferences.setValue("view/zoom_to_mouse", checked) + enabled: UM.Preferences.getValue("general/camera_perspective_mode") !== "orthogonal" + } + + //Because there is no signal for individual preferences, we need to manually link to the onPreferenceChanged signal. + Connections + { + target: UM.Preferences + onPreferenceChanged: + { + if(preference != "general/camera_perspective_mode") + { + return; + } + zoomToMouseCheckbox.enabled = UM.Preferences.getValue("general/camera_perspective_mode") !== "orthographic"; + zoomToMouseCheckbox.checked = boolCheck(UM.Preferences.getValue("view/zoom_to_mouse")) && zoomToMouseCheckbox.enabled; + } } } @@ -436,6 +466,65 @@ UM.PreferencesPage } } + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "Should Cura open at the location it was closed?") + + CheckBox + { + id: restoreWindowPositionCheckbox + text: catalog.i18nc("@option:check", "Restore window position on start") + checked: boolCheck(UM.Preferences.getValue("general/restore_window_geometry")) + onCheckedChanged: UM.Preferences.setValue("general/restore_window_geometry", checked) + } + } + + UM.TooltipArea + { + width: childrenRect.width + height: childrenRect.height + text: catalog.i18nc("@info:tooltip", "What type of camera rendering should be used?") + Column + { + spacing: 4 * screenScaleFactor + + Label + { + text: catalog.i18nc("@window:text", "Camera rendering:") + } + ComboBox + { + id: cameraComboBox + + model: ListModel + { + id: comboBoxList + + Component.onCompleted: { + append({ text: catalog.i18n("Perspective"), code: "perspective" }) + append({ text: catalog.i18n("Orthographic"), code: "orthographic" }) + } + } + + currentIndex: + { + var code = UM.Preferences.getValue("general/camera_perspective_mode"); + for(var i = 0; i < comboBoxList.count; ++i) + { + if(model.get(i).code == code) + { + return i + } + } + return 0 + } + onActivated: UM.Preferences.setValue("general/camera_perspective_mode", model.get(index).code) + } + } + } + Item { //: Spacer @@ -695,6 +784,7 @@ UM.PreferencesPage } } + /* Multi-buildplate functionality is disabled because it's broken. See CURA-4975 for the ticket to remove it. Item { //: Spacer @@ -721,7 +811,7 @@ UM.PreferencesPage checked: boolCheck(UM.Preferences.getValue("cura/use_multi_build_plate")) onCheckedChanged: UM.Preferences.setValue("cura/use_multi_build_plate", checked) } - } + }*/ Connections { diff --git a/resources/qml/Preferences/MachinesPage.qml b/resources/qml/Preferences/MachinesPage.qml index 594cdbebf3..8adcb65fcf 100644 --- a/resources/qml/Preferences/MachinesPage.qml +++ b/resources/qml/Preferences/MachinesPage.qml @@ -84,7 +84,7 @@ UM.ManagementPage Flow { id: machineActions - visible: currentItem && currentItem.id == Cura.MachineManager.activeMachineId + visible: currentItem && currentItem.id == Cura.MachineManager.activeMachine.id anchors.left: parent.left anchors.right: parent.right anchors.top: machineName.bottom @@ -148,8 +148,6 @@ UM.ManagementPage UM.RenameDialog { id: renameDialog; - width: 300 * screenScaleFactor - height: 150 * screenScaleFactor object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; property var machine_name_validator: Cura.MachineNameValidator { } validName: renameDialog.newName.match(renameDialog.machine_name_validator.machineNameRegex) != null; diff --git a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml index 487c87f07c..5dd68c426f 100644 --- a/resources/qml/Preferences/Materials/MaterialsBrandSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsBrandSection.qml @@ -10,6 +10,8 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura +// An expandable list of materials. Includes both the header (this file) and the items (brandMaterialList) + Item { id: brand_section @@ -50,9 +52,8 @@ Item verticalAlignment: Text.AlignVCenter leftPadding: (UM.Theme.getSize("default_margin").width / 2) | 0 } - Button + Item { - text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height UM.RecolorImage @@ -67,10 +68,6 @@ Item color: "black" source: brand_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } - style: ButtonStyle - { - background: Item { } - } } } MouseArea @@ -99,7 +96,7 @@ Item id: brandMaterialList anchors.top: brand_header.bottom width: parent.width - anchors.left: parent.left + anchors.left: parent ? parent.left : undefined height: brand_section.expanded ? childrenRect.height : 0 visible: brand_section.expanded @@ -109,7 +106,7 @@ Item delegate: Loader { id: loader - width: parent.width + width: parent ? parent.width : 0 property var element: model sourceComponent: hasMaterialTypes ? materialsTypeSection : materialSlot } diff --git a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml index eb4a63250f..e821dfb955 100644 --- a/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml +++ b/resources/qml/Preferences/Materials/MaterialsDetailsPanel.qml @@ -64,8 +64,10 @@ Item height: childrenRect.height Label { + width: parent.width text: materialProperties.name font: UM.Theme.getFont("large_bold") + elide: Text.ElideRight } } @@ -82,6 +84,7 @@ Item } editingEnabled: currentItem != null && !currentItem.is_read_only + onResetSelectedMaterial: base.resetExpandedActiveMaterial() properties: materialProperties containerId: currentItem != null ? currentItem.id : "" diff --git a/resources/qml/Preferences/Materials/MaterialsList.qml b/resources/qml/Preferences/Materials/MaterialsList.qml index fa7c4b86cb..8b82a87820 100644 --- a/resources/qml/Preferences/Materials/MaterialsList.qml +++ b/resources/qml/Preferences/Materials/MaterialsList.qml @@ -102,6 +102,7 @@ Item } } } + base.currentItem = null return false } @@ -113,7 +114,7 @@ Item if (base.toActivateNewMaterial) { var position = Cura.ExtruderManager.activeExtruderIndex - Cura.MachineManager.setMaterial(position, base.currentItem.container_node) + Cura.MachineManager.setMaterialById(position, base.newRootMaterialIdToSwitchTo) } base.newRootMaterialIdToSwitchTo = "" base.toActivateNewMaterial = false diff --git a/resources/qml/Preferences/Materials/MaterialsPage.qml b/resources/qml/Preferences/Materials/MaterialsPage.qml index ea24051e40..d635b2b721 100644 --- a/resources/qml/Preferences/Materials/MaterialsPage.qml +++ b/resources/qml/Preferences/Materials/MaterialsPage.qml @@ -7,17 +7,18 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.5 as Cura Item { id: base - property QtObject materialManager: CuraApplication.getMaterialManager() // Keep PreferencesDialog happy property var resetEnabled: false property var currentItem: null + property var materialManagementModel: CuraApplication.getMaterialManagementModel() + property var hasCurrentItem: base.currentItem != null property var isCurrentItemActivated: { @@ -41,14 +42,36 @@ Item name: "cura" } + function resetExpandedActiveMaterial() + { + materialListView.expandActiveMaterial(active_root_material_id) + } + + function setExpandedActiveMaterial(root_material_id) + { + materialListView.expandActiveMaterial(root_material_id) + } + // When loaded, try to select the active material in the tree - Component.onCompleted: materialListView.expandActiveMaterial(active_root_material_id) + Component.onCompleted: + { + resetExpandedActiveMaterial() + base.newRootMaterialIdToSwitchTo = active_root_material_id + } // Every time the selected item has changed, notify to the details panel onCurrentItemChanged: { forceActiveFocus() - materialDetailsPanel.currentItem = currentItem + if(materialDetailsPanel.currentItem != currentItem) + { + materialDetailsPanel.currentItem = currentItem + // CURA-6679 If the current item is gone after the model update, reset the current item to the active material. + if (currentItem == null) + { + resetExpandedActiveMaterial() + } + } } // Main layout @@ -84,7 +107,7 @@ Item id: activateMenuButton text: catalog.i18nc("@action:button", "Activate") iconName: "list-activate" - enabled: !isCurrentItemActivated && Cura.MachineManager.hasMaterials + enabled: !isCurrentItemActivated && Cura.MachineManager.activeMachine.hasMaterials onClicked: { forceActiveFocus() @@ -105,7 +128,7 @@ Item onClicked: { forceActiveFocus(); - base.newRootMaterialIdToSwitchTo = base.materialManager.createMaterial(); + base.newRootMaterialIdToSwitchTo = base.materialManagementModel.createMaterial(); base.toActivateNewMaterial = true; } } @@ -120,7 +143,7 @@ Item onClicked: { forceActiveFocus(); - base.newRootMaterialIdToSwitchTo = base.materialManager.duplicateMaterial(base.currentItem.container_node); + base.newRootMaterialIdToSwitchTo = base.materialManagementModel.duplicateMaterial(base.currentItem.container_node); base.toActivateNewMaterial = true; } } @@ -131,7 +154,8 @@ Item 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 && base.materialManagementModel.canMaterialBeRemoved(base.currentItem.container_node) + onClicked: { forceActiveFocus(); @@ -207,7 +231,7 @@ Item text: { var caption = catalog.i18nc("@action:label", "Printer") + ": " + Cura.MachineManager.activeMachine.name; - if (Cura.MachineManager.hasVariants) + if (Cura.MachineManager.activeMachine.hasVariants) { var activeVariantName = "" if(Cura.MachineManager.activeStack != null) @@ -280,7 +304,7 @@ Item { // Set the active material as the fallback. It will be selected when the current material is deleted base.newRootMaterialIdToSwitchTo = base.active_root_material_id - base.materialManager.removeMaterial(base.currentItem.container_node); + base.materialManagementModel.removeMaterial(base.currentItem.container_node); } } diff --git a/resources/qml/Preferences/Materials/MaterialsSlot.qml b/resources/qml/Preferences/Materials/MaterialsSlot.qml index 5a44fb49cc..81bb8759ff 100644 --- a/resources/qml/Preferences/Materials/MaterialsSlot.qml +++ b/resources/qml/Preferences/Materials/MaterialsSlot.qml @@ -10,6 +10,8 @@ import QtQuick.Dialogs 1.2 import UM 1.2 as UM import Cura 1.0 as Cura +// A single material row, typically used in a MaterialsBrandSection + Rectangle { id: materialSlot @@ -51,7 +53,7 @@ Rectangle anchors.left: swatch.right anchors.verticalCenter: materialSlot.verticalCenter anchors.leftMargin: UM.Theme.getSize("narrow_margin").width - font.italic: Cura.MachineManager.currentRootMaterialId[Cura.ExtruderManager.activeExtruderIndex] == material.root_material_id + font.italic: material != null && Cura.MachineManager.currentRootMaterialId[Cura.ExtruderManager.activeExtruderIndex] == material.root_material_id } MouseArea { @@ -60,7 +62,7 @@ Rectangle { materialList.currentBrand = material.brand materialList.currentType = material.brand + "_" + material.material - base.currentItem = material + base.setExpandedActiveMaterial(material.root_material_id) } hoverEnabled: true onEntered: { materialSlot.hovered = true } @@ -82,11 +84,12 @@ Rectangle { if (materialSlot.is_favorite) { - base.materialManager.removeFavorite(material.root_material_id) - return + CuraApplication.getMaterialManagementModel().removeFavorite(material.root_material_id) + } + else + { + CuraApplication.getMaterialManagementModel().addFavorite(material.root_material_id) } - base.materialManager.addFavorite(material.root_material_id) - return } style: ButtonStyle { diff --git a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml index 2c1e2128e1..07630a83b4 100644 --- a/resources/qml/Preferences/Materials/MaterialsTypeSection.qml +++ b/resources/qml/Preferences/Materials/MaterialsTypeSection.qml @@ -20,7 +20,8 @@ Item property var expanded: materialList.expandedTypes.indexOf(materialBrand + "_" + materialName) > -1 property var colorsModel: materialType != null ? materialType.colors: null height: childrenRect.height - width: parent.width + width: parent ? parent.width :undefined + anchors.left: parent ? parent.left : undefined Rectangle { id: material_type_header_background @@ -54,7 +55,7 @@ Item leftPadding: UM.Theme.getSize("default_margin").width anchors { - left: parent.left + left: parent ? parent.left : undefined } Label { @@ -64,33 +65,25 @@ Item id: material_type_name verticalAlignment: Text.AlignVCenter } - Button + Item // this one causes lots of warnings { - text: "" implicitWidth: UM.Theme.getSize("favorites_button").width implicitHeight: UM.Theme.getSize("favorites_button").height UM.RecolorImage { anchors { - verticalCenter: parent.verticalCenter - horizontalCenter: parent.horizontalCenter + verticalCenter: parent ? parent.verticalCenter : undefined + horizontalCenter: parent ? parent.horizontalCenter : undefined } width: UM.Theme.getSize("standard_arrow").width height: UM.Theme.getSize("standard_arrow").height color: "black" source: material_type_section.expanded ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_left") } - style: ButtonStyle - { - background: Rectangle - { - anchors.fill: parent - color: "transparent" - } - } + } } - MouseArea + MouseArea // causes lots of warnings { anchors.fill: material_type_header onPressed: diff --git a/resources/qml/Preferences/Materials/MaterialsView.qml b/resources/qml/Preferences/Materials/MaterialsView.qml index ea0957fe3f..57253b9dff 100644 --- a/resources/qml/Preferences/Materials/MaterialsView.qml +++ b/resources/qml/Preferences/Materials/MaterialsView.qml @@ -14,21 +14,22 @@ TabView { id: base - property QtObject materialManager: CuraApplication.getMaterialManager() - property QtObject properties property var currentMaterialNode: null - property bool editingEnabled: false; + property bool editingEnabled: false property string currency: UM.Preferences.getValue("cura/currency") ? UM.Preferences.getValue("cura/currency") : "€" property real firstColumnWidth: (width * 0.50) | 0 property real secondColumnWidth: (width * 0.40) | 0 property string containerId: "" property var materialPreferenceValues: UM.Preferences.getValue("cura/material_settings") ? JSON.parse(UM.Preferences.getValue("cura/material_settings")) : {} + property var materialManagementModel: CuraApplication.getMaterialManagementModel() property double spoolLength: calculateSpoolLength() property real costPerMeter: calculateCostPerMeter() + signal resetSelectedMaterial() + property bool reevaluateLinkedMaterials: false property string linkedMaterialNames: { @@ -45,7 +46,7 @@ TabView { return "" } - return linkedMaterials.join(", "); + return linkedMaterials; } function getApproximateDiameter(diameter) @@ -105,29 +106,23 @@ TabView property var new_diameter_value: null; property var old_diameter_value: null; property var old_approximate_diameter_value: null; - property bool keyPressed: false onYes: { base.setMetaDataEntry("approximate_diameter", old_approximate_diameter_value, getApproximateDiameter(new_diameter_value).toString()); base.setMetaDataEntry("properties/diameter", properties.diameter, new_diameter_value); + // CURA-6868 Make sure to update the extruder to user a diameter-compatible material. + Cura.MachineManager.updateMaterialWithVariant() + base.resetSelectedMaterial() } onNo: { - properties.diameter = old_diameter_value; - diameterSpinBox.value = properties.diameter; + base.properties.diameter = old_diameter_value; + diameterSpinBox.value = Qt.binding(function() { return base.properties.diameter }) } - onVisibilityChanged: - { - if (!visible && !keyPressed) - { - // If the user closes this dialog without clicking on any button, it's the same as clicking "No". - no(); - } - keyPressed = false; - } + onRejected: no() } Label { width: scrollView.columnWidth; height: parent.rowHeight; verticalAlignment: Qt.AlignVCenter; text: catalog.i18nc("@label", "Display Name") } @@ -454,7 +449,7 @@ TabView UM.ContainerPropertyProvider { id: variantPropertyProvider - containerId: Cura.MachineManager.activeVariantId + containerId: Cura.MachineManager.activeStack.variant.id watchedProperties: [ "value" ] key: model.key } @@ -573,7 +568,7 @@ TabView } // update the values - base.materialManager.setMaterialName(base.currentMaterialNode, new_name) + base.materialManagementModel.setMaterialName(base.currentMaterialNode, new_name) properties.name = new_name } diff --git a/resources/qml/Preferences/ProfileTab.qml b/resources/qml/Preferences/ProfileTab.qml index 12846cf99b..3c0c46ed72 100644 --- a/resources/qml/Preferences/ProfileTab.qml +++ b/resources/qml/Preferences/ProfileTab.qml @@ -38,14 +38,28 @@ Tab property var setting: qualitySettings.getItem(styleData.row) height: childrenRect.height width: (parent != null) ? parent.width : 0 - text: (styleData.value.substr(0,1) == "=") ? styleData.value : "" + text: + { + if (styleData.value === undefined) + { + return "" + } + return (styleData.value.substr(0,1) == "=") ? styleData.value : "" + } Label { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.right: parent.right - text: (styleData.value.substr(0,1) == "=") ? catalog.i18nc("@info:status", "Calculated") : styleData.value + text: + { + if (styleData.value === undefined) + { + return "" + } + return (styleData.value.substr(0,1) == "=") ? catalog.i18nc("@info:status", "Calculated") : styleData.value + } font.strikeout: styleData.column == 1 && setting.user_value != "" && base.isQualityItemCurrentlyActivated font.italic: setting.profile_value_source == "quality_changes" || (setting.user_value != "" && base.isQualityItemCurrentlyActivated) opacity: font.strikeout ? 0.5 : 1 diff --git a/resources/qml/Preferences/ProfilesPage.qml b/resources/qml/Preferences/ProfilesPage.qml index 0bac5aefca..fdb961ad21 100644 --- a/resources/qml/Preferences/ProfilesPage.qml +++ b/resources/qml/Preferences/ProfilesPage.qml @@ -1,4 +1,4 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Uranium is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 @@ -7,26 +7,24 @@ import QtQuick.Layouts 1.3 import QtQuick.Dialogs 1.2 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.6 as Cura Item { id: base - property QtObject qualityManager: CuraApplication.getQualityManager() property var resetEnabled: false // Keep PreferencesDialog happy property var extrudersModel: CuraApplication.getExtrudersModel() + property var qualityManagementModel: CuraApplication.getQualityManagementModel() UM.I18nCatalog { id: catalog; name: "cura"; } - Cura.QualityManagementModel { - id: qualitiesModel - } - - Label { + Label + { id: titleLabel - anchors { + anchors + { top: parent.top left: parent.left right: parent.right @@ -38,28 +36,41 @@ Item property var hasCurrentItem: base.currentItem != null - property var currentItem: { + property var currentItem: + { var current_index = qualityListView.currentIndex; - return (current_index == -1) ? null : qualitiesModel.getItem(current_index); + return (current_index == -1) ? null : base.qualityManagementModel.getItem(current_index); } property var currentItemName: hasCurrentItem ? base.currentItem.name : "" + property var currentItemDisplayName: hasCurrentItem ? base.qualityManagementModel.getQualityItemDisplayName(base.currentItem) : "" - property var isCurrentItemActivated: { - if (!base.currentItem) { + property var isCurrentItemActivated: + { + if (!base.currentItem) + { return false; } - return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; + if (base.currentItem.is_read_only) + { + return (base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName) && (base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory); + } + else + { + return base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName; + } } - property var canCreateProfile: { + property var canCreateProfile: + { return isCurrentItemActivated && Cura.MachineManager.hasUserSettings; } Row // Button Row { id: buttonRow - anchors { + anchors + { left: parent.left right: parent.right top: titleLabel.bottom @@ -73,10 +84,14 @@ Item text: catalog.i18nc("@action:button", "Activate") iconName: "list-activate" enabled: !isCurrentItemActivated - onClicked: { - if (base.currentItem.is_read_only) { - Cura.MachineManager.setQualityGroup(base.currentItem.quality_group); - } else { + onClicked: + { + if (base.currentItem.is_read_only) + { + Cura.IntentManager.selectIntent(base.currentItem.intent_category, base.currentItem.quality_type); + } + else + { Cura.MachineManager.setQualityChangesGroup(base.currentItem.quality_changes_group); } } @@ -91,7 +106,8 @@ Item enabled: base.canCreateProfile && !Cura.MachineManager.stacksHaveErrors visible: base.canCreateProfile - onClicked: { + onClicked: + { createQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); createQualityDialog.open(); createQualityDialog.selectText(); @@ -107,7 +123,8 @@ Item enabled: !base.canCreateProfile visible: !base.canCreateProfile - onClicked: { + onClicked: + { duplicateQualityDialog.object = Cura.ContainerManager.makeUniqueName(base.currentItem.name); duplicateQualityDialog.open(); duplicateQualityDialog.selectText(); @@ -121,7 +138,8 @@ Item text: catalog.i18nc("@action:button", "Remove") iconName: "list-remove" enabled: base.hasCurrentItem && !base.currentItem.is_read_only && !base.isCurrentItemActivated - onClicked: { + onClicked: + { forceActiveFocus(); confirmRemoveQualityDialog.open(); } @@ -134,7 +152,8 @@ Item text: catalog.i18nc("@action:button", "Rename") iconName: "edit-rename" enabled: base.hasCurrentItem && !base.currentItem.is_read_only - onClicked: { + onClicked: + { renameQualityDialog.object = base.currentItem.name; renameQualityDialog.open(); renameQualityDialog.selectText(); @@ -147,7 +166,8 @@ Item id: importMenuButton text: catalog.i18nc("@action:button", "Import") iconName: "document-import" - onClicked: { + onClicked: + { importDialog.open(); } } @@ -159,7 +179,8 @@ Item text: catalog.i18nc("@action:button", "Export") iconName: "document-export" enabled: base.hasCurrentItem && !base.currentItem.is_read_only - onClicked: { + onClicked: + { exportDialog.open(); } } @@ -185,7 +206,7 @@ Item { base.newQualityNameToSelect = newName; // We want to switch to the new profile once it's created base.toActivateNewQuality = true; - base.qualityManager.createQualityChanges(newName); + base.qualityManagementModel.createQualityChanges(newName); } } @@ -195,7 +216,7 @@ Item // This connection makes sure that we will switch to the correct quality after the model gets updated Connections { - target: qualitiesModel + target: base.qualityManagementModel onItemsChanged: { var toSelectItemName = base.currentItem == null ? "" : base.currentItem.name; @@ -208,9 +229,9 @@ Item if (toSelectItemName != "") { // Select the required quality name if given - for (var idx = 0; idx < qualitiesModel.count; ++idx) + for (var idx = 0; idx < base.qualityManagementModel.count; ++idx) { - var item = qualitiesModel.getItem(idx); + var item = base.qualityManagementModel.getItem(idx); if (item.name == toSelectItemName) { // Switch to the newly created profile if needed @@ -240,7 +261,7 @@ Item object: "" onAccepted: { - base.qualityManager.duplicateQualityChanges(newName, base.currentItem); + base.qualityManagementModel.duplicateQualityChanges(newName, base.currentItem); } } @@ -257,7 +278,7 @@ Item onYes: { - base.qualityManager.removeQualityChangesGroup(base.currentItem.quality_changes_group); + base.qualityManagementModel.removeQualityChangesGroup(base.currentItem.quality_changes_group); // reset current item to the first if available qualityListView.currentIndex = -1; // Reset selection. } @@ -271,7 +292,7 @@ Item object: "" onAccepted: { - var actualNewName = base.qualityManager.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName); + var actualNewName = base.qualityManagementModel.renameQualityChangesGroup(base.currentItem.quality_changes_group, newName); base.newQualityNameToSelect = actualNewName; // Select the new name after the model gets updated } } @@ -282,19 +303,22 @@ Item id: importDialog title: catalog.i18nc("@title:window", "Import Profile") selectExisting: true - nameFilters: qualitiesModel.getFileNameFilters("profile_reader") + nameFilters: base.qualityManagementModel.getFileNameFilters("profile_reader") folder: CuraApplication.getDefaultPath("dialog_profile_path") onAccepted: { var result = Cura.ContainerManager.importProfile(fileUrl); messageDialog.text = result.message; - if (result.status == "ok") { + if (result.status == "ok") + { messageDialog.icon = StandardIcon.Information; } - else if (result.status == "duplicate") { + else if (result.status == "duplicate") + { messageDialog.icon = StandardIcon.Warning; } - else { + else + { messageDialog.icon = StandardIcon.Critical; } messageDialog.open(); @@ -308,14 +332,15 @@ Item id: exportDialog title: catalog.i18nc("@title:window", "Export Profile") selectExisting: false - nameFilters: qualitiesModel.getFileNameFilters("profile_writer") + nameFilters: base.qualityManagementModel.getFileNameFilters("profile_writer") folder: CuraApplication.getDefaultPath("dialog_profile_path") onAccepted: { var result = Cura.ContainerManager.exportQualityChangesGroup(base.currentItem.quality_changes_group, fileUrl, selectedNameFilter); - if (result && result.status == "error") { + if (result && result.status == "error") + { messageDialog.icon = StandardIcon.Critical; messageDialog.text = result.message; messageDialog.open(); @@ -326,10 +351,12 @@ Item } } - Item { + Item + { id: contentsItem - anchors { + anchors + { top: titleLabel.bottom left: parent.left right: parent.right @@ -343,7 +370,8 @@ Item Item { - anchors { + anchors + { top: buttonRow.bottom topMargin: UM.Theme.getSize("default_margin").height left: parent.left @@ -351,17 +379,21 @@ Item bottom: parent.bottom } - SystemPalette { id: palette } + SystemPalette + { + id: palette + } Label { id: captionLabel - anchors { + anchors + { top: parent.top left: parent.left } visible: text != "" - text: catalog.i18nc("@label %1 is printer name", "Printer: %1").arg(Cura.MachineManager.activeMachineName) + text: catalog.i18nc("@label %1 is printer name", "Printer: %1").arg(Cura.MachineManager.activeMachine.name) width: profileScrollView.width elide: Text.ElideRight } @@ -369,14 +401,16 @@ Item ScrollView { id: profileScrollView - anchors { + anchors + { top: captionLabel.visible ? captionLabel.bottom : parent.top topMargin: captionLabel.visible ? UM.Theme.getSize("default_margin").height : 0 bottom: parent.bottom left: parent.left } - Rectangle { + Rectangle + { parent: viewport anchors.fill: parent color: palette.light @@ -390,16 +424,16 @@ Item { id: qualityListView - model: qualitiesModel + model: base.qualityManagementModel Component.onCompleted: { var selectedItemName = Cura.MachineManager.activeQualityOrQualityChangesName; // Select the required quality name if given - for (var idx = 0; idx < qualitiesModel.count; idx++) + for (var idx = 0; idx < base.qualityManagementModel.count; idx++) { - var item = qualitiesModel.getItem(idx); + var item = base.qualityManagementModel.getItem(idx); if (item.name == selectedItemName) { currentIndex = idx; @@ -408,7 +442,7 @@ Item } } - section.property: "is_read_only" + section.property: "section_name" section.delegate: Rectangle { height: childrenRect.height @@ -417,7 +451,7 @@ Item { anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_lining").width - text: section == "true" ? catalog.i18nc("@label", "Default profiles") : catalog.i18nc("@label", "Custom profiles") + text: section font.bold: true } } @@ -441,14 +475,27 @@ Item width: Math.floor((parent.width * 0.8)) text: model.name elide: Text.ElideRight - font.italic: model.name == Cura.MachineManager.activeQualityOrQualityChangesName + font.italic: + { + if (model.is_read_only) + { + // For built-in qualities, it needs to match both the intent category and the quality name + return model.name == Cura.MachineManager.activeQualityOrQualityChangesName && model.intent_category == Cura.MachineManager.activeIntentCategory + } + else + { + // For custom qualities, it only needs to match the name + return model.name == Cura.MachineManager.activeQualityOrQualityChangesName + } + } color: parent.isCurrentItem ? palette.highlightedText : palette.text } MouseArea { anchors.fill: parent - onClicked: { + onClicked: + { parent.ListView.view.currentIndex = model.index; } } @@ -461,7 +508,8 @@ Item { id: detailsPanel - anchors { + anchors + { left: profileScrollView.right leftMargin: UM.Theme.getSize("default_margin").width top: parent.top @@ -481,15 +529,21 @@ Item width: parent.width height: childrenRect.height - Label { - text: base.currentItemName + Label + { + anchors.left: parent.left + anchors.right: parent.right + text: base.currentItemDisplayName font: UM.Theme.getFont("large_bold") + elide: Text.ElideRight + renderType: Text.NativeRendering } } - Flow { + Flow + { id: currentSettingsActions - visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName + visible: base.hasCurrentItem && base.currentItem.name == Cura.MachineManager.activeQualityOrQualityChangesName && base.currentItem.intent_category == Cura.MachineManager.activeIntentCategory anchors.left: parent.left anchors.right: parent.right anchors.top: profileName.bottom @@ -510,7 +564,8 @@ Item } } - Column { + Column + { id: profileNotices anchors.top: currentSettingsActions.visible ? currentSettingsActions.bottom : currentSettingsActions.anchors.top anchors.topMargin: UM.Theme.getSize("default_margin").height @@ -518,14 +573,16 @@ Item anchors.right: parent.right spacing: UM.Theme.getSize("default_margin").height - Label { + Label + { id: defaultsMessage visible: false text: catalog.i18nc("@action:label", "This profile uses the defaults specified by the printer, so it has no settings/overrides in the list below.") wrapMode: Text.WordWrap width: parent.width } - Label { + Label + { id: noCurrentSettingsMessage visible: base.isCurrentItemActivated && !Cura.MachineManager.hasUserSettings text: catalog.i18nc("@action:label", "Your current settings match the selected profile.") @@ -534,7 +591,6 @@ Item } } - TabView { anchors.left: parent.left diff --git a/resources/qml/Preferences/ReadOnlySpinBox.qml b/resources/qml/Preferences/ReadOnlySpinBox.qml index 1bbef82b1e..11e47b38b2 100644 --- a/resources/qml/Preferences/ReadOnlySpinBox.qml +++ b/resources/qml/Preferences/ReadOnlySpinBox.qml @@ -34,8 +34,8 @@ Item anchors.fill: parent onEditingFinished: base.editingFinished() - Keys.onEnterPressed: base.editingFinished() - Keys.onReturnPressed: base.editingFinished() + Keys.onEnterPressed: spinBox.focus = false + Keys.onReturnPressed: spinBox.focus = false } Label diff --git a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml index 98bb5c0405..46297659ff 100644 --- a/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Custom/CustomPrintSetup.qml @@ -1,12 +1,14 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 -import QtQuick.Controls 2.0 +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Controls 1.4 as OldControls +import QtQuick.Layouts 1.3 import UM 1.3 as UM -import Cura 1.0 as Cura - +import Cura 1.6 as Cura +import ".." Item { @@ -17,19 +19,187 @@ Item property var extrudersModel: CuraApplication.getExtrudersModel() - // Profile selector row - GlobalProfileSelector + Item { - id: globalProfileRow + id: intent + height: childrenRect.height + anchors { top: parent.top - topMargin: parent.padding + topMargin: UM.Theme.getSize("default_margin").height left: parent.left leftMargin: parent.padding right: parent.right rightMargin: parent.padding } + + Label + { + id: profileLabel + anchors + { + top: parent.top + bottom: parent.bottom + left: parent.left + right: intentSelection.left + } + text: catalog.i18nc("@label", "Profile") + font: UM.Theme.getFont("medium") + renderType: Text.NativeRendering + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + } + + NoIntentIcon + { + affected_extruders: Cura.MachineManager.extruderPositionsWithNonActiveIntent + intent_type: Cura.MachineManager.activeIntentCategory + anchors.right: intentSelection.left + anchors.rightMargin: UM.Theme.getSize("narrow_margin").width + width: Math.round(profileLabel.height * 0.5) + anchors.verticalCenter: parent.verticalCenter + height: width + visible: affected_extruders.length + } + + Button + { + id: intentSelection + onClicked: menu.opened ? menu.close() : menu.open() + + anchors.right: parent.right + width: UM.Theme.getSize("print_setup_big_item").width + height: textLabel.contentHeight + 2 * UM.Theme.getSize("narrow_margin").height + hoverEnabled: true + + baselineOffset: null // If we don't do this, there is a binding loop. WHich is a bit weird, since we override the contentItem anyway... + + contentItem: RowLayout + { + spacing: 0 + anchors.left: parent.left + anchors.right: customisedSettings.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + Label + { + id: textLabel + text: Cura.MachineManager.activeQualityDisplayNameMap["main"] + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + Layout.margins: 0 + Layout.maximumWidth: Math.floor(parent.width * 0.7) // Always leave >= 30% for the rest of the row. + height: contentHeight + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + elide: Text.ElideRight + } + + Label + { + text: activeQualityDetailText() + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text_detail") + Layout.margins: 0 + Layout.fillWidth: true + + height: contentHeight + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + elide: Text.ElideRight + + function activeQualityDetailText() + { + var resultMap = Cura.MachineManager.activeQualityDisplayNameMap + var resultSuffix = resultMap["suffix"] + var result = "" + + if (Cura.MachineManager.isActiveQualityExperimental) + { + resultSuffix += " (Experimental)" + } + + if (Cura.MachineManager.isActiveQualitySupported) + { + if (Cura.MachineManager.activeQualityLayerHeight > 0) + { + if (resultSuffix) + { + result += " - " + resultSuffix + } + result += " - " + result += Cura.MachineManager.activeQualityLayerHeight + "mm" + } + } + + return result + } + } + } + + background: Rectangle + { + id: backgroundItem + border.color: intentSelection.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border") + border.width: UM.Theme.getSize("default_lining").width + radius: UM.Theme.getSize("default_radius").width + color: UM.Theme.getColor("main_background") + } + + UM.SimpleButton + { + id: customisedSettings + + visible: Cura.MachineManager.hasUserSettings + width: UM.Theme.getSize("print_setup_icon").width + height: UM.Theme.getSize("print_setup_icon").height + + anchors.verticalCenter: parent.verticalCenter + anchors.right: downArrow.left + anchors.rightMargin: UM.Theme.getSize("default_margin").width + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); + iconSource: UM.Theme.getIcon("star") + + onClicked: + { + forceActiveFocus(); + Cura.Actions.manageProfiles.trigger() + } + onEntered: + { + var content = catalog.i18nc("@tooltip", "Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") + base.showTooltip(intent, Qt.point(-UM.Theme.getSize("default_margin").width, 0), content) + } + onExited: base.hideTooltip() + } + UM.RecolorImage + { + id: downArrow + + source: UM.Theme.getIcon("arrow_bottom") + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + + anchors + { + right: parent.right + verticalCenter: parent.verticalCenter + rightMargin: UM.Theme.getSize("default_margin").width + } + + color: UM.Theme.getColor("setting_control_button") + } + } + + QualitiesWithIntentMenu + { + id: menu + y: intentSelection.y + intentSelection.height + x: intentSelection.x + width: intentSelection.width + } } UM.TabRow @@ -40,7 +210,7 @@ Item anchors { - top: globalProfileRow.bottom + top: intent.bottom topMargin: UM.Theme.getSize("default_margin").height left: parent.left leftMargin: parent.padding @@ -99,7 +269,7 @@ Item { anchors { - top: tabBar.visible ? tabBar.bottom : globalProfileRow.bottom + top: tabBar.visible ? tabBar.bottom : intent.bottom topMargin: -UM.Theme.getSize("default_lining").width left: parent.left leftMargin: parent.padding diff --git a/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml b/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml deleted file mode 100644 index 32c07a52a6..0000000000 --- a/resources/qml/PrintSetupSelector/Custom/GlobalProfileSelector.qml +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.7 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.2 - -import UM 1.2 as UM -import Cura 1.0 as Cura - -Item -{ - id: globalProfileRow - height: childrenRect.height - - Label - { - id: globalProfileLabel - anchors - { - top: parent.top - bottom: parent.bottom - left: parent.left - right: globalProfileSelection.left - } - text: catalog.i18nc("@label", "Profile") - font: UM.Theme.getFont("medium") - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - } - - ToolButton - { - id: globalProfileSelection - - text: generateActiveQualityText() - width: UM.Theme.getSize("print_setup_big_item").width - height: UM.Theme.getSize("print_setup_big_item").height - anchors - { - top: parent.top - right: parent.right - } - tooltip: Cura.MachineManager.activeQualityOrQualityChangesName - style: UM.Theme.styles.print_setup_header_button - activeFocusOnPress: true - menu: Cura.ProfileMenu { } - - function generateActiveQualityText() - { - var result = Cura.MachineManager.activeQualityOrQualityChangesName - if (Cura.MachineManager.isActiveQualityExperimental) - { - result += " (Experimental)" - } - - if (Cura.MachineManager.isActiveQualitySupported) - { - if (Cura.MachineManager.activeQualityLayerHeight > 0) - { - result += " " - result += " - " - result += Cura.MachineManager.activeQualityLayerHeight + "mm" - result += "" - } - } - - return result - } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.MachineManager.hasUserSettings - width: UM.Theme.getSize("print_setup_icon").width - height: UM.Theme.getSize("print_setup_icon").height - - anchors.verticalCenter: parent.verticalCenter - anchors.right: parent.right - anchors.rightMargin: Math.round(UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("thick_margin").width) - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button"); - iconSource: UM.Theme.getIcon("star") - - onClicked: - { - forceActiveFocus(); - Cura.Actions.manageProfiles.trigger() - } - onEntered: - { - var content = catalog.i18nc("@tooltip","Some setting/override values are different from the values stored in the profile.\n\nClick to open the profile manager.") - base.showTooltip(globalProfileRow, Qt.point(-UM.Theme.getSize("default_margin").width, 0), content) - } - onExited: base.hideTooltip() - } - } -} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Custom/MenuButton.qml b/resources/qml/PrintSetupSelector/Custom/MenuButton.qml new file mode 100644 index 0000000000..ffa6a68c9d --- /dev/null +++ b/resources/qml/PrintSetupSelector/Custom/MenuButton.qml @@ -0,0 +1,54 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.6 as Cura + +Button +{ + // This is a work around for a qml issue. Since the default button uses a private implementation for contentItem + // (the so called IconText), which handles the mnemonic conversion (aka; ensuring that &Button) text property + // is rendered with the B underlined. Since we're also forced to mix controls 1.0 and 2.0 actions together, + // we need a special property for the text of the label if we do want it to be rendered correclty, but don't want + // another shortcut to be added (which will cause for "QQuickAction::event: Ambiguous shortcut overload: " to + // happen. + property string labelText: "" + id: button + hoverEnabled: true + + background: Rectangle + { + id: backgroundRectangle + border.width: UM.Theme.getSize("default_lining").width + border.color: button.checked ? UM.Theme.getColor("setting_control_border_highlight") : "transparent" + color: button.hovered ? UM.Theme.getColor("action_button_hovered") : "transparent" + radius: UM.Theme.getSize("action_button_radius").width + } + + // Workarround to ensure that the mnemonic highlighting happens correctly + function replaceText(txt) + { + var index = txt.indexOf("&") + if(index >= 0) + { + txt = txt.replace(txt.substr(index, 2), ("" + txt.substr(index + 1, 1) + "")) + } + return txt + } + + contentItem: Label + { + id: textLabel + text: button.text != "" ? replaceText(button.text) : replaceText(button.labelText) + height: contentHeight + verticalAlignment: Text.AlignVCenter + anchors.left: button.left + anchors.leftMargin: UM.Theme.getSize("wide_margin").width + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: button.enabled ? UM.Theme.getColor("text") :UM.Theme.getColor("text_inactive") + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml b/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml new file mode 100644 index 0000000000..ff235a8a67 --- /dev/null +++ b/resources/qml/PrintSetupSelector/Custom/QualitiesWithIntentMenu.qml @@ -0,0 +1,335 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.6 as Cura + +Popup +{ + id: popup + implicitWidth: 400 + property var dataModel: Cura.IntentCategoryModel {} + + property int defaultMargin: UM.Theme.getSize("default_margin").width + property color backgroundColor: UM.Theme.getColor("main_background") + property color borderColor: UM.Theme.getColor("lining") + + topPadding: UM.Theme.getSize("narrow_margin").height + rightPadding: UM.Theme.getSize("default_lining").width + leftPadding: UM.Theme.getSize("default_lining").width + + padding: 0 + closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent + background: Cura.RoundedRectangle + { + color: backgroundColor + border.width: UM.Theme.getSize("default_lining").width + border.color: borderColor + cornerSide: Cura.RoundedRectangle.Direction.Down + } + + ButtonGroup + { + id: buttonGroup + exclusive: true + onClicked: popup.visible = false + } + + contentItem: Column + { + // This repeater adds the intent labels + ScrollView + { + property real maximumHeight: screenScaleFactor * 400 + contentHeight: dataColumn.height + height: Math.min(contentHeight, maximumHeight) + clip: true + + ScrollBar.vertical.policy: height == maximumHeight ? ScrollBar.AlwaysOn: ScrollBar.AlwaysOff + + Column + { + id: dataColumn + width: parent.width + Repeater + { + model: dataModel + delegate: Item + { + // We need to set it like that, otherwise we'd have to set the sub model with model: model.qualities + // Which obviously won't work due to naming conflicts. + property variant subItemModel: model.qualities + + height: childrenRect.height + width: popup.contentWidth + + Label + { + id: headerLabel + text: model.name + color: UM.Theme.getColor("text_inactive") + renderType: Text.NativeRendering + width: parent.width + height: visible ? contentHeight: 0 + visible: qualitiesList.visibleChildren.length > 0 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + MouseArea // tooltip hover area + { + anchors.fill: parent + hoverEnabled: true + enabled: model.description !== undefined + acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks + + onEntered: + { + base.showTooltip( + headerLabel, + Qt.point(- UM.Theme.getSize("default_margin").width, 0), + model.description + ) + } + onExited: base.hideTooltip() + } + } + + Column + { + id: qualitiesList + anchors.top: headerLabel.bottom + anchors.left: parent.left + anchors.right: parent.right + + // We set it by means of a binding, since then we can use the when condition, which we need to + // prevent a binding loop. + Binding + { + target: parent + property: "height" + value: parent.childrenRect.height + when: parent.visibleChildren.length > 0 + } + + // Add the qualities that belong to the intent + Repeater + { + visible: false + model: subItemModel + MenuButton + { + id: button + + onClicked: Cura.IntentManager.selectIntent(model.intent_category, model.quality_type) + + width: parent.width + checkable: true + visible: model.available + text: model.name + " - " + model.layer_height + " mm" + checked: + { + if (Cura.MachineManager.hasCustomQuality) + { + // When user created profile is active, no quality tickbox should be active. + return false; + } + return Cura.MachineManager.activeQualityType == model.quality_type && Cura.MachineManager.activeIntentCategory == model.intent_category; + } + ButtonGroup.group: buttonGroup + } + } + } + } + } + //Another "intent category" for custom profiles. + Item + { + height: childrenRect.height + anchors + { + left: parent.left + right: parent.right + } + + Label + { + id: customProfileHeader + text: catalog.i18nc("@label:header", "Custom profiles") + renderType: Text.NativeRendering + height: visible ? contentHeight: 0 + enabled: false + visible: profilesList.visibleChildren.length > 1 + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + color: UM.Theme.getColor("text_inactive") + } + + Column + { + id: profilesList + anchors + { + top: customProfileHeader.bottom + left: parent.left + right: parent.right + } + + //We set it by means of a binding, since then we can use the + //"when" condition, which we need to prevent a binding loop. + Binding + { + target: parent + property: "height" + value: parent.childrenRect.height + when: parent.visibleChildren.length > 1 + } + + //Add all the custom profiles. + Repeater + { + model: Cura.CustomQualityProfilesDropDownMenuModel + MenuButton + { + onClicked: Cura.MachineManager.setQualityChangesGroup(model.quality_changes_group) + + width: parent.width + checkable: true + visible: model.available + text: model.name + checked: + { + var active_quality_group = Cura.MachineManager.activeQualityChangesGroup + + if (active_quality_group != null) + { + return active_quality_group.name == model.quality_changes_group.name + } + return false + } + ButtonGroup.group: buttonGroup + } + } + } + } + } + } + + Rectangle + { + height: UM.Theme.getSize("default_lining").height + anchors.left: parent.left + anchors.right: parent.right + color: borderColor + } + + MenuButton + { + labelText: Cura.Actions.addProfile.text + + anchors.left: parent.left + anchors.right: parent.right + + enabled: Cura.Actions.addProfile.enabled + onClicked: + { + Cura.Actions.addProfile.trigger() + popup.visible = false + } + } + MenuButton + { + labelText: Cura.Actions.updateProfile.text + anchors.left: parent.left + anchors.right: parent.right + + enabled: Cura.Actions.updateProfile.enabled + + onClicked: + { + popup.visible = false + Cura.Actions.updateProfile.trigger() + } + } + MenuButton + { + text: catalog.i18nc("@action:button", "Discard current changes") + + anchors.left: parent.left + anchors.right: parent.right + + enabled: Cura.MachineManager.hasUserSettings + + onClicked: + { + popup.visible = false + Cura.ContainerManager.clearUserContainers() + } + } + + Rectangle + { + height: UM.Theme.getSize("default_lining").width + anchors.left: parent.left + anchors.right: parent.right + color: borderColor + } + + MenuButton + { + id: manageProfilesButton + text: Cura.Actions.manageProfiles.text + anchors + { + left: parent.left + right: parent.right + } + + height: textLabel.contentHeight + 2 * UM.Theme.getSize("narrow_margin").height + + contentItem: Item + { + width: parent.width + height: childrenRect.height + + Label + { + id: textLabel + text: manageProfilesButton.text + height: contentHeight + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + UM.Theme.getSize("narrow_margin").width + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + Label + { + id: shortcutLabel + text: Cura.Actions.manageProfiles.shortcut + height: contentHeight + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + font: UM.Theme.getFont("default") + color: UM.Theme.getColor("text") + } + } + onClicked: + { + popup.visible = false + Cura.Actions.manageProfiles.trigger() + } + } + // spacer + Item + { + width: 2 + height: UM.Theme.getSize("default_radius").width + } + } +} diff --git a/resources/qml/PrintSetupSelector/NoIntentIcon.qml b/resources/qml/PrintSetupSelector/NoIntentIcon.qml new file mode 100644 index 0000000000..7943a05ab4 --- /dev/null +++ b/resources/qml/PrintSetupSelector/NoIntentIcon.qml @@ -0,0 +1,36 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 + +import UM 1.2 as UM +import Cura 1.6 as Cura + +Item +{ + id: icon + property var affected_extruders + property var intent_type: "" + + implicitWidth: UM.Theme.getSize("section_icon").width + implicitHeight: UM.Theme.getSize("section_icon").height + + UM.RecolorImage + { + source: UM.Theme.getIcon("info") + color: UM.Theme.getColor("icon") + anchors.fill: parent + } + MouseArea + { + anchors.fill: parent + hoverEnabled: parent.visible + onEntered: + { + var tooltipContent = catalog.i18ncp("@label %1 is filled in with the type of a profile. %2 is filled with a list of numbers (eg '1' or '1, 2')", "There is no %1 profile for the configuration in extruder %2. The default intent will be used instead", "There is no %1 profile for the configurations in extruders %2. The default intent will be used instead", affected_extruders.length).arg(intent_type).arg(affected_extruders) + base.showTooltip(icon.parent, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) + } + onExited: base.hideTooltip() + } +} \ No newline at end of file diff --git a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml index 96b244d803..1a15980693 100644 --- a/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml +++ b/resources/qml/PrintSetupSelector/PrintSetupSelectorHeader.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 2.3 import QtQuick.Layouts 1.3 @@ -20,10 +20,16 @@ RowLayout { if (Cura.MachineManager.activeStack) { - var text = Cura.MachineManager.activeQualityOrQualityChangesName + var resultMap = Cura.MachineManager.activeQualityDisplayNameMap + var text = resultMap["main"] + if (resultMap["suffix"]) + { + text += " - " + resultMap["suffix"] + } + if (!Cura.MachineManager.hasNotSupportedQuality) { - text += " " + layerHeight.properties.value + "mm" + text += " - " + layerHeight.properties.value + "mm" text += Cura.MachineManager.isActiveQualityExperimental ? " - " + catalog.i18nc("@label", "Experimental") : "" } return text @@ -31,6 +37,7 @@ RowLayout return "" } font: UM.Theme.getFont("medium") + elide: Text.ElideMiddle UM.SettingPropertyProvider { diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml index 6885f8c041..22c4039063 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedPrintSetup.qml @@ -1,7 +1,7 @@ // Copyright (c) 2018 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 @@ -19,15 +19,8 @@ Item property bool settingsEnabled: Cura.ExtruderManager.activeExtruderStackId || extrudersEnabledCount.properties.value == 1 property real padding: UM.Theme.getSize("thick_margin").width - UM.I18nCatalog - { - id: catalog - name: "cura" - } - Column { - width: parent.width - 2 * parent.padding spacing: UM.Theme.getSize("wide_margin").height anchors diff --git a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml index 0486f5d2d7..337aff573f 100644 --- a/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml +++ b/resources/qml/PrintSetupSelector/Recommended/RecommendedQualityProfileSelector.qml @@ -1,17 +1,15 @@ -// Copyright (c) 2018 Ultimaker B.V. +// Copyright (c) 2019 Ultimaker B.V. // Cura is released under the terms of the LGPLv3 or higher. -import QtQuick 2.7 +import QtQuick 2.10 import QtQuick.Controls 1.4 +import QtQuick.Controls 2.3 as Controls2 import QtQuick.Controls.Styles 1.4 import UM 1.2 as UM -import Cura 1.0 as Cura +import Cura 1.6 as Cura +import ".." - -// -// Quality profile -// Item { id: qualityRow @@ -20,436 +18,184 @@ Item property real labelColumnWidth: Math.round(width / 3) property real settingsColumnWidth: width - labelColumnWidth - Timer - { - id: qualitySliderChangeTimer - interval: 50 - running: false - repeat: false - onTriggered: - { - var item = Cura.QualityProfilesDropDownMenuModel.getItem(qualitySlider.value); - Cura.MachineManager.activeQualityGroup = item.quality_group; - } - } - - Component.onCompleted: qualityModel.update() - - Connections - { - target: Cura.QualityProfilesDropDownMenuModel - onItemsChanged: qualityModel.update() - } - - Connections { - target: base - onVisibleChanged: - { - // update needs to be called when the widgets are visible, otherwise the step width calculation - // will fail because the width of an invisible item is 0. - if (visible) - { - qualityModel.update(); - } - } - } - - ListModel - { - id: qualityModel - - property var totalTicks: 0 - property var availableTotalTicks: 0 - property var existingQualityProfile: 0 - - property var qualitySliderActiveIndex: 0 - property var qualitySliderStepWidth: 0 - property var qualitySliderAvailableMin: 0 - property var qualitySliderAvailableMax: 0 - property var qualitySliderMarginRight: 0 - - function update () - { - reset() - - var availableMin = -1 - var availableMax = -1 - - for (var i = 0; i < Cura.QualityProfilesDropDownMenuModel.rowCount(); i++) - { - var qualityItem = Cura.QualityProfilesDropDownMenuModel.getItem(i) - - // Add each quality item to the UI quality model - qualityModel.append(qualityItem) - - // Set selected value - if (Cura.MachineManager.activeQualityType == qualityItem.quality_type) - { - // set to -1 when switching to user created profile so all ticks are clickable - if (Cura.MachineManager.hasCustomQuality) - { - qualityModel.qualitySliderActiveIndex = -1 - } - else - { - qualityModel.qualitySliderActiveIndex = i - } - - qualityModel.existingQualityProfile = 1 - } - - // Set min available - if (qualityItem.available && availableMin == -1) - { - availableMin = i - } - - // Set max available - if (qualityItem.available) - { - availableMax = i - } - } - - // Set total available ticks for active slider part - if (availableMin != -1) - { - qualityModel.availableTotalTicks = availableMax - availableMin + 1 - } - - // Calculate slider values - calculateSliderStepWidth(qualityModel.totalTicks) - calculateSliderMargins(availableMin, availableMax, qualityModel.totalTicks) - - qualityModel.qualitySliderAvailableMin = availableMin - qualityModel.qualitySliderAvailableMax = availableMax - } - - function calculateSliderStepWidth (totalTicks) - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderStepWidth = totalTicks != 0 ? - ((settingsColumnWidth - UM.Theme.getSize("print_setup_slider_handle").width) / (totalTicks)) : 0 - } - - function calculateSliderMargins (availableMin, availableMax, totalTicks) - { - if (availableMin == -1 || (availableMin == 0 && availableMax == 0)) - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderMarginRight = settingsColumnWidth / 2 - } - else if (availableMin == availableMax) - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderMarginRight = (totalTicks - availableMin) * qualitySliderStepWidth - } - else - { - // Do not use Math.round otherwise the tickmarks won't be aligned - qualityModel.qualitySliderMarginRight = (totalTicks - availableMax) * qualitySliderStepWidth - } - } - - function reset () { - qualityModel.clear() - qualityModel.availableTotalTicks = 0 - qualityModel.existingQualityProfile = 0 - - // check, the ticks count cannot be less than zero - qualityModel.totalTicks = Math.max(0, Cura.QualityProfilesDropDownMenuModel.rowCount() - 1) - } - } - // Here are the elements that are shown in the left column - Item + + Column { - id: titleRow - width: labelColumnWidth - height: childrenRect.height - - Cura.IconWithText - { - id: qualityRowTitle - source: UM.Theme.getIcon("category_layer_height") - text: catalog.i18nc("@label", "Layer Height") - font: UM.Theme.getFont("medium") - anchors.left: parent.left - anchors.right: customisedSettings.left - } - - UM.SimpleButton - { - id: customisedSettings - - visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality - height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 - width: height - anchors - { - right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width - leftMargin: UM.Theme.getSize("default_margin").width - verticalCenter: parent.verticalCenter - } - - color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") - iconSource: UM.Theme.getIcon("reset") - - onClicked: - { - // if the current profile is user-created, switch to a built-in quality - Cura.MachineManager.resetToUseDefaultQuality() - } - onEntered: - { - var tooltipContent = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) - } - onExited: base.hideTooltip() - } - } - - // Show titles for the each quality slider ticks - Item - { - anchors.left: speedSlider.left - anchors.top: speedSlider.bottom - height: childrenRect.height - - Repeater - { - model: qualityModel - - Label - { - anchors.verticalCenter: parent.verticalCenter - anchors.top: parent.top - // The height has to be set manually, otherwise it's not automatically calculated in the repeater - height: UM.Theme.getSize("default_margin").height - color: (Cura.MachineManager.activeMachine != null && Cura.QualityProfilesDropDownMenuModel.getItem(index).available) ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - text: - { - var result = "" - if(Cura.MachineManager.activeMachine != null) - { - result = Cura.QualityProfilesDropDownMenuModel.getItem(index).layer_height - - if(result == undefined) - { - result = ""; - } - else - { - result = Number(Math.round(result + "e+2") + "e-2"); //Round to 2 decimals. Javascript makes this difficult... - if (result == undefined || result != result) //Parse failure. - { - result = ""; - } - } - } - return result - } - - x: - { - // Make sure the text aligns correctly with each tick - if (qualityModel.totalTicks == 0) - { - // If there is only one tick, align it centrally - return Math.round(((settingsColumnWidth) - width) / 2) - } - else if (index == 0) - { - return Math.round(settingsColumnWidth / qualityModel.totalTicks) * index - } - else if (index == qualityModel.totalTicks) - { - return Math.round(settingsColumnWidth / qualityModel.totalTicks) * index - width - } - else - { - return Math.round((settingsColumnWidth / qualityModel.totalTicks) * index - (width / 2)) - } - } - font: UM.Theme.getFont("default") - } - } - } - - // Print speed slider - // Two sliders are created, one at the bottom with the unavailable qualities - // and the other at the top with the available quality profiles and so the handle to select them. - Item - { - id: speedSlider - height: childrenRect.height - anchors { - left: titleRow.right + left: parent.left right: parent.right - verticalCenter: titleRow.verticalCenter } - // Draw unavailable slider - Slider + spacing: UM.Theme.getSize("default_margin").height + + Controls2.ButtonGroup { - id: unavailableSlider + id: activeProfileButtonGroup + exclusive: true + onClicked: Cura.IntentManager.selectIntent(button.modelData.intent_category, button.modelData.quality_type) + } - width: parent.width - height: qualitySlider.height // Same height as the slider that is on top - updateValueWhileDragging : false - tickmarksEnabled: true - - minimumValue: 0 - // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly - // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) - maximumValue: qualityModel.totalTicks - stepSize: 1 - - style: SliderStyle + Item + { + height: childrenRect.height + anchors { - //Draw Unvailable line - groove: Item - { - Rectangle - { - height: UM.Theme.getSize("print_setup_slider_groove").height - width: control.width - UM.Theme.getSize("print_setup_slider_handle").width - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - color: UM.Theme.getColor("quality_slider_unavailable") - } - } - - handle: Item {} - - tickmarks: Repeater - { - id: qualityRepeater - model: qualityModel.totalTicks > 0 ? qualityModel : 0 - - Rectangle - { - color: Cura.QualityProfilesDropDownMenuModel.getItem(index).available ? UM.Theme.getColor("quality_slider_available") : UM.Theme.getColor("quality_slider_unavailable") - implicitWidth: UM.Theme.getSize("print_setup_slider_tickmarks").width - implicitHeight: UM.Theme.getSize("print_setup_slider_tickmarks").height - anchors.verticalCenter: parent.verticalCenter - - // Do not use Math.round otherwise the tickmarks won't be aligned - x: ((UM.Theme.getSize("print_setup_slider_handle").width / 2) - (implicitWidth / 2) + (qualityModel.qualitySliderStepWidth * index)) - radius: Math.round(implicitWidth / 2) - } - } + left: parent.left + right: parent.right } - - // Create a mouse area on top of the unavailable profiles to show a specific tooltip - MouseArea + Cura.IconWithText { - anchors.fill: parent - hoverEnabled: true - enabled: !Cura.MachineManager.hasCustomQuality + id: profileLabel + source: UM.Theme.getIcon("category_layer_height") + text: catalog.i18nc("@label", "Profiles") + font: UM.Theme.getFont("medium") + width: labelColumnWidth + } + UM.SimpleButton + { + id: resetToDefaultQualityButton + + visible: Cura.SimpleModeSettingsManager.isProfileCustomized || Cura.MachineManager.hasCustomQuality + height: visible ? UM.Theme.getSize("print_setup_icon").height : 0 + width: height + anchors + { + right: profileLabel.right + rightMargin: UM.Theme.getSize("default_margin").width + leftMargin: UM.Theme.getSize("default_margin").width + verticalCenter: parent.verticalCenter + } + + color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button") + iconSource: UM.Theme.getIcon("reset") + + onClicked: + { + // if the current profile is user-created, switch to a built-in quality + Cura.MachineManager.resetToUseDefaultQuality() + } onEntered: { - var tooltipContent = catalog.i18nc("@tooltip", "This quality profile is not available for your current material and nozzle configuration. Please change these to enable this quality profile.") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, customisedSettings.height), tooltipContent) + var tooltipContent = catalog.i18nc("@tooltip","You have modified some profile settings. If you want to change these go to custom mode.") + base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, 0), tooltipContent) } onExited: base.hideTooltip() } - } - // Draw available slider - Slider - { - id: qualitySlider - - width: qualityModel.qualitySliderStepWidth * (qualityModel.availableTotalTicks - 1) + UM.Theme.getSize("print_setup_slider_handle").width - height: UM.Theme.getSize("print_setup_slider_handle").height // The handle is the widest element of the slider - enabled: qualityModel.totalTicks > 0 && !Cura.SimpleModeSettingsManager.isProfileCustomized - visible: qualityModel.availableTotalTicks > 0 - updateValueWhileDragging : false - - anchors + Cura.LabelBar { - right: parent.right - rightMargin: qualityModel.qualitySliderMarginRight - } - - minimumValue: qualityModel.qualitySliderAvailableMin >= 0 ? qualityModel.qualitySliderAvailableMin : 0 - // maximumValue must be greater than minimumValue to be able to see the handle. While the value is strictly - // speaking not always correct, it seems to have the correct behavior (switching from 0 available to 1 available) - maximumValue: qualityModel.qualitySliderAvailableMax >= 1 ? qualityModel.qualitySliderAvailableMax : 1 - stepSize: 1 - - value: qualityModel.qualitySliderActiveIndex - - style: SliderStyle - { - // Draw Available line - groove: Item + id: labelbar + anchors { - Rectangle - { - height: UM.Theme.getSize("print_setup_slider_groove").height - width: control.width - UM.Theme.getSize("print_setup_slider_handle").width - anchors.verticalCenter: parent.verticalCenter - - // Do not use Math.round otherwise the tickmarks won't be aligned - x: UM.Theme.getSize("print_setup_slider_handle").width / 2 - color: UM.Theme.getColor("quality_slider_available") - } + left: profileLabel.right + right: parent.right } - handle: Rectangle - { - id: qualityhandleButton - color: UM.Theme.getColor("primary") - implicitWidth: UM.Theme.getSize("print_setup_slider_handle").width - implicitHeight: implicitWidth - radius: Math.round(implicitWidth / 2) - visible: !Cura.SimpleModeSettingsManager.isProfileCustomized && !Cura.MachineManager.hasCustomQuality && qualityModel.existingQualityProfile - } - } - - onValueChanged: - { - // only change if an active machine is set and the slider is visible at all. - if (Cura.MachineManager.activeMachine != null && visible) - { - // prevent updating during view initializing. Trigger only if the value changed by user - if (qualitySlider.value != qualityModel.qualitySliderActiveIndex && qualityModel.qualitySliderActiveIndex != -1) - { - // start updating with short delay - qualitySliderChangeTimer.start() - } - } - } - - // This mouse area is only used to capture the onHover state and don't propagate it to the unavailable mouse area - MouseArea - { - anchors.fill: parent - hoverEnabled: true - acceptedButtons: Qt.NoButton - enabled: !Cura.MachineManager.hasCustomQuality + model: Cura.QualityProfilesDropDownMenuModel + modelKey: "layer_height" } } - // This mouse area will only take the mouse events and show a tooltip when the profile in use is - // a user created profile - MouseArea - { - anchors.fill: parent - hoverEnabled: true - visible: Cura.MachineManager.hasCustomQuality - onEntered: + Repeater + { + model: Cura.IntentCategoryModel {} + Item { - var tooltipContent = catalog.i18nc("@tooltip", "A custom profile is currently active. To enable the quality slider, choose a default quality profile in Custom tab") - base.showTooltip(qualityRow, Qt.point(-UM.Theme.getSize("thick_margin").width, customisedSettings.height), tooltipContent) + anchors + { + left: parent.left + right: parent.right + } + height: intentCategoryLabel.height + + Label + { + id: intentCategoryLabel + text: model.name + width: labelColumnWidth - UM.Theme.getSize("section_icon").width + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("section_icon").width + UM.Theme.getSize("narrow_margin").width + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("text") + renderType: Text.NativeRendering + elide: Text.ElideRight + } + + Cura.RadioCheckbar + { + anchors + { + left: intentCategoryLabel.right + right: parent.right + } + dataModel: model["qualities"] + buttonGroup: activeProfileButtonGroup + + function checkedFunction(modelItem) + { + if(Cura.MachineManager.hasCustomQuality) + { + // When user created profile is active, no quality tickbox should be active. + return false + } + + if(modelItem === null) + { + return false + } + return Cura.MachineManager.activeQualityType == modelItem.quality_type && Cura.MachineManager.activeIntentCategory == modelItem.intent_category + } + + isCheckedFunction: checkedFunction + } + + MouseArea // Intent description tooltip hover area + { + id: intentDescriptionHoverArea + anchors.fill: parent + hoverEnabled: true + enabled: model.description !== undefined + acceptedButtons: Qt.NoButton // react to hover only, don't steal clicks + + Timer + { + id: intentTooltipTimer + interval: 500 + running: false + repeat: false + onTriggered: base.showTooltip( + intentCategoryLabel, + Qt.point(-(intentCategoryLabel.x - qualityRow.x) - UM.Theme.getSize("thick_margin").width, 0), + model.description + ) + } + + onEntered: intentTooltipTimer.start() + onExited: + { + base.hideTooltip() + intentTooltipTimer.stop() + } + } + + NoIntentIcon // This icon has hover priority over intentDescriptionHoverArea, so draw it above it. + { + affected_extruders: Cura.MachineManager.extruderPositionsWithNonActiveIntent + intent_type: model.name + anchors.right: intentCategoryLabel.right + anchors.rightMargin: UM.Theme.getSize("narrow_margin").width + width: intentCategoryLabel.height * 0.75 + anchors.verticalCenter: parent.verticalCenter + height: width + visible: Cura.MachineManager.activeIntentCategory == model.intent_category && affected_extruders.length + } + + } - onExited: base.hideTooltip() + } } } \ No newline at end of file diff --git a/resources/qml/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/PrinterSelector/MachineSelectorButton.qml b/resources/qml/PrinterSelector/MachineSelectorButton.qml index c37823ba82..115957dd64 100644 --- a/resources/qml/PrinterSelector/MachineSelectorButton.qml +++ b/resources/qml/PrinterSelector/MachineSelectorButton.qml @@ -72,6 +72,7 @@ Button verticalCenter: parent.verticalCenter } spacing: UM.Theme.getSize("narrow_margin").width + visible: (updatePrinterTypesOnlyWhenChecked && machineSelectorButton.checked) || !updatePrinterTypesOnlyWhenChecked Repeater { diff --git a/resources/qml/PrinterSelector/MachineSelectorList.qml b/resources/qml/PrinterSelector/MachineSelectorList.qml index 9c52c15580..a7c041630f 100644 --- a/resources/qml/PrinterSelector/MachineSelectorList.qml +++ b/resources/qml/PrinterSelector/MachineSelectorList.qml @@ -32,7 +32,7 @@ ListView width: listView.width outputDevice: Cura.MachineManager.printerOutputDevices.length >= 1 ? Cura.MachineManager.printerOutputDevices[0] : null - checked: Cura.MachineManager.activeMachineId == model.id + checked: Cura.MachineManager.activeMachine.id == model.id onClicked: { diff --git a/resources/qml/RadioCheckbar.qml b/resources/qml/RadioCheckbar.qml new file mode 100644 index 0000000000..0b8709fe7a --- /dev/null +++ b/resources/qml/RadioCheckbar.qml @@ -0,0 +1,154 @@ +// Copyright (c) 2019 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.10 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.3 +import UM 1.1 as UM + +Item +{ + id: base + property ButtonGroup buttonGroup: null + + property color activeColor: UM.Theme.getColor("primary") + property color inactiveColor: UM.Theme.getColor("slider_groove") + property color defaultItemColor: UM.Theme.getColor("slider_groove_fill") + property color defaultItemFillColor: UM.Theme.getColor("main_background") + property int checkboxSize: Math.round(UM.Theme.getSize("radio_button").height * 0.75) + property int inactiveMarkerSize: 2 * barSize + property int barSize: UM.Theme.getSize("slider_groove_radius").height + property var isCheckedFunction // Function that accepts the modelItem and returns if the item should be active. + + implicitWidth: 200 * screenScaleFactor + implicitHeight: checkboxSize + + property var dataModel: null + + // The horizontal inactive bar that sits behind the buttons + Rectangle + { + id: inactiveLine + color: inactiveColor + + height: barSize + + anchors + { + left: buttonBar.left + right: buttonBar.right + leftMargin: Math.round((checkboxSize - inactiveMarkerSize) / 2) + rightMargin: Math.round((checkboxSize - inactiveMarkerSize) / 2) + verticalCenter: parent.verticalCenter + } + } + + + RowLayout + { + id: buttonBar + anchors.top: parent.top + height: checkboxSize + width: parent.width + spacing: 0 + + Repeater + { + id: repeater + model: base.dataModel + height: checkboxSize + Item + { + Layout.fillWidth: true + Layout.fillHeight: true + // The last item of the repeater needs to be shorter, as we don't need another part to fit + // the horizontal bar. The others should essentially not be limited. + Layout.maximumWidth: index + 1 === repeater.count ? activeComponent.width : 200000000 + + property bool isEnabled: model.available + // The horizontal bar between the checkable options. + // Note that the horizontal bar points towards the previous item. + Rectangle + { + property Item previousItem: repeater.itemAt(index - 1) + + height: barSize + width: Math.round(buttonBar.width / (repeater.count - 1) - activeComponent.width - 2) + color: defaultItemColor + + anchors + { + right: activeComponent.left + verticalCenter: parent.verticalCenter + } + visible: previousItem !== null && previousItem.isEnabled && isEnabled + } + Loader + { + id: activeComponent + sourceComponent: isEnabled? checkboxComponent : disabledComponent + width: checkboxSize + + property var modelItem: model + } + } + } + } + + Component + { + id: disabledComponent + Item + { + height: checkboxSize + width: checkboxSize + + Rectangle + { + // This can (and should) be done wiht a verticalCenter. For some reason it does work in QtCreator + // but not when using the exact same QML in Cura. + anchors.verticalCenter: parent ? parent.verticalCenter : undefined + anchors.horizontalCenter: parent ? parent.horizontalCenter : undefined + height: inactiveMarkerSize + width: inactiveMarkerSize + radius: Math.round(width / 2) + color: inactiveColor + } + } + } + + Component + { + id: checkboxComponent + CheckBox + { + id: checkbox + ButtonGroup.group: buttonGroup + width: checkboxSize + height: checkboxSize + property var modelData: modelItem + + checked: isCheckedFunction(modelItem) + indicator: Rectangle + { + height: checkboxSize + width: checkboxSize + radius: Math.round(width / 2) + + border.color: defaultItemColor + color: defaultItemFillColor + + Rectangle + { + anchors + { + fill: parent + } + radius: Math.round(width / 2) + color: activeColor + visible: checkbox.checked + } + } + } + } +} diff --git a/resources/qml/Settings/SettingCheckBox.qml b/resources/qml/Settings/SettingCheckBox.qml index 8c0c58f371..f5100eab74 100644 --- a/resources/qml/Settings/SettingCheckBox.qml +++ b/resources/qml/Settings/SettingCheckBox.qml @@ -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 6fcc1951a4..cbabb3ffd4 100644 --- a/resources/qml/Settings/SettingComboBox.qml +++ b/resources/qml/Settings/SettingComboBox.qml @@ -12,7 +12,6 @@ SettingItem { id: base property var focusItem: control - contents: Cura.ComboBox { id: control diff --git a/resources/qml/Settings/SettingExtruder.qml b/resources/qml/Settings/SettingExtruder.qml index 7162744ae5..ff57381ddf 100644 --- a/resources/qml/Settings/SettingExtruder.qml +++ b/resources/qml/Settings/SettingExtruder.qml @@ -75,7 +75,7 @@ SettingItem base.setActiveFocusToNextSetting(false) } - currentIndex: propertyProvider.properties.value + currentIndex: propertyProvider.properties.value !== undefined ? propertyProvider.properties.value : 0 property string color: "#fff" diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 04b601f983..9986c7eaf8 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -23,17 +23,16 @@ Item property alias contents: controlContainer.children property alias hovered: mouse.containsMouse - property var showRevertButton: true - property var showInheritButton: true - property var showLinkedSettingIcon: true - property var doDepthIndentation: true - property var doQualityUserSettingEmphasis: true + property bool showRevertButton: true + property bool showInheritButton: true + property bool showLinkedSettingIcon: true + property bool doDepthIndentation: true + property bool doQualityUserSettingEmphasis: true property var settingKey: definition.key //Used to detect each individual setting more easily in Squish GUI tests. // Create properties to put property provider stuff in (bindings break in qt 5.5.1 otherwise) property var state: propertyProvider.properties.state - // There is no resolve property if there is only one stack. - property var resolve: Cura.MachineManager.activeStackId !== Cura.MachineManager.activeMachineId ? propertyProvider.properties.resolve : "None" + property var resolve: propertyProvider.properties.resolve property var stackLevels: propertyProvider.stackLevels property var stackLevel: stackLevels[0] // A list of stack levels that will trigger to show the revert button @@ -57,7 +56,8 @@ Item signal showTooltip(string text) signal hideTooltip() signal showAllHiddenInheritedSettings(string category_id) - property string tooltipText: + + function createTooltipText() { var affects = settingDefinitionsModel.getRequiredBy(definition.key, "value") var affected_by = settingDefinitionsModel.getRequires(definition.key, "value") @@ -128,7 +128,7 @@ Item onTriggered: { - base.showTooltip(base.tooltipText) + base.showTooltip(base.createTooltipText()) } } @@ -149,7 +149,7 @@ Item color: UM.Theme.getColor("setting_control_text") opacity: (definition.visible) ? 1 : 0.5 // emphasize the setting if it has a value in the user or quality profile - font: base.doQualityUserSettingEmphasis && base.stackLevel != undefined && base.stackLevel <= 1 ? UM.Theme.getFont("default_italic") : UM.Theme.getFont("default") + font: base.doQualityUserSettingEmphasis && base.stackLevel !== undefined && base.stackLevel <= 1 ? UM.Theme.getFont("default_italic") : UM.Theme.getFont("default") } Row @@ -170,10 +170,11 @@ Item { id: linkedSettingIcon; - visible: Cura.MachineManager.activeStack != Cura.MachineManager.activeMachine && (!definition.settable_per_extruder || String(globalPropertyProvider.properties.limit_to_extruder) != "-1") && base.showLinkedSettingIcon + visible: (!definition.settable_per_extruder || String(globalPropertyProvider.properties.limit_to_extruder) != "-1") && base.showLinkedSettingIcon - height: parent.height; - width: height; + anchors.top: parent.top + anchors.bottom: parent.bottom + width: height color: UM.Theme.getColor("setting_control_button") hoverColor: UM.Theme.getColor("setting_control_button") @@ -184,14 +185,14 @@ Item { hoverTimer.stop() var tooltipText = catalog.i18nc("@label", "This setting is always shared between all extruders. Changing it here will change the value for all extruders.") - if ((resolve != "None") && (stackLevel != 0)) + if ((resolve !== "None") && (stackLevel !== 0)) { // We come here if a setting has a resolve and the setting is not manually edited. tooltipText += " " + catalog.i18nc("@label", "The value is resolved from per-extruder values ") + "[" + Cura.ExtruderManager.getInstanceExtruderValues(definition.key) + "]." } base.showTooltip(tooltipText) } - onExited: base.showTooltip(base.tooltipText) + onExited: base.showTooltip(base.createTooltipText()) } UM.SimpleButton @@ -200,7 +201,8 @@ Item visible: base.resetButtonVisible - height: parent.height + anchors.top: parent.top + anchors.bottom: parent.bottom width: height color: UM.Theme.getColor("setting_control_button") @@ -227,7 +229,7 @@ Item hoverTimer.stop() base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile.")) } - onExited: base.showTooltip(base.tooltipText) + onExited: base.showTooltip(base.createTooltipText()) } UM.SimpleButton @@ -275,10 +277,15 @@ Item // Observed when loading workspace, probably when SettingItems are removed. return false } + if(globalPropertyProvider.properties.limit_to_extruder === undefined) + { + return false + } return Cura.SettingInheritanceManager.getOverridesForExtruder(definition.key, String(globalPropertyProvider.properties.limit_to_extruder)).indexOf(definition.key) >= 0 } - height: parent.height + anchors.top: parent.top + anchors.bottom: parent.bottom width: height onClicked: @@ -296,7 +303,7 @@ Item break } } - if ((last_entry == 4 || last_entry == 11) && base.stackLevel == 0 && base.stackLevels.length == 2) + if ((last_entry === 4 || last_entry === 11) && base.stackLevel === 0 && base.stackLevels.length === 2) { // Special case of the inherit reset. If only the definition (4th or 11th) container) and the first // entry (user container) are set, we can simply remove the container. @@ -320,7 +327,7 @@ Item iconSource: UM.Theme.getIcon("formula") onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting is normally calculated, but it currently has an absolute value set.\n\nClick to restore the calculated value.")) } - onExited: base.showTooltip(base.tooltipText) + onExited: base.showTooltip(base.createTooltipText()) } } diff --git a/resources/qml/Settings/SettingView.qml b/resources/qml/Settings/SettingView.qml index 848dc7d5cb..5aea939728 100644 --- a/resources/qml/Settings/SettingView.qml +++ b/resources/qml/Settings/SettingView.qml @@ -65,7 +65,7 @@ Item anchors.right: clearFilterButton.left anchors.rightMargin: Math.round(UM.Theme.getSize("thick_margin").width) - placeholderText: "" + "
" + catalog.i18nc("@label:textbox", "search settings") + placeholderText: "" + "
" + catalog.i18nc("@label:textbox", "Search settings") style: TextFieldStyle { @@ -228,7 +228,7 @@ Item model: UM.SettingDefinitionsModel { id: definitionsModel - containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: "" + containerId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.definition.id: "" visibilityHandler: UM.SettingPreferenceVisibilityHandler { } exclude: ["machine_settings", "command_line_settings", "infill_mesh", "infill_mesh_order", "cutting_mesh", "support_mesh", "anti_overhang_mesh"] // TODO: infill_mesh settigns are excluded hardcoded, but should be based on the fact that settable_globally, settable_per_meshgroup and settable_per_extruder are false. expanded: CuraApplication.expandedCategories @@ -241,43 +241,41 @@ Item CuraApplication.setExpandedCategories(expanded) } } - onVisibilityChanged: Cura.SettingInheritanceManager.forceUpdate() + onVisibilityChanged: Cura.SettingInheritanceManager.scheduleUpdate() } - property var indexWithFocus: -1 - + property int indexWithFocus: -1 + property string activeMachineId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : "" delegate: Loader { id: delegate width: scrollView.width - height: provider.properties.enabled == "True" ? UM.Theme.getSize("section").height : - contents.spacing + height: provider.properties.enabled === "True" ? UM.Theme.getSize("section").height : - contents.spacing Behavior on height { NumberAnimation { duration: 100 } } - opacity: provider.properties.enabled == "True" ? 1 : 0 + opacity: provider.properties.enabled === "True" ? 1 : 0 Behavior on opacity { NumberAnimation { duration: 100 } } enabled: { if (!Cura.ExtruderManager.activeExtruderStackId && machineExtruderCount.properties.value > 1) { // disable all controls on the global tab, except categories - return model.type == "category" + return model.type === "category" } - return provider.properties.enabled == "True" + return provider.properties.enabled === "True" } property var definition: model property var settingDefinitionsModel: definitionsModel property var propertyProvider: provider property var globalPropertyProvider: inheritStackProvider - property var externalResetHandler: false - - property string activeMachineId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id : "" + property bool externalResetHandler: false //Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989 //In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes, //causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely. - asynchronous: model.type != "enum" && model.type != "extruder" && model.type != "optional_extruder" - active: model.type != undefined + asynchronous: model.type !== "enum" && model.type !== "extruder" && model.type !== "optional_extruder" + active: model.type !== undefined source: { @@ -313,7 +311,7 @@ Item { target: provider property: "containerStackId" - when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0); + when: model.settable_per_extruder || (inheritStackProvider.properties.limit_to_extruder !== null && inheritStackProvider.properties.limit_to_extruder >= 0); value: { // Associate this binding with Cura.MachineManager.activeMachine.id in the beginning so this @@ -324,9 +322,9 @@ Item if (!model.settable_per_extruder) { //Not settable per extruder or there only is global, so we must pick global. - return delegate.activeMachineId + return contents.activeMachineId } - if (inheritStackProvider.properties.limit_to_extruder != null && inheritStackProvider.properties.limit_to_extruder >= 0) + if (inheritStackProvider.properties.limit_to_extruder !== null && inheritStackProvider.properties.limit_to_extruder >= 0) { //We have limit_to_extruder, so pick that stack. return Cura.ExtruderManager.extruderIds[String(inheritStackProvider.properties.limit_to_extruder)]; @@ -337,7 +335,7 @@ Item return Cura.ExtruderManager.activeExtruderStackId; } //No extruder tab is selected. Pick the global stack. Shouldn't happen any more since we removed the global tab. - return delegate.activeMachineId + return contents.activeMachineId } } @@ -346,7 +344,7 @@ Item UM.SettingPropertyProvider { id: inheritStackProvider - containerStackId: Cura.MachineManager.activeMachine !== null ? Cura.MachineManager.activeMachine.id: "" + containerStackId: contents.activeMachineId key: model.key watchedProperties: [ "limit_to_extruder" ] } @@ -355,11 +353,11 @@ Item { id: provider - containerStackId: delegate.activeMachineId + containerStackId: contents.activeMachineId key: model.key ? model.key : "" watchedProperties: [ "value", "enabled", "state", "validationState", "settable_per_extruder", "resolve" ] storeIndex: 0 - removeUnusedValue: model.resolve == undefined + removeUnusedValue: model.resolve === undefined } Connections @@ -421,8 +419,6 @@ Item } } - UM.I18nCatalog { id: catalog; name: "cura"; } - NumberAnimation { id: animateContentY target: contents @@ -465,7 +461,7 @@ Item //: Settings context menu action text: catalog.i18nc("@action:menu", "Copy value to all extruders") visible: machineExtruderCount.properties.value > 1 - enabled: contextMenu.provider != undefined && contextMenu.provider.properties.settable_per_extruder != "False" + enabled: contextMenu.provider !== undefined && contextMenu.provider.properties.settable_per_extruder !== "False" onTriggered: Cura.MachineManager.copyValueToExtruders(contextMenu.key) } @@ -474,7 +470,7 @@ Item //: Settings context menu action text: catalog.i18nc("@action:menu", "Copy all changed values to all extruders") visible: machineExtruderCount.properties.value > 1 - enabled: contextMenu.provider != undefined + enabled: contextMenu.provider !== undefined onTriggered: Cura.MachineManager.copyAllValuesToExtruders() } @@ -512,12 +508,7 @@ Item text: catalog.i18nc("@action:menu", "Hide this setting"); onTriggered: { - definitionsModel.hide(contextMenu.key); - // visible settings have changed, so we're no longer showing a preset - if (settingVisibilityPresetsModel.activePreset != "") - { - settingVisibilityPresetsModel.setActivePreset("custom"); - } + definitionsModel.hide(contextMenu.key) } } MenuItem @@ -545,11 +536,6 @@ Item { definitionsModel.show(contextMenu.key); } - // visible settings have changed, so we're no longer showing a preset - if (settingVisibilityPresetsModel.activePreset != "") - { - settingVisibilityPresetsModel.setActivePreset("custom"); - } } } MenuItem diff --git a/resources/qml/ViewOrientationControls.qml b/resources/qml/ViewOrientationControls.qml index 51ed6e3dcb..97f2bb9400 100644 --- a/resources/qml/ViewOrientationControls.qml +++ b/resources/qml/ViewOrientationControls.qml @@ -6,7 +6,7 @@ import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import UM 1.4 as UM - +import Cura 1.1 as Cura // A row of buttons that control the view direction Row { @@ -19,30 +19,65 @@ Row ViewOrientationButton { iconSource: UM.Theme.getIcon("view_3d") - onClicked: UM.Controller.rotateView("3d", 0) + onClicked: Cura.Actions.view3DCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "3D View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_front") - onClicked: UM.Controller.rotateView("home", 0) + onClicked: Cura.Actions.viewFrontCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Front View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_top") - onClicked: UM.Controller.rotateView("y", 90) + onClicked: Cura.Actions.viewTopCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Top View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_left") - onClicked: UM.Controller.rotateView("x", 90) + onClicked: Cura.Actions.viewLeftSideCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Left View") + acceptedButtons: Qt.NoButton + } } ViewOrientationButton { iconSource: UM.Theme.getIcon("view_right") - onClicked: UM.Controller.rotateView("x", -90) + onClicked: Cura.Actions.viewRightSideCamera.trigger() + + UM.TooltipArea + { + anchors.fill: parent + text: catalog.i18nc("@info:tooltip", "Right View") + acceptedButtons: Qt.NoButton + } } } diff --git a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml index 3dd9e86ee9..fce616472f 100644 --- a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml @@ -22,9 +22,12 @@ Item ? 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: preferredCategory + property string currentSection: "Ultimaker B.V." // By default (when this list shows up) we always expand the "Ultimaker" section. - property string preferredCategory: "Ultimaker" + 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. @@ -83,14 +86,19 @@ Item { id: machineList - cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. - + // CURA-6793 + // Enabling the buffer seems to cause the blank items issue. When buffer is enabled, if the ListView's + // individual item has a dynamic change on its visibility, the ListView doesn't redraw itself. + // The default value of cacheBuffer is platform-dependent, so we explicitly disable it here. + cacheBuffer: 0 + boundsBehavior: Flickable.StopAtBounds + flickDeceleration: 20000 // To prevent the flicking behavior. model: UM.DefinitionContainersModel { id: machineDefinitionsModel filter: { "visible": true } - sectionProperty: "category" - preferredSectionValue: preferredCategory + sectionProperty: "manufacturer" + preferredSections: preferredCategories } section.property: "section" diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml index 95eff0465a..5a4f5ec7b7 100644 --- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -71,7 +71,8 @@ Item section.property: "modelData.sectionName" section.criteria: ViewSection.FullString section.delegate: sectionHeading - + boundsBehavior: Flickable.StopAtBounds + flickDeceleration: 20000 // To prevent the flicking behavior. cacheBuffer: 1000000 // Set a large cache to effectively just cache every list item. Component.onCompleted: diff --git a/resources/qml/WelcomePages/AddPrinterByIpContent.qml b/resources/qml/WelcomePages/AddPrinterByIpContent.qml index 4aec5879c1..5ab0217f01 100644 --- a/resources/qml/WelcomePages/AddPrinterByIpContent.qml +++ b/resources/qml/WelcomePages/AddPrinterByIpContent.qml @@ -99,7 +99,7 @@ Item font: UM.Theme.getFont("default") color: UM.Theme.getColor("text") renderType: Text.NativeRendering - text: catalog.i18nc("@label", "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.") } Item diff --git a/resources/qml/Widgets/ComboBox.qml b/resources/qml/Widgets/ComboBox.qml index 6ce7c6da45..5a1ff16b95 100644 --- a/resources/qml/Widgets/ComboBox.qml +++ b/resources/qml/Widgets/ComboBox.qml @@ -15,39 +15,33 @@ ComboBox { id: control + states: [ + State + { + name: "disabled" + when: !control.enabled + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_control_disabled_border")} + PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_control_disabled")} + PropertyChanges { target: contentLabel; color: UM.Theme.getColor("setting_control_disabled_text")} + }, + State + { + name: "highlighted" + when: control.hovered || control.activeFocus + PropertyChanges { target: backgroundRectangle.border; color: UM.Theme.getColor("setting_control_border_highlight") } + PropertyChanges { target: backgroundRectangle; color: UM.Theme.getColor("setting_control_highlight")} + } + ] + background: Rectangle { - 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") - } + id: backgroundRectangle + color: UM.Theme.getColor("setting_control") radius: UM.Theme.getSize("setting_control_radius").width border.width: UM.Theme.getSize("default_lining").width - border.color: - { - if (!enabled) - { - return UM.Theme.getColor("setting_control_disabled_border") - } + border.color: UM.Theme.getColor("setting_control_border") - if (control.hovered || control.activeFocus) - { - return UM.Theme.getColor("setting_control_border_highlight") - } - - return UM.Theme.getColor("setting_control_border") - } } indicator: UM.RecolorImage @@ -67,6 +61,7 @@ ComboBox contentItem: Label { + id: contentLabel anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width anchors.verticalCenter: parent.verticalCenter @@ -76,7 +71,7 @@ ComboBox 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") + color: UM.Theme.getColor("setting_control_text") elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } diff --git a/resources/quality/Leapfrog_Bolt_Pro/Leapfrog_Bolt_Pro_global_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/Leapfrog_Bolt_Pro_global_standard.inst.cfg new file mode 100644 index 0000000000..513b8b38ec --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/Leapfrog_Bolt_Pro_global_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +global_quality = True + +[values] +layer_height = 0.15 diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg new file mode 100644 index 0000000000..e6ee0c75a7 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_brass0.4_abs_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_abs_natural +variant = Brass 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 35 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 35 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 30 +cool_fan_speed_min = 0 +cool_fan_speed_max = 30 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 3 +cool_min_layer_time = 5 +cool_min_speed = 10 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = brim +brim_width = 8 +brim_line_count = 14 +brim_outside_only = True +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg new file mode 100644 index 0000000000..3e150f7c4b --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/abs/Leapfrog_Bolt_Pro_nozzlex0.4_abs_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_abs_natural +variant = NozzleX 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 35 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 35 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 30 +cool_fan_speed_min = 0 +cool_fan_speed_max = 30 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 3 +cool_min_layer_time = 5 +cool_min_speed = 10 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = brim +brim_width = 8 +brim_line_count = 14 +brim_outside_only = True +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg new file mode 100644 index 0000000000..cca59c6d92 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_brass0.4_epla_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_epla_natural +variant = Brass 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 40 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 50 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 +acceleration_enabled = False + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg new file mode 100644 index 0000000000..84cfc04b72 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/epla/Leapfrog_Bolt_Pro_nozzlex0.4_epla_natural_standard.inst.cfg @@ -0,0 +1,107 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_epla_natural +variant = NozzleX 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 25 +speed_wall_0 = 25 +speed_wall_x = 40 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 50 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 +acceleration_enabled = False + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False +retraction_hop_only_when_collides = True +retraction_hop = 2 +retraction_hop_after_extruder_switch = True +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg new file mode 100644 index 0000000000..72b6025929 --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_brass0.4_pva_natural_standard.inst.cfg @@ -0,0 +1,104 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_pva_natural +variant = Brass 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 20 +speed_wall_0 = 20 +speed_wall_x = 20 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False + +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg new file mode 100644 index 0000000000..a7e4a49fbb --- /dev/null +++ b/resources/quality/Leapfrog_Bolt_Pro/pva/Leapfrog_Bolt_Pro_nozzlex0.4_pva_natural_standard.inst.cfg @@ -0,0 +1,104 @@ +[general] +version = 4 +name = Standard +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = 0 +material = leapfrog_pva_natural +variant = NozzleX 0.4 + +[values] +layer_height_0 = 0.3 +line_width = 0.4 +initial_layer_line_width_factor = 120 + +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +top_bottom_thickness = 0.8 +top_bottom_pattern = lines +optimize_wall_printing_order = True +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +z_seam_type = sharpest_corner +z_seam_corner = hide_seam +skin_outline_count = 1 + +infill_sparse_density = 20 +infill_pattern = grid +connect_infill_polygons = True +infill_overlap = 0 +infill_wipe_dist = 0 +infill_before_walls = True +min_infill_area = 0 + +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 2 +retraction_speed = 25 +switch_extruder_retraction_amount = 15 +switch_extruder_retraction_speeds = 20 + +speed_print = 50 +speed_wall = 20 +speed_wall_0 = 20 +speed_wall_x = 20 +speed_topbottom = 25 +speed_travel = 200 +speed_layer_0 = 25 +speed_support = 40 +speed_travel_layer_0 = 45 +speed_slowdown_layers = 1 +speed_equalize_flow_enabled = True +speed_equalize_flow_max = 150 + +retraction_combing = all +travel_avoid_other_parts = True +travel_avoid_supports = True +retraction_hop_enabled = False + +retraction_hop_after_extruder_switch_height = 2 + +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_min = 100 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.5 +cool_fan_full_layer = 4 +cool_min_layer_time = 5 +cool_min_speed = 5 + +support_interface_enable = False +support_angle = 50 +support_pattern = zigzag +support_connect_zigzags = False +support_infill_rate = 20 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.4 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5 +support_join_distance = 2 +support_tower_diameter = 3 +support_tower_roof_angle = 65 + +adhesion_type = skirt +skirt_line_count = 3 +skirt_gap = 1 +skirt_brim_minimal_length = 250 + +prime_tower_enable = True +prime_tower_size = 20 +prime_tower_min_volume = 6 +prime_tower_position_x = 169 +prime_tower_position_y = 25 +prime_tower_wipe_enabled = True +prime_tower_brim_enable = True diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 875812f950..7a77b774df 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index ed614faecd..c25de5c537 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_pri3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 855335780e..1f3048b29d 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 55bfc6a755..31e4eeffeb 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 4d6abb7f78..d35f1c6894 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_pri5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index a23f1808a1..dd5f313197 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_pri5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index bd099abec2..ee15d6673f 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_titan [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 49482953cf..04ac68504d 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = abax_titan [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 65cfb075f0..110ae871c6 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = abax_titan [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg index 47d6d80527..c0315f62eb 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg index 5f8e38800c..c582d60d61 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg index 9fc17d2294..4a2c13567a 100644 --- a/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg +++ b/resources/quality/anycubic_4max/abs/anycubic_4max_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg index 3d3f9fdca6..f6ac787217 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg index f30a53af78..8a56222e65 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg b/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg index e687709bd2..9c951ce762 100644 --- a/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg +++ b/resources/quality/anycubic_4max/anycubic_4max_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg index 69c5b4684c..f8df4e42c9 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg index 7fcdbf065e..3c378ebe3c 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg index dd1babf627..c911f1398f 100644 --- a/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg +++ b/resources/quality/anycubic_4max/hips/anycubic_4max_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg index 84b11721de..9d6fcd0159 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg index 90277985bb..67dbe2c33b 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg index 3ce5342684..5f79e3b1c4 100644 --- a/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg +++ b/resources/quality/anycubic_4max/petg/anycubic_4max_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg index 9fce900fc2..9485e432a2 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg index 5bc075d316..b8027fdecf 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg index 50fd145fd2..6a7472d2a2 100644 --- a/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg +++ b/resources/quality/anycubic_4max/pla/anycubic_4max_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_4max [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg b/resources/quality/anycubic_chiron/anycubic_chiron_draft.inst.cfg index 6011fdbb32..1b0bf92b9e 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 = 11 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..51a8ec246e 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 = 11 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..f832ad2bfc 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 = 11 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..e074a343c2 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = anycubic_i3_mega [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index 87ec96ed96..c9685ab931 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = anycubic_i3_mega [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index 526cb9bc5e..a9753a1561 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = anycubic_i3_mega [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg index c5ccd5a864..2d0c635852 100644 --- a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg index b2a5811bfa..c339ab8635 100644 --- a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg index 8c727d9bd3..b2f7ee110e 100644 --- a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg index 07f6404f62..3320881118 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg index df42b0ee3b..64a7b24845 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg index dca42bc4c0..943b681ef7 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg index a5099b36b8..f2bf753bb5 100644 --- a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg index cad98cba5c..8f95778897 100644 --- a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg index dcf7974c4c..2198e044ab 100644 --- a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg index 4eec6d3d4f..fdf625a655 100644 --- a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg index a94bfab748..2efcb6595a 100644 --- a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg index 83fe257b96..a7f762bfc3 100644 --- a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg index 06e337be77..fbb5eff2c8 100644 --- a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg index e2f002343e..fa441ac94c 100644 --- a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg index 0e026befb2..d6549156e9 100644 --- a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg index 2638a06d89..0997984d3a 100644 --- a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -1 diff --git a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg index 89b6720617..b1527bf254 100644 --- a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg index 68c9f5102b..292fe634d1 100644 --- a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = builder_premium_small [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index fd1a1ece09..5be6734287 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index 909a23edeb..572f829caa 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index b66931ef40..c0325ada1d 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index d29b3acf65..59d871badb 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index dc910c5e06..906e8997f1 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 2792261dd6..38b0102316 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index 498afd9772..3e694f43a7 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index 66b467de07..c09d0057f6 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index d030257fb0..7a85fb360f 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index c606e778b6..f3b22dbb71 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index 77a1c7312c..66dce8e80e 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index 8f9d28bbac..75d1e7f572 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index 9faeef3b42..cae99c4561 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index 3dae1d45d7..4fe2f4528e 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index 61000f0912..333edae311 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index 4d4cf5e37d..66c9fd49b6 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index 76071d46bc..8d53e056f7 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index 304f38e105..d72478c605 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index 5aaede062d..8877a4185f 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index 75a4b94541..408ab6fc9e 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index 391c87f28c..903864abd0 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index 415951f4ee..3f70a9ecbb 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index f75dd933a6..11c9bd1490 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index e95037c242..ed82427d6c 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index 4896d60aca..c1d906d91d 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index 803cb2b849..9884794c2d 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index 7217d3524d..68cf7b8c05 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index 8a7b46a817..4b5daed2a7 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index 41dd55cfce..ec1443d141 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 75cd29e4a3..97404677b6 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index 66c425078d..f6fe7af29a 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index eea872ed0f..4b485385f4 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 12327636a7..8d928ef5de 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index 70c4f68135..995e2c1ad2 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index cd4f112370..6000a44e1b 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 9fae8bfe23..3fc5b6d33d 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index bebffc072b..2da5e8bfdc 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index 40c47b24a1..47eee4eaa2 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index 3b6e326495..a82a1e9c25 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index 17efcfc1ce..bb3f0a2f02 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 9c6840d5ba..3d96fb7fe7 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index 9fe00be066..2ac45f20a1 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index 6da3d2100a..c125cd71c1 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index c6d45d5faa..2884a2d79a 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index 4a06499b5f..19a769d66e 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index 2ab3fe3340..2cf627e3aa 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 7d19528283..c7e3458b1c 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index 994f9b886a..aeb467a389 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index f8227cfcd9..432673e77f 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index 385b79e368..7ff698a9e0 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index b99a972195..77d4f75c07 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 31fd7ddb8a..05e3d4d410 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index c93923e70a..5be7b83325 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 98e2a9bbbb..be66a80508 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index 444ac7bbc4..d37f16363e 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index 0b03607e34..8535a12010 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index b08e0d2671..257be4b88f 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index 32ce160df1..7cb6d951dd 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index a6fdd82b5c..e5e495fa24 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index 496ecc085d..5b732a5f9c 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = 4 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index e440fdfe3f..27d833c07b 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index c1ad10abe1..24fcc1a6f1 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = cartesio [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 3f5e3f47ce..aa8773035e 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/creality/base/base_0.2_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.2_ABS_super.inst.cfg new file mode 100644 index 0000000000..2761d80a3b --- /dev/null +++ b/resources/quality/creality/base/base_0.2_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.2mm Nozzle + +[values] +wall_thickness = =line_width*8 diff --git a/resources/quality/creality/base/base_0.2_ABS_ultra.inst.cfg b/resources/quality/creality/base/base_0.2_ABS_ultra.inst.cfg new file mode 100644 index 0000000000..9adae73117 --- /dev/null +++ b/resources/quality/creality/base/base_0.2_ABS_ultra.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +material = generic_abs +variant = 0.2mm Nozzle + +[values] +wall_thickness = =line_width*8 diff --git a/resources/quality/creality/base/base_0.2_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.2_PETG_super.inst.cfg new file mode 100644 index 0000000000..5bbf86e13d --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PETG_super.inst.cfg @@ -0,0 +1,17 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.2mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*8 +#retraction_extra_prime_amount = 0.5 + diff --git a/resources/quality/creality/base/base_0.2_PETG_ultra.inst.cfg b/resources/quality/creality/base/base_0.2_PETG_ultra.inst.cfg new file mode 100644 index 0000000000..0f28668117 --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PETG_ultra.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +material = generic_petg +variant = 0.2mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*8 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.2_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.2_PLA_super.inst.cfg new file mode 100644 index 0000000000..ac7000bdbc --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.2mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.2_PLA_ultra.inst.cfg b/resources/quality/creality/base/base_0.2_PLA_ultra.inst.cfg new file mode 100644 index 0000000000..63fdbad197 --- /dev/null +++ b/resources/quality/creality/base/base_0.2_PLA_ultra.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +material = generic_pla +variant = 0.2mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_ABS_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_adaptive.inst.cfg new file mode 100644 index 0000000000..34176fd865 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_adaptive.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_ABS_low.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_low.inst.cfg new file mode 100644 index 0000000000..58a5048f64 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_standard.inst.cfg new file mode 100644 index 0000000000..b28f044b68 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.3_ABS_super.inst.cfg new file mode 100644 index 0000000000..94d4231350 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.3mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.3_PETG_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_adaptive.inst.cfg new file mode 100644 index 0000000000..c060e81938 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_adaptive.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PETG_low.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_low.inst.cfg new file mode 100644 index 0000000000..ac6ab13ac1 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_low.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_standard.inst.cfg new file mode 100644 index 0000000000..43da465ffe --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.3_PETG_super.inst.cfg new file mode 100644 index 0000000000..9981b20687 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PETG_super.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.3mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.3_PLA_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_adaptive.inst.cfg new file mode 100644 index 0000000000..d4e62ee1cd --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_low.inst.cfg new file mode 100644 index 0000000000..2dcb61972a --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_standard.inst.cfg new file mode 100644 index 0000000000..f8c6c99e3e --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.3_PLA_super.inst.cfg new file mode 100644 index 0000000000..cdbb863f7d --- /dev/null +++ b/resources/quality/creality/base/base_0.3_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_TPU_adaptive.inst.cfg b/resources/quality/creality/base/base_0.3_TPU_adaptive.inst.cfg new file mode 100644 index 0000000000..93447302d3 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_TPU_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_tpu +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.3_TPU_standard.inst.cfg new file mode 100644 index 0000000000..b05453a64f --- /dev/null +++ b/resources/quality/creality/base/base_0.3_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.3_TPU_super.inst.cfg b/resources/quality/creality/base/base_0.3_TPU_super.inst.cfg new file mode 100644 index 0000000000..97bd2845c6 --- /dev/null +++ b/resources/quality/creality/base/base_0.3_TPU_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_tpu +variant = 0.3mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_ABS_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_adaptive.inst.cfg new file mode 100644 index 0000000000..4392bbe3f3 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_adaptive.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_ABS_low.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_low.inst.cfg new file mode 100644 index 0000000000..d5f86c18cc --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_standard.inst.cfg new file mode 100644 index 0000000000..b47723ec11 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.4_ABS_super.inst.cfg new file mode 100644 index 0000000000..70eb255c0f --- /dev/null +++ b/resources/quality/creality/base/base_0.4_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.4mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.4_PETG_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_adaptive.inst.cfg new file mode 100644 index 0000000000..0b2c4da236 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_adaptive.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PETG_low.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_low.inst.cfg new file mode 100644 index 0000000000..8956895f85 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_low.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_standard.inst.cfg new file mode 100644 index 0000000000..99b0bd7ee5 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.4_PETG_super.inst.cfg new file mode 100644 index 0000000000..d752fa0ef2 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PETG_super.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.4mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.4_PLA_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_adaptive.inst.cfg new file mode 100644 index 0000000000..ddd42a4260 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_low.inst.cfg new file mode 100644 index 0000000000..b5f9264ff0 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_standard.inst.cfg new file mode 100644 index 0000000000..d78d535227 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.4_PLA_super.inst.cfg new file mode 100644 index 0000000000..676ed7a216 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_TPU_adaptive.inst.cfg b/resources/quality/creality/base/base_0.4_TPU_adaptive.inst.cfg new file mode 100644 index 0000000000..a83e0bedd3 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_TPU_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_tpu +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.4_TPU_standard.inst.cfg new file mode 100644 index 0000000000..db18ba1443 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.4_TPU_super.inst.cfg b/resources/quality/creality/base/base_0.4_TPU_super.inst.cfg new file mode 100644 index 0000000000..fd622c1f92 --- /dev/null +++ b/resources/quality/creality/base/base_0.4_TPU_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_tpu +variant = 0.4mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_ABS_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_adaptive.inst.cfg new file mode 100644 index 0000000000..2c340d9d92 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_adaptive.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_ABS_low.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_low.inst.cfg new file mode 100644 index 0000000000..4b22ac0a5d --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_low.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_standard.inst.cfg new file mode 100644 index 0000000000..e7fbd03267 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_ABS_super.inst.cfg b/resources/quality/creality/base/base_0.5_ABS_super.inst.cfg new file mode 100644 index 0000000000..db979b662b --- /dev/null +++ b/resources/quality/creality/base/base_0.5_ABS_super.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_abs +variant = 0.5mm Nozzle + +[values] +wall_thickness = =line_width*4 diff --git a/resources/quality/creality/base/base_0.5_PETG_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_adaptive.inst.cfg new file mode 100644 index 0000000000..de8a7da619 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_adaptive.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PETG_low.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_low.inst.cfg new file mode 100644 index 0000000000..94e5487214 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_low.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_standard.inst.cfg new file mode 100644 index 0000000000..717e730da2 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PETG_super.inst.cfg b/resources/quality/creality/base/base_0.5_PETG_super.inst.cfg new file mode 100644 index 0000000000..f3b6c77b10 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PETG_super.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_petg +variant = 0.5mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*4 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.5_PLA_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_adaptive.inst.cfg new file mode 100644 index 0000000000..7d07b661e3 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_low.inst.cfg new file mode 100644 index 0000000000..e26c461823 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_standard.inst.cfg new file mode 100644 index 0000000000..f89b45a7cc --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_PLA_super.inst.cfg b/resources/quality/creality/base/base_0.5_PLA_super.inst.cfg new file mode 100644 index 0000000000..e030dc8d05 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_PLA_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_pla +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_TPU_adaptive.inst.cfg b/resources/quality/creality/base/base_0.5_TPU_adaptive.inst.cfg new file mode 100644 index 0000000000..df2b7303f5 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_TPU_adaptive.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +material = generic_tpu +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.5_TPU_standard.inst.cfg new file mode 100644 index 0000000000..447aadd7b9 --- /dev/null +++ b/resources/quality/creality/base/base_0.5_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.5_TPU_super.inst.cfg b/resources/quality/creality/base/base_0.5_TPU_super.inst.cfg new file mode 100644 index 0000000000..438ba87bcb --- /dev/null +++ b/resources/quality/creality/base/base_0.5_TPU_super.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +material = generic_tpu +variant = 0.5mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_ABS_standard.inst.cfg b/resources/quality/creality/base/base_0.6_ABS_standard.inst.cfg new file mode 100644 index 0000000000..963bafb0f0 --- /dev/null +++ b/resources/quality/creality/base/base_0.6_ABS_standard.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_abs +variant = 0.6mm Nozzle + +[values] +wall_thickness = =line_width*3 diff --git a/resources/quality/creality/base/base_0.6_PETG_standard.inst.cfg b/resources/quality/creality/base/base_0.6_PETG_standard.inst.cfg new file mode 100644 index 0000000000..b733293915 --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PETG_standard.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_petg +variant = 0.6mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*3 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.6_PLA_draft.inst.cfg b/resources/quality/creality/base/base_0.6_PLA_draft.inst.cfg new file mode 100644 index 0000000000..2a12ca9c08 --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PLA_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_pla +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_PLA_low.inst.cfg b/resources/quality/creality/base/base_0.6_PLA_low.inst.cfg new file mode 100644 index 0000000000..8674d629df --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PLA_low.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +material = generic_pla +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_PLA_standard.inst.cfg b/resources/quality/creality/base/base_0.6_PLA_standard.inst.cfg new file mode 100644 index 0000000000..36f7f8a61a --- /dev/null +++ b/resources/quality/creality/base/base_0.6_PLA_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_pla +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.6_TPU_standard.inst.cfg b/resources/quality/creality/base/base_0.6_TPU_standard.inst.cfg new file mode 100644 index 0000000000..0874c1285f --- /dev/null +++ b/resources/quality/creality/base/base_0.6_TPU_standard.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +material = generic_tpu +variant = 0.6mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.8_ABS_draft.inst.cfg b/resources/quality/creality/base/base_0.8_ABS_draft.inst.cfg new file mode 100644 index 0000000000..102a6d1298 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_ABS_draft.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_abs +variant = 0.8mm Nozzle + +[values] +wall_thickness = =line_width*3 diff --git a/resources/quality/creality/base/base_0.8_PETG_draft.inst.cfg b/resources/quality/creality/base/base_0.8_PETG_draft.inst.cfg new file mode 100644 index 0000000000..2581a6dcd6 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_PETG_draft.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_petg +variant = 0.8mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*3 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_0.8_PLA_draft.inst.cfg b/resources/quality/creality/base/base_0.8_PLA_draft.inst.cfg new file mode 100644 index 0000000000..5924b437b4 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_PLA_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_pla +variant = 0.8mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_0.8_TPU_draft.inst.cfg b/resources/quality/creality/base/base_0.8_TPU_draft.inst.cfg new file mode 100644 index 0000000000..277f8416d9 --- /dev/null +++ b/resources/quality/creality/base/base_0.8_TPU_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_tpu +variant = 0.8mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_1.0_ABS_draft.inst.cfg b/resources/quality/creality/base/base_1.0_ABS_draft.inst.cfg new file mode 100644 index 0000000000..b0a95e42d8 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_ABS_draft.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_abs +variant = 1.0mm Nozzle + +[values] +wall_thickness = =line_width*3 diff --git a/resources/quality/creality/base/base_1.0_PETG_draft.inst.cfg b/resources/quality/creality/base/base_1.0_PETG_draft.inst.cfg new file mode 100644 index 0000000000..85d7843621 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_PETG_draft.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_petg +variant = 1.0mm Nozzle + +[values] +speed_layer_0 = 15 +wall_thickness = =line_width*3 +#retraction_extra_prime_amount = 0.5 diff --git a/resources/quality/creality/base/base_1.0_PLA_draft.inst.cfg b/resources/quality/creality/base/base_1.0_PLA_draft.inst.cfg new file mode 100644 index 0000000000..a1b8aa1a50 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_PLA_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_pla +variant = 1.0mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_1.0_TPU_draft.inst.cfg b/resources/quality/creality/base/base_1.0_TPU_draft.inst.cfg new file mode 100644 index 0000000000..fdb4aef0e4 --- /dev/null +++ b/resources/quality/creality/base/base_1.0_TPU_draft.inst.cfg @@ -0,0 +1,13 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +material = generic_tpu +variant = 1.0mm Nozzle + +[values] diff --git a/resources/quality/creality/base/base_global_adaptive.inst.cfg b/resources/quality/creality/base/base_global_adaptive.inst.cfg new file mode 100644 index 0000000000..1dce93c37e --- /dev/null +++ b/resources/quality/creality/base/base_global_adaptive.inst.cfg @@ -0,0 +1,19 @@ +[general] +version = 4 +name = Dynamic Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = adaptive +weight = -2 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.20 +top_bottom_thickness = =layer_height_0+layer_height*4 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*6 +adaptive_layer_height_enabled = true diff --git a/resources/quality/creality/base/base_global_draft.inst.cfg b/resources/quality/creality/base/base_global_draft.inst.cfg new file mode 100644 index 0000000000..e294213853 --- /dev/null +++ b/resources/quality/creality/base/base_global_draft.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Draft Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -5 +global_quality = True + +[values] +layer_height = 0.32 +layer_height_0 = 0.32 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 diff --git a/resources/quality/creality/base/base_global_low.inst.cfg b/resources/quality/creality/base/base_global_low.inst.cfg new file mode 100644 index 0000000000..4129669e2e --- /dev/null +++ b/resources/quality/creality/base/base_global_low.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Low Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = low +weight = -4 +global_quality = True + +[values] +layer_height = 0.28 +layer_height_0 = 0.28 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*2 +support_interface_height = =layer_height*4 diff --git a/resources/quality/creality/base/base_global_standard.inst.cfg b/resources/quality/creality/base/base_global_standard.inst.cfg new file mode 100644 index 0000000000..bd60933d28 --- /dev/null +++ b/resources/quality/creality/base/base_global_standard.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Standard Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = standard +weight = -3 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.2 +top_bottom_thickness = =layer_height_0+layer_height*3 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*5 diff --git a/resources/quality/creality/base/base_global_super.inst.cfg b/resources/quality/creality/base/base_global_super.inst.cfg new file mode 100644 index 0000000000..ed40dfb7eb --- /dev/null +++ b/resources/quality/creality/base/base_global_super.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Super Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = super +weight = -1 +global_quality = True + +[values] +layer_height = 0.12 +layer_height_0 = 0.12 +top_bottom_thickness = =layer_height_0+layer_height*6 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*8 diff --git a/resources/quality/creality/base/base_global_ultra.inst.cfg b/resources/quality/creality/base/base_global_ultra.inst.cfg new file mode 100644 index 0000000000..7f608256fb --- /dev/null +++ b/resources/quality/creality/base/base_global_ultra.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Ultra Quality +definition = creality_base + +[metadata] +setting_version = 11 +type = quality +quality_type = ultra +weight = 0 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.12 +top_bottom_thickness = =layer_height_0+layer_height*10 +wall_thickness = =line_width*3 +support_interface_height = =layer_height*12 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg index 89c5c957f6..9963cb3acd 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg index 5b24e6edcf..954b804dd4 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg index c9bc62a72a..8dd6db539b 100644 --- a/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_discoeasy200_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_global_fast.inst.cfg b/resources/quality/dagoma/dagoma_global_fast.inst.cfg index a37d3fb579..93057f6803 100644 --- a/resources/quality/dagoma/dagoma_global_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_global_fine.inst.cfg b/resources/quality/dagoma/dagoma_global_fine.inst.cfg index 4815dc44cd..32db1de5c7 100644 --- a/resources/quality/dagoma/dagoma_global_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_global_standard.inst.cfg b/resources/quality/dagoma/dagoma_global_standard.inst.cfg index 5be7fb75c9..2ccfb6d406 100644 --- a/resources/quality/dagoma/dagoma_global_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_global_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_discoeasy200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg index 99a1f9e61b..91fa81ba7c 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_magis [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg index 12e7f2c62f..1e135166b0 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_magis [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg index 62054acb4e..297f21f9f1 100644 --- a/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_magis_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_magis [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg index ea024726ac..7be90b9db3 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = dagoma_neva [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg index a69798ff2e..e5cc46fb9a 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = dagoma_neva [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg index fd92ed4416..6b96244f6f 100644 --- a/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg +++ b/resources/quality/dagoma/dagoma_neva_pla_standard.inst.cfg @@ -4,7 +4,7 @@ name = Standard definition = dagoma_neva [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg old mode 100755 new mode 100644 index 3defed4dbc..ecc3cd7f31 --- a/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg old mode 100755 new mode 100644 index bcbeba5964..1560db980f --- a/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_High_Quality.inst.cfg old mode 100755 new mode 100644 index d4b9185108..8daad9dc98 --- 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 = 11 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 old mode 100755 new mode 100644 index 843176f4a1..e70231fa98 --- a/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg old mode 100755 new mode 100644 index 5035bad786..eba9a4f24d --- a/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast (beta) definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg old mode 100755 new mode 100644 index 6f63b0f5b4..0ccde62e0e --- a/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg old mode 100755 new mode 100644 index 2d76f87d66..fb38bad012 --- a/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_High_Quality.inst.cfg old mode 100755 new mode 100644 index 9b8c8080a2..6abfa29a9f --- 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 = 11 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 old mode 100755 new mode 100644 index 7bd4591064..9e16095828 --- a/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg old mode 100755 new mode 100644 index a13d029c1a..0d5e277e7e --- a/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_petg_Draft_Quality.inst.cfg index 003f312fa8..323a806c91 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 = 11 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..1ceec59cf5 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 = 11 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..c718605590 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 = 11 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..ad0a208baa 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 = 11 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..e20570f73a 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 = 11 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 old mode 100755 new mode 100644 index 9c966d726c..237b6a170e --- a/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg old mode 100755 new mode 100644 index a1a1fde055..cc88448304 --- a/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_High_Quality.inst.cfg old mode 100755 new mode 100644 index 0872d6d0a2..4589258966 --- 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 = 11 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 old mode 100755 new mode 100644 index cae00671c4..6d7e79941c --- a/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg old mode 100755 new mode 100644 index c26cec5127..785631454b --- a/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = deltacomb [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg b/resources/quality/deltacomb/deltacomb_tpu_Draft_Quality.inst.cfg old mode 100755 new mode 100644 index 5fcbd76229..18c9162995 --- 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 = 11 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 old mode 100755 new mode 100644 index 299d12ac00..de34ca53e3 --- 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 = 11 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 old mode 100755 new mode 100644 index 32b2aadd0b..c666e4f97c --- 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 = 11 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 old mode 100755 new mode 100644 index 880c35c14e..4dee4aae93 --- 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 = 11 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 old mode 100755 new mode 100644 index 104df50eee..31d552af6f --- 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 = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 9fe798dfd4..cd7a1056e4 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index 1a9ade143d..dd82d59dc7 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/extra_fast.inst.cfg b/resources/quality/extra_fast.inst.cfg index 1fcc9bc42d..5ff8ce1ab8 100644 --- a/resources/quality/extra_fast.inst.cfg +++ b/resources/quality/extra_fast.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index ddcdc0632d..bb77b3216d 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Fast Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 66faed5084..2ceb67d078 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = High Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index 2bd980889b..db24da7cef 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Normal Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index cec7056ff1..d2dd6cd693 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast Quality definition = fabtotum [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index d5a893c408..6e19cda49e 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = fabtotum [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index 7fe1b8b8f3..a3c79b6ce3 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal Quality definition = fabtotum [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index 5ebe5bbdc2..b47dc680ce 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Fast Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index 5d5b582b82..9aefce5883 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = High Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 1c510293a1..e0693501ae 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -4,7 +4,7 @@ definition = fabtotum name = Normal Quality [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg index 21a0c9bc09..601d70bd99 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg @@ -5,7 +5,7 @@ name = Fast Quality [metadata] type = quality -setting_version = 7 +setting_version = 11 material = generic_tpu quality_type = fast weight = -1 diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg index dd27372a07..6f43a69703 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg @@ -5,7 +5,7 @@ name = High Quality [metadata] type = quality -setting_version = 7 +setting_version = 11 material = generic_tpu quality_type = high weight = 1 diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg index b7eefeeeeb..fedf9896be 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg @@ -5,7 +5,7 @@ name = Normal Quality [metadata] type = quality -setting_version = 7 +setting_version = 11 material = generic_tpu quality_type = normal weight = 0 diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index d92eeb3ed2..14a4d92839 100644 --- a/resources/quality/fast.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg index 7ea63ba7f9..41951e7f5f 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_normal.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Normal Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg index 95182aad2d..cb67f784ad 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Thick Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = course weight = -2 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg index 05e9a84bb4..ca5dea0aeb 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_thin.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Thin Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg index fd986e6c1f..d27b117842 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_dual_very_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Dual Very Thick Layers definition = gmax15plus_dual [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra_course weight = -3 diff --git a/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg index fa50fcee4c..7fec142569 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_normal.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Normal Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg index e5fd46edbc..93d7fb211b 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Thick Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = course weight = -2 diff --git a/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg index cc19a478e5..f226e3602d 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_thin.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Thin Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg index 0c2661b3fd..ebd4af6f80 100644 --- a/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_global_very_thick.inst.cfg @@ -4,7 +4,7 @@ name = gMax 1.5+ Very Thick Layers definition = gmax15plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra_course weight = -3 diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index 8d306c9de4..d705a71fb6 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg index 9bdd52a6be..8d154bfc24 100644 --- a/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg +++ b/resources/quality/hms434/hms434_global_Coarse_Quality.inst.cfg @@ -4,12 +4,12 @@ name = Coarse definition = hms434 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -1 global_quality = True [values] layer_height = 0.4 -layer_height_0 = 0.4 +layer_height_0 = 0.2 diff --git a/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg deleted file mode 100644 index e997f8297f..0000000000 --- a/resources/quality/hms434/hms434_global_Extra_Coarse_Quality.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Extra Coarse -definition = hms434 - -[metadata] -setting_version = 7 -type = quality -quality_type = extra coarse -weight = -4 -global_quality = True - -[values] -layer_height = 0.6 -layer_height_0 = 0.6 diff --git a/resources/quality/hms434/hms434_global_High_Quality.inst.cfg b/resources/quality/hms434/hms434_global_High_Quality.inst.cfg index 4515c1199b..1474c518d7 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 = 11 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..c7b91a0809 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 = 11 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 deleted file mode 100644 index d6647df7a7..0000000000 --- a/resources/quality/hms434/hms434_global_Super_Coarse_Quality.inst.cfg +++ /dev/null @@ -1,16 +0,0 @@ -[general] -version = 4 -name = Super Coarse -definition = hms434 - -[metadata] -setting_version = 7 -type = quality -quality_type = super coarse -weight = -4 -global_quality = True - -[values] -layer_height = 0.8 -layer_height_0 = 0.8 - diff --git a/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg b/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg deleted file mode 100644 index 5640ca21cc..0000000000 --- a/resources/quality/hms434/hms434_global_Ultra_Coarse_Quality.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Ultra Coarse -definition = hms434 - -[metadata] -setting_version = 7 -type = quality -quality_type = ultra coarse -weight = -4 -global_quality = True - -[values] -layer_height = 1.0 -layer_height_0 = 1.0 diff --git a/resources/quality/hms434/pla/hms434_0.4_pla_high.inst.cfg b/resources/quality/hms434/pla/hms434_0.4_pla_high.inst.cfg new file mode 100644 index 0000000000..aeeccf9da9 --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.4_pla_high.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = High +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/hms434/pla/hms434_0.4_pla_normal.inst.cfg b/resources/quality/hms434/pla/hms434_0.4_pla_normal.inst.cfg new file mode 100644 index 0000000000..d4e4b9ac3d --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.4_pla_normal.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Normal +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/hms434/pla/hms434_0.8_pla_coarse.inst.cfg b/resources/quality/hms434/pla/hms434_0.8_pla_coarse.inst.cfg new file mode 100644 index 0000000000..d1ae12c6db --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.8_pla_coarse.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Coarse +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -1 +material = generic_pla +variant = 0.8mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/hms434/pla/hms434_0.8_pla_normal.inst.cfg b/resources/quality/hms434/pla/hms434_0.8_pla_normal.inst.cfg new file mode 100644 index 0000000000..253822d2b1 --- /dev/null +++ b/resources/quality/hms434/pla/hms434_0.8_pla_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = hms434 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.8mm TP extruder + +[values] + +wall_0_wipe_dist = 0.0 + +infill_overlap_mm = -0.1 +infill_sparse_thickness = =0.4 if infill_sparse_density < 90 else 0.2 +infill_wipe_dist = 0 + +default_material_print_temperature = 190 +material_standby_temperature = 160 +default_material_bed_temperature = 45 +build_volume_temperature = 43 +material_flow = 100 +retraction_amount = 1 +retraction_speed = 40 +retraction_prime_speed = 8 +retraction_extra_prime_amount = 0 +switch_extruder_retraction_amount = 2 + +speed_print = 50 +speed_infill = 42 + +support_infill_sparse_thickness = 0.4 + +coasting_volume = 0.05 +coasting_min_volume = 0.17 +coasting_speed = 100 diff --git a/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..243e144475 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 diff --git a/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_fine.inst.cfg new file mode 100644 index 0000000000..be9a0a7ab5 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_medium.inst.cfg new file mode 100644 index 0000000000..f17054be89 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PETG/jbo_generic_petg_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..4a2acb9194 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_fine.inst.cfg new file mode 100644 index 0000000000..894d5f9b80 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_medium.inst.cfg new file mode 100644 index 0000000000..6baa26ba95 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_ultrafine.inst.cfg new file mode 100644 index 0000000000..27761cf5f6 --- /dev/null +++ b/resources/quality/imade3d_jellybox/PLA/jbo_generic_pla_0.4_ultrafine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = UltraFine +definition = imade3d_jellybox + +[metadata] +setting_version = 11 +type = quality +quality_type = ultrahigh +weight = 2 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 55 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg deleted file mode 100644 index a9138ec70b..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_petg -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 60 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg deleted file mode 100644 index 227072b3a1..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_petg -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 40 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg deleted file mode 100644 index a8bcd8d4b0..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_petg -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 60 -cool_fan_speed_min = 20 -cool_min_layer_time = 7 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg deleted file mode 100644 index 7dd26b4f70..0000000000 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_petg -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 1.2 -cool_fan_speed_max = 40 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_bed_temperature = 50 -material_bed_temperature_layer_0 = 55 -material_flow = 100 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 25 -retraction_retract_speed = 35 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 25 -skirt_line_count = 2 -speed_layer_0 = =math.ceil(speed_print * 14 / 40) -speed_print = 40 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 20 / 40) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 40) -speed_wall_x = =math.ceil(speed_print * 35 / 40) -top_thickness = =top_bottom_thickness -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg deleted file mode 100644 index 055e804c9c..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 7 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg deleted file mode 100644 index 7909892c18..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = fast -weight = -1 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg deleted file mode 100644 index 979158fdcf..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ /dev/null @@ -1,54 +0,0 @@ -[general] -version = 4 -name = Fine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = high -weight = 1 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 205 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg deleted file mode 100644 index 8cc3108d0e..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ /dev/null @@ -1,54 +0,0 @@ -[general] -version = 4 -name = Fine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = high -weight = 1 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 205 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg deleted file mode 100644 index 5620ac43f8..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 7 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg deleted file mode 100644 index 4c6d81e643..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ /dev/null @@ -1,53 +0,0 @@ -[general] -version = 4 -name = Medium -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = normal -weight = 0 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg deleted file mode 100644 index 3eb99a52ea..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = UltraFine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = ultrahigh -weight = 2 -material = generic_pla -variant = 0.4 mm - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 50 -cool_min_layer_time = 5 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 202 -material_print_temperature_layer_0 = 210 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg deleted file mode 100644 index 4a044228c0..0000000000 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ /dev/null @@ -1,55 +0,0 @@ -[general] -version = 4 -name = UltraFine -definition = imade3d_jellybox - -[metadata] -setting_version = 7 -type = quality -quality_type = ultrahigh -weight = 2 -material = generic_pla -variant = 0.4 mm 2-fans - -[values] -adhesion_type = skirt -bottom_thickness = 0.6 -coasting_enable = True -coasting_speed = 95 -cool_fan_full_at_height = 0.65 -cool_fan_speed_max = 100 -cool_fan_speed_min = 20 -cool_min_layer_time = 4 -cool_min_layer_time_fan_speed_max = 10 -cool_min_speed = 10 -infill_before_walls = False -infill_line_width = 0.6 -infill_overlap = 15 -infill_pattern = zigzag -infill_sparse_density = 20 -line_width = 0.4 -material_flow = 90 -material_print_temperature = 202 -material_print_temperature_layer_0 = 210 -meshfix_union_all = False -retraction_amount = 1.3 -retraction_combing = all -retraction_hop_enabled = 0.1 -retraction_min_travel = 1.2 -retraction_prime_speed = 30 -retraction_retract_speed = 70 -retraction_speed = 70 -skin_no_small_gaps_heuristic = False -skirt_brim_minimal_length = 100 -skirt_brim_speed = 20 -skirt_line_count = 3 -speed_layer_0 = =math.ceil(speed_print * 20 / 45) -speed_print = 45 -speed_slowdown_layers = 1 -speed_topbottom = =math.ceil(speed_print * 25 / 45) -speed_travel = 120 -speed_travel_layer_0 = 60 -speed_wall = =math.ceil(speed_print * 25 / 45) -speed_wall_x = =math.ceil(speed_print * 35 / 45) -top_thickness = 0.8 -wall_thickness = 0.8 diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg index 62fe55a619..e16c7742a7 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -14,3 +14,64 @@ 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 +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..720ac1bc21 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 @@ -14,3 +14,64 @@ 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 +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..1b21e17bb0 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg @@ -4,7 +4,7 @@ name = Medium definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -14,3 +14,64 @@ 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 +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..5cc0d2891f 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg @@ -4,7 +4,7 @@ name = UltraFine definition = imade3d_jellybox [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultrahigh weight = 2 @@ -14,3 +14,64 @@ 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 +roofing_layer_count = 1 +skin_line_width = =line_width * 1.2 +skin_outline_count = 2 +skirt_brim_minimal_length = 100 +skirt_brim_speed = =speed_layer_0 +skirt_gap = 5 +skirt_line_count = 1 +speed_layer_0 = 20 +speed_roofing = 20 +speed_topbottom = 25 +speed_travel = =speed_print if magic_spiralize else 120 +speed_travel_layer_0 = 60 +support_angle = 60 +support_bottom_enable = False +support_bottom_height = 0 +support_connect_zigzags = False +support_enable = False +support_infill_rate = 20 +support_interface_density = 70 +support_interface_enable = True +support_interface_height = 2 +support_interface_pattern = concentric +support_interface_skip_height = 0.1 +support_type = everywhere +support_use_towers = False +support_xy_distance = 0.8 +support_xy_distance_overhang = =machine_nozzle_size / 2 +support_z_distance = 0.2 +travel_compensate_overlapping_walls_0_enabled = =travel_compensate_overlapping_walls_enabled +travel_compensate_overlapping_walls_x_enabled = =travel_compensate_overlapping_walls_enabled +travel_retract_before_outer_wall = True +wall_0_wipe_dist = =round(line_width * 1.2,1) +bridge_settings_enabled = True +bridge_enable_more_layers = False +bridge_skin_material_flow = 85 +bridge_skin_speed = 20 +bridge_wall_material_flow = 85 +bridge_wall_speed = 20 +infill_enable_travel_optimization = True +retraction_combing_max_distance = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..8ac8944f88 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 diff --git a/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_fine.inst.cfg new file mode 100644 index 0000000000..5e41452863 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_medium.inst.cfg new file mode 100644 index 0000000000..d06d3b23a2 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PETG/jb2_generic_petg_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_petg +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_coarse.inst.cfg new file mode 100644 index 0000000000..6b286623bb --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_coarse.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_fine.inst.cfg new file mode 100644 index 0000000000..4b998dc356 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_fine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 50 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_medium.inst.cfg new file mode 100644 index 0000000000..d4d18f8f65 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_medium.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 45 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_ultrafine.inst.cfg new file mode 100644 index 0000000000..7f0a6b9ec5 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/PLA/jb2_generic_pla_0.4_ultrafine.inst.cfg @@ -0,0 +1,15 @@ +[general] +version = 4 +name = UltraFine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = ultrahigh +weight = 2 +material = generic_pla +variant = 0.4 mm + +[values] +speed_print = 55 \ No newline at end of file diff --git a/resources/quality/imade3d_jellybox_2/jb2_global_coarse.inst.cfg b/resources/quality/imade3d_jellybox_2/jb2_global_coarse.inst.cfg new file mode 100644 index 0000000000..8480d89044 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_coarse.inst.cfg @@ -0,0 +1,77 @@ +[general] +version = 4 +name = Coarse +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.3 +layer_height_0 = 0.3 +retraction_hop = 0.2 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +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..35764ec9e6 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_fine.inst.cfg @@ -0,0 +1,77 @@ +[general] +version = 4 +name = Fine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.1 +layer_height_0 = 0.3 +retraction_hop = 0.1 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +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..984bdad44f --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_normal.inst.cfg @@ -0,0 +1,77 @@ +[general] +version = 4 +name = Medium +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.3 +retraction_hop = 0.2 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +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..dec5ec9af0 --- /dev/null +++ b/resources/quality/imade3d_jellybox_2/jb2_global_ultrafine.inst.cfg @@ -0,0 +1,77 @@ +[general] +version = 4 +name = UltraFine +definition = imade3d_jellybox_2 + +[metadata] +setting_version = 11 +type = quality +quality_type = ultrahigh +weight = 2 +global_quality = True + +[values] +adhesion_type = skirt +layer_height = 0.05 +layer_height_0 = 0.3 +retraction_hop = 0.1 +bottom_thickness = =top_bottom_thickness +coasting_enable = True +coasting_min_volume = 2 +coasting_volume = 0.032 +cool_fan_speed_max = =cool_fan_speed +infill_before_walls = False +infill_line_width = =round(line_width * 1.5, 2) +infill_pattern = zigzag +infill_sparse_density = 25 +line_width = =machine_nozzle_size +material_bed_temperature = =default_material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 5 +print_sequence = all_at_once +retract_at_layer_change = True +retraction_combing = noskin +retraction_hop_enabled = True +retraction_min_travel = =machine_nozzle_size * 3 +retraction_retract_speed = =retraction_speed +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/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index bda943ccb3..bb1769f8c6 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index 17a61de974..55db029539 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 310d93a32a..362cc83504 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index 4d738769b4..de39e22ab0 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index 55593d7bc2..c929956b8f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index a270353100..652341a51f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index 9efb3ccb63..3aae302798 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index 8c41234af8..988904aa87 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index 957d009be3..3c133a8127 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index 546572b2a6..9973e5102f 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_beta [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index 743cc19a20..bb405075de 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index ece0fa19c7..74af116d16 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index 71338c8c5f..1afe2ba8c0 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index 60066b5f28..4637bf63f6 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -4,7 +4,7 @@ name = Low definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index 42ded06db1..c3f64faa95 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = kemiq_q2_gama [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/key3d/key3d_tyro_best.inst.cfg b/resources/quality/key3d/key3d_tyro_best.inst.cfg new file mode 100644 index 0000000000..785dfe8df7 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_best.inst.cfg @@ -0,0 +1,128 @@ +[general] +version = 4 +name = Best Quality +definition = key3d_tyro + +[metadata] +setting_version = 11 +type = quality +quality_type = best +weight = 1 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 30 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.24 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.2 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/key3d/key3d_tyro_fast.inst.cfg b/resources/quality/key3d/key3d_tyro_fast.inst.cfg new file mode 100644 index 0000000000..8decbb2292 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_fast.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Fast Quality +definition = key3d_tyro + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +line_width = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 60 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.48 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/key3d/key3d_tyro_normal.inst.cfg b/resources/quality/key3d/key3d_tyro_normal.inst.cfg new file mode 100644 index 0000000000..84ea275cb4 --- /dev/null +++ b/resources/quality/key3d/key3d_tyro_normal.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Normal Quality +definition = key3d_tyro + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.24 +line_width = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 0 +material_bed_temperature = 0 +build_volume_temperature = 0 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 50 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.32 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.21 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/makeblock/makeblock_mcreate_pla_normal.inst.cfg b/resources/quality/makeblock/makeblock_mcreate_pla_normal.inst.cfg new file mode 100644 index 0000000000..661695cca0 --- /dev/null +++ b/resources/quality/makeblock/makeblock_mcreate_pla_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fine +definition = makeblock_mcreate + +[metadata] +setting_version = 6 +type = quality +quality_type = normal +weight = 0 +material = generic_pla + +[values] +default_material_print_temperature = 190 +material_initial_print_temperature = 190 +material_final_print_temperature = 185 +material_flow = 94 +retraction_speed = 55 +skirt_line_count = 2 +adhesion_type = skirt diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg index 6e430754cf..25481ea7fa 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg index 71af7efca1..849e9a8e14 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg index adc8128e6f..cd301fa6d1 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg index c66aec810e..df2bfb7c5f 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg index 9d8d46e5ca..f895959d5f 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg index 058fb2fa3c..bece1ed372 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg index 6cbd615d48..7001036579 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg index 5c4dfe8a86..254b3417d3 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg index dd99af5356..268ae42078 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg index 20ea357fba..d80d8f7729 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg index 5d6e1ed7b7..a3a32d2b94 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg index c573ba3eb2..21c366e594 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg index 9e9181b195..1a4f548493 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg index 54cec5c3f0..c2e61810fe 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg index d8aded3c63..26e50780e0 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg index 84a5bd316a..9c0d1b2b5a 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg index 6aad899773..2d29520e11 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg index 05917d9769..2f74aa7fd0 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg index e2fe95f8d8..1687a9c000 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg index 387a051d64..a4ec754aa4 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg index f659c78f80..a63eb6ff14 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg index 9e19c78b35..78619554f4 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg index 5ae85d1eef..d33000b5a5 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg index 627f70badb..b812efe72f 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg index 7f970601b7..41515712b9 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg index b4f5ea7388..3cf3b16ddf 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg index 7bc3141980..7eb8e0c243 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg index c7eb38439c..211a9a468d 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg index ce0604c7cc..c5a40f6aaf 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg index 5ef6b1027d..6c0ae88c8f 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg index 2a24855305..ecea3ff7dc 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg index 24c6c205fa..da8ab26e59 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = malyan_m200 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg index 7364bdaa36..be7fcfe2fd 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg index fd1e5b9a6a..39b9681972 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg index 836be1bad9..803a8ee4fb 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg index 30672cda4a..a58f96973e 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg index 1ef32bd44c..c489268671 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg index 9a2c26b034..ed3923dc6d 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg index d4bf86569b..8ee848931e 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg index b0f626bdaf..3216bb5d43 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg index 6e3de45b42..cb1fb5410f 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg index db7a7f891f..17907c13d9 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg index 145c1a2fd2..4abd8e1ead 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg index 3b264639ad..d96cc66962 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg index 030d82ec0f..5196ab1d89 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg index a075cd54a1..0668bba438 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg index 6846f451b1..461e5e8d18 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg index adee263981..28efd14dc9 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg index fd1cb1969e..e57e2d88c2 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg index 350ecb9e6c..d223d7b04c 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg index 661690da24..6bd2e8a61a 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg index b056628016..2485d59a6f 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg index 5fe909d1b8..0a1bdb4f16 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg index e423d179e0..49d9e3fa00 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg index 6e3dc051de..ba4ca120d9 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg index ca6bd27c56..7460d3fc67 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg index e33d685f11..2b7ea859c0 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg index e348f871b2..8c2e0a76c4 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg index 311c7b23f8..74240d304f 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg index 4c6f55d812..84d2b8c969 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg index 13e57bf86a..627f56ad70 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg index c2e07310d1..6c06171ff3 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg index 41bc8a8431..a21ad1a661 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg index 50b10e3078..838135b790 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg index 107dfc3d24..3ec00f3827 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg index 6e55583184..880de7b814 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg index f809902f60..2a91eaf649 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg index 770a51e1dd..9ea25f9128 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg index e2116bdd85..d8c6d51808 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg index ce902318f8..27bd5f1e09 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg index 6b5d2604d0..ed3a7040a2 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg index b777e97444..91396af2ae 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg index f1080c776c..c735c1e811 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg index 7b7525f007..e722129cf2 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg index d0bfe599a4..b0b9779a7e 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = Finer definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg index 07b08619d1..fa073e9e37 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg index 74a03b7cbc..b9cd2baecd 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg @@ -4,7 +4,7 @@ name = Lowest Quality Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -5 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg index fc3ec719d0..4c84206b7c 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = thickerdraft weight = -3 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg index 316c4a2d17..9c9baf5e3c 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Fine definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = ultra weight = 2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg index fbbefb9937..fd3e3dc8a9 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Low Detail Draft definition = monoprice_select_mini_v2 [metadata] -setting_version = 7 +setting_version = 11 type = quality material = generic_pla weight = 0 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index b8828f07e0..9c40ea3586 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = fdmprinter [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg new file mode 100644 index 0000000000..d5d2b5a3cf --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_best.inst.cfg @@ -0,0 +1,128 @@ + +[general] +version = 4 +name = Best Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = best +weight = 1 +global_quality = True + +[values] +layer_height = 0.08 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 30 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.24 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.2 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg new file mode 100644 index 0000000000..ea98b3df7b --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_e.inst.cfg @@ -0,0 +1,124 @@ +[general] +version = 4 +name = 0.6 Engineering Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = Engineering +weight = -2 +global_quality = True + +[values] +layer_height = 0.28 +layer_height_0 = 0.4 +line_width = 0.6 +wall_line_width_0 = 0.6 +initial_layer_line_width_factor = 100 +wall_thickness = 1.2 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 1.2 +top_layers = 5 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.15 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 1.2 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 40 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 40 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_layer = 3 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.34 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = .45 +support_roof_density = 45 +support_roof_pattern = grid +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg new file mode 100644 index 0000000000..a339d2c401 --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_fast.inst.cfg @@ -0,0 +1,128 @@ + +[general] +version = 4 +name = Fast Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.24 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 15 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 60 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.48 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =15 if support_enable else 0 if support_tree_enable else 15 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.3 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg b/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg new file mode 100644 index 0000000000..ada89f0fd5 --- /dev/null +++ b/resources/quality/nwa3d_a31/nwa3d_a31_normal.inst.cfg @@ -0,0 +1,127 @@ +[general] +version = 4 +name = Normal Quality +definition = nwa3d_a31 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.16 +layer_height_0 = 0.24 +line_width = 0.4 +wall_line_width_0 = 0.4 +initial_layer_line_width_factor = 100 +wall_thickness = 0.8 +wall_0_wipe_dist = 0.2 +roofing_layer_count = 1 +top_bottom_thickness = 0.6 +top_thickness = 0.8 +top_layers = 5 +bottom_thickness = 0.6 +bottom_layers = 3 +top_bottom_pattern = lines +top_bottom_pattern_0 = lines +wall_0_inset = 0 +optimize_wall_printing_order = False +outer_inset_first = False +alternate_extra_perimeter = False +travel_compensate_overlapping_walls_enabled = True +travel_compensate_overlapping_walls_0_enabled = True +travel_compensate_overlapping_walls_x_enabled = True +wall_min_flow = 0 +fill_perimeter_gaps = everywhere +filter_out_tiny_gaps = True +fill_outline_gaps = True +xy_offset = 0 +skin_no_small_gaps_heuristic = True +skin_outline_count = 1 +ironing_enabled = False +infill_sparse_density = 20 +zig_zaggify_infill = False +infill_multiplier = 1 +infill_wall_line_count = 0 +infill_overlap = 10 +skin_overlap = 5 +infill_wipe_dist = 0.1 +gradual_infill_steps = 0 +infill_before_walls = False +infill_support_enabled = False +max_skin_angle_for_expansion = 90 +material_diameter = 1.75 +default_material_print_temperature = 220 +material_print_temperature = 220 +material_print_temperature_layer_0 = 220 +material_initial_print_temperature = 220 +material_final_print_temperature = 220 +default_material_bed_temperature = 50 +material_bed_temperature = 50 +material_flow = 100 +retraction_enable = True +retract_at_layer_change = False +retraction_amount = 5 +retraction_speed = 45 +retraction_extra_prime_amount = 0 +retraction_min_travel = 0.8 +retraction_count_max = 90 +retraction_extrusion_window = 5 +limit_support_retractions = True +switch_extruder_retraction_amount = 16 +switch_extruder_retraction_speeds = 20 +speed_print = 50 +speed_travel = 150 +speed_layer_0 = 10 +speed_travel_layer_0 = 50 +speed_slowdown_layers = 2 +speed_equalize_flow_enabled = False +acceleration_enabled = False +acceleration_roofing = 3000 +jerk_enabled = False +retraction_combing = off +travel_retract_before_outer_wall = False +retraction_hop_enabled = False +cool_fan_enabled = True +cool_fan_speed = 100 +cool_fan_speed_0 = 0 +cool_fan_full_at_height = 0.32 +cool_lift_head = False +support_enable = True +support_type = everywhere +support_angle = 50 +support_pattern = grid +support_wall_count = 0 +zig_zaggify_support = False +support_infill_rate = =20 if support_enable else 0 if support_tree_enable else 20 +support_infill_angles = [0] +support_brim_enable = True +support_brim_line_count = 5 +support_z_distance = 0.21 +support_xy_distance = 0.7 +support_xy_distance_overhang = 0.2 +support_bottom_stair_step_height = 0.3 +support_bottom_stair_step_width = 5.0 +support_join_distance = 2.0 +support_offset = 0.2 +gradual_support_infill_steps = 0 +support_roof_enable = True +support_bottom_enable = False +support_roof_height = 0.45 +support_roof_density = 45 +support_roof_pattern = lines +support_fan_enable = False +support_use_towers = True +support_tower_diameter = 3 +support_tower_roof_angle = 65 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 3 +meshfix_union_all = True +meshfix_union_all_remove_holes = False +meshfix_extensive_stitching = False +meshfix_keep_open_polygons = False +multiple_mesh_overlap = 0.16 +carve_multiple_volumes = False diff --git a/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg b/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg index 59ac9942a1..0ba0ea8e16 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_best.inst.cfg @@ -4,7 +4,7 @@ name = Best Quality definition = nwa3d_a5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = best weight = 1 @@ -75,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,7 +95,7 @@ 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_angle = 0 +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 4998948525..e431a81667 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast Quality definition = nwa3d_a5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 @@ -75,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,7 +95,7 @@ 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_angle = 0 +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 c892ef9c1a..e7f37b9e41 100644 --- a/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg +++ b/resources/quality/nwa3d_a5/nwa3d_a5_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal Quality definition = nwa3d_a5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -75,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,7 +95,7 @@ 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_angle = 0 +support_infill_angles = [0] support_brim_enable = True support_brim_line_count = 5 support_z_distance = 0.21 diff --git a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg index dab819cc38..1264580e62 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_coarse.inst.cfg @@ -4,10 +4,11 @@ name = Coarse definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = 3 +global_quality = True [values] layer_height = 0.08 diff --git a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg index feb005e39c..57a545a620 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_draft.inst.cfg @@ -4,10 +4,11 @@ name = Draft definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 +global_quality = True [values] layer_height = 0.1 diff --git a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg index 46bd8f4a63..dd6bb0e1f0 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_extra_high.inst.cfg @@ -4,10 +4,11 @@ name = Extra High definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra_high weight = 0 +global_quality = True [values] layer_height = 0.02 diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index 2b951c6e4e..7b1e383217 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -4,10 +4,11 @@ name = High definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 +global_quality = True [values] layer_height = 0.04 diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index b965862a16..9a31c92f03 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -4,10 +4,11 @@ name = Normal definition = peopoly_moai [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 +global_quality = True [values] layer_height = 0.06 diff --git a/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_A.inst.cfg b/resources/quality/strateo3d/Standard_0.4/s3d_std0.4_ABS_A.inst.cfg index fa243ce947..045ac19af2 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index 2758c3714e..9f7faa10ec 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index 3928ddf541..922ea1dcc5 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index 8482d229ce..c4e7796054 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index fdddcfbdf5..3d011cf07a 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index 841c23b837..70df574c33 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index ff541e9c67..446073fd68 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index 291ea81dc8..e5189e4d4d 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index 7afac5304e..7b84cbf6ff 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index b1ad5d72ab..a269112f60 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index 822399fef6..d38c98e4b3 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index acad5e33e4..7dcdc92fd3 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index 503767b332..bb85e5b53f 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index 5b366651af..bbd2ffa3b3 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index 36080febc5..05598722aa 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index 633356b41a..2a2a0a3e66 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index 3dc67389b3..1415b96da7 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index 94d1f14c09..4087fab8c0 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index 7c31ab6b41..58710bfe71 100644 --- 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 @@ -4,7 +4,7 @@ name = A definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 1 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 index 67fb9d5dcb..0248d32e7a 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 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 index fbe0f733cc..825794fb10 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = -1 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 index e8a638130e..6c9cb15498 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index 9aafd905a0..c6a4da42b3 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index 99216e271e..ecd800eb86 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index d9426a5fab..ac040c2dc0 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index b6d253cae1..3df6d60828 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index 80caf07684..ca36070749 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index f8b58f5600..c38c2a18d8 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index a837a8f969..04e0a7394d 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index 92cba1ea19..6322f6872f 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index a1e04e4789..5d5a76e89c 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index e70d84ddd8..005cffdfbd 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index fe9d215acb..811475d645 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index 233ea10e27..2f361a1ddb 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index 26f0c64071..e83304bc15 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index 6aec7956b8..db8d7a1035 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index 852fbb8e0b..04153163c5 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index 4b3a6c1b6e..e9573d5287 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index 1bfeb7b1b9..437f875bab 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index 6deb9705ba..1e0a4b4a0e 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index 0758a59309..a7dc7feb05 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index 612b7a2af2..d495284200 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index 39371d86e8..a1b5602bea 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index 8d152328ad..2f2698e179 100644 --- 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 @@ -4,7 +4,7 @@ name = B definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 1 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 index 78483d0238..63de3ce548 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 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 index de5110ef46..55c6179f9f 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = -1 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 index e431ca45db..6145e67928 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 1 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 index 6f0970cd5d..131a6c23df 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = 0 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 index 52892f97e0..dee7591be2 100644 --- 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 @@ -4,7 +4,7 @@ name = E definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = e weight = -1 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 index 926096a7d9..fc155c078d 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 1 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 index b43eeb7864..0817651ab4 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = 0 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 index 4191e2723e..9c27246550 100644 --- 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 @@ -4,7 +4,7 @@ name = E definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = e weight = -1 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 index 27979f443a..6a421b5c21 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 1 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 index 871243e0fd..7ae6aaa11b 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = 0 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 index 39a61933c3..161501f672 100644 --- 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 @@ -4,7 +4,7 @@ name = E definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = e weight = -1 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 index dc308bcc5c..c81fada00a 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 1 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 index fc60c3670f..928d8b2c12 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = 0 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 index 45d89c6948..9d64536f3c 100644 --- 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 @@ -4,7 +4,7 @@ name = E definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = e weight = -1 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 index 5a0bf18760..af4ee9e13a 100644 --- 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 @@ -4,7 +4,7 @@ name = C definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 1 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 index 687afee84e..3a2f4c57a6 100644 --- 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 @@ -4,7 +4,7 @@ name = D definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = 0 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 index 034a7e0db4..5255c3feac 100644 --- 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 @@ -4,7 +4,7 @@ name = E definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = e weight = -1 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 index 7f29e29d88..396ac2580a 100644 --- 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 @@ -4,7 +4,7 @@ name = H definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = h weight = -1 diff --git a/resources/quality/strateo3d/s3d_global_A.inst.cfg b/resources/quality/strateo3d/s3d_global_A.inst.cfg index 69a9bedd9e..2dddad7e25 100644 --- a/resources/quality/strateo3d/s3d_global_A.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_A.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = a weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_B.inst.cfg b/resources/quality/strateo3d/s3d_global_B.inst.cfg index dbfd0c46f6..a08f6788a1 100644 --- a/resources/quality/strateo3d/s3d_global_B.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_B.inst.cfg @@ -4,7 +4,7 @@ name = Fine Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = b weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_C.inst.cfg b/resources/quality/strateo3d/s3d_global_C.inst.cfg index e167da5fdb..609a1b76ac 100644 --- a/resources/quality/strateo3d/s3d_global_C.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_C.inst.cfg @@ -4,7 +4,7 @@ name = High Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = c weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_D.inst.cfg b/resources/quality/strateo3d/s3d_global_D.inst.cfg index b1a00232ed..1496589bbe 100644 --- a/resources/quality/strateo3d/s3d_global_D.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_D.inst.cfg @@ -4,7 +4,7 @@ name = Medium Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = d weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_E.inst.cfg b/resources/quality/strateo3d/s3d_global_E.inst.cfg index ee2e45b511..a4891e96a7 100644 --- a/resources/quality/strateo3d/s3d_global_E.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_E.inst.cfg @@ -4,7 +4,7 @@ name = Low Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = e weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_F.inst.cfg b/resources/quality/strateo3d/s3d_global_F.inst.cfg index bc1bf264f3..d0093358d9 100644 --- a/resources/quality/strateo3d/s3d_global_F.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_F.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = f weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_G.inst.cfg b/resources/quality/strateo3d/s3d_global_G.inst.cfg index 634cebecf6..0f479ea02d 100644 --- a/resources/quality/strateo3d/s3d_global_G.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_G.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = g weight = 0 diff --git a/resources/quality/strateo3d/s3d_global_H.inst.cfg b/resources/quality/strateo3d/s3d_global_H.inst.cfg index ea1a751190..39b60dc75c 100644 --- a/resources/quality/strateo3d/s3d_global_H.inst.cfg +++ b/resources/quality/strateo3d/s3d_global_H.inst.cfg @@ -4,7 +4,7 @@ name = Ultra Coarse Quality definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = quality quality_type = h weight = 0 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index 250c3bd1d5..2095906bb0 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -4,10 +4,11 @@ name = Draft definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 +global_quality = True [values] brim_width = 4.0 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index 0dff2b94ca..45e16c8f6b 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -4,10 +4,11 @@ name = High definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 +global_quality = True [values] brim_width = 4.0 diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index e5b9290cad..a516bea4db 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -4,10 +4,11 @@ name = Normal definition = tevo_blackwidow [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 +global_quality = True [values] brim_width = 4.0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg index 2fa65465ff..715fef3853 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.2_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg index 9297c03ae6..f9d11d2edf 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.3_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg index f3a6a263a8..745a01c680 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg index 5bb1cde436..e88075ad65 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.4_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg index d83e4e6b4c..7f5d13685a 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_draft.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg index b3a9fc36c6..336beb7c81 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg index 6432b76d72..41593c73be 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.5_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg index 0c5a2c8a5d..1550b031d9 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_coarse.inst.cfg @@ -4,10 +4,10 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 material = generic_abs variant = 0.6mm diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg index bbc11d52a0..122db785b2 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg index 7ac4620015..f00b1195b6 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_extra_coarse.inst.cfg similarity index 82% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_coarse.inst.cfg rename to resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_extra_coarse.inst.cfg index 3653ff729a..59dec87610 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_extra_coarse.inst.cfg @@ -4,10 +4,10 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 material = generic_abs variant = 0.8mm diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg index 7b29215d51..89ee2fc506 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg index 439445ef85..3673398193 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_coarse.inst.cfg deleted file mode 100644 index 5b1d5ce3e6..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -material = generic_abs -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_draft.inst.cfg deleted file mode 100644 index e79205dc3f..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_draft.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = draft -weight = -2 -material = generic_abs -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_extra_coarse.inst.cfg deleted file mode 100644 index ba0a3cd096..0000000000 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_extra_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Extra Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = extra coarse -weight = -4 -material = generic_abs -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.2_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.2_flex_high.inst.cfg new file mode 100644 index 0000000000..aba14e2456 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.2_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.2mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.3_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.3_flex_high.inst.cfg new file mode 100644 index 0000000000..c37d942cee --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.3_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.3mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_high.inst.cfg new file mode 100644 index 0000000000..80f627c401 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.4mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_normal.inst.cfg new file mode 100644 index 0000000000..dc8db6e6b0 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.4_flex_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.4mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_draft.inst.cfg new file mode 100644 index 0000000000..0c3f978ec7 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_draft.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Draft +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_flex +variant = 0.5mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_high.inst.cfg new file mode 100644 index 0000000000..dce017bf69 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.5mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_normal.inst.cfg new file mode 100644 index 0000000000..b51fce46f8 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.5_flex_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.5mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_coarse.inst.cfg new file mode 100644 index 0000000000..58deb98ed6 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_coarse.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Draft +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -2 +material = tizyx_flex +variant = 0.6mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_high.inst.cfg new file mode 100644 index 0000000000..3255b1988d --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_high.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.6mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_normal.inst.cfg new file mode 100644 index 0000000000..d87a1eb1b9 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.6_flex_normal.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.6mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_extra_coarse.inst.cfg new file mode 100644 index 0000000000..ed69ca5853 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_extra_coarse.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Draft +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = extra coarse +weight = -2 +material = tizyx_flex +variant = 0.8mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 + diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_high.inst.cfg new file mode 100644 index 0000000000..429f324cae --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_high.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_flex +variant = 0.8mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_normal.inst.cfg new file mode 100644 index 0000000000..a6b68f71ef --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/flex/tizyx_evy_0.8_flex_normal.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_flex +variant = 0.8mm + +[values] +speed_infill = 25 +speed_layer_0 = 15 +speed_print = 30 +speed_topbottom = 25 +speed_wall_0 = 20 +speed_wall_x = 20 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg index 5ccbfc8ac3..6a9046dfbe 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.2_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg index 3f8e4ee63b..dd4f93de77 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.3_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg index 7514b8828b..5c5d66a2d4 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg index cbc8cf34fa..6639832138 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.4_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg index 31c17f31f3..648f98e0b6 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_draft.inst.cfg @@ -4,7 +4,7 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg index e5d69c80aa..178829c59e 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg index 828b2a7b83..df949c7608 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.5_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg index 1bdd2da466..3915ac4da9 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_coarse.inst.cfg @@ -4,10 +4,10 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 material = generic_petg variant = 0.6mm diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_draft.inst.cfg deleted file mode 100644 index bf1ecff90b..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_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 = 0.6mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg index 258f3a1b40..12620dfed0 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg index d6d0013fe7..902e35c303 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.6_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_coarse.inst.cfg deleted file mode 100644 index d1200760c0..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_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 = 0.8mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_extra_coarse.inst.cfg similarity index 75% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_extra_coarse.inst.cfg index 9446747467..a4f968b218 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_extra_coarse.inst.cfg @@ -4,9 +4,9 @@ name = Coarse definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = extra coarse weight = -2 material = generic_petg variant = 0.8mm diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg index 9cc1e992e1..a3e1d71b7d 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg index 87ffb204a0..9c7b75acf5 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_0.8_petg_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_coarse.inst.cfg deleted file mode 100644 index 1832dbf90d..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -material = generic_petg -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_draft.inst.cfg deleted file mode 100644 index 5c331d5d5f..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_draft.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = draft -weight = -2 -material = generic_petg -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_extra_coarse.inst.cfg b/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_extra_coarse.inst.cfg deleted file mode 100644 index f438db32af..0000000000 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_extra_coarse.inst.cfg +++ /dev/null @@ -1,15 +0,0 @@ -[general] -version = 4 -name = Extra Coarse -definition = tizyx_evy - -[metadata] -setting_version = 7 -type = quality -quality_type = extra coarse -weight = -4 -material = generic_petg -variant = 1.0mm - -[values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg index d277521cff..a4d5a4ca97 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.2_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg index cf47f42844..d6f24cd98a 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.3_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg index f7871f6d65..ba77e1c176 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg index 4610ee23b4..a4b72b28ca 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.4_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg index ec35a3757c..3d6b9be14c 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg index 58de6bb4a0..47bb027876 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg index 3673a5ee3b..d0830ce36d 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.5_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_coarse.inst.cfg similarity index 77% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_coarse.inst.cfg index 9765868619..b9da9bb7eb 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_coarse.inst.cfg @@ -4,9 +4,9 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = coarse weight = -2 material = generic_pla variant = 0.6mm diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg index 53887ab16e..15aa5a668c 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg index f9beaadd51..06126999df 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.6_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_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..dc7ec7c041 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_extra_coarse.inst.cfg @@ -4,11 +4,12 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = extra coarse weight = -2 material = generic_pla variant = 0.8mm [values] + diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg index 6e2dfecbef..a25e1ec686 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_high.inst.cfg @@ -4,7 +4,7 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg index 05c8ecaa53..ac14f6ead3 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_0.8_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_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/petg/tizyx_evy_1.0_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_high.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg index 250b3be05d..c7935ca08d 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.2_pla_bois_high.inst.cfg @@ -4,12 +4,11 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 -material = generic_petg -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.2mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_high.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg index 18ea58c1a8..1bd0d898ad 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.3_pla_bois_high.inst.cfg @@ -4,11 +4,11 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 -material = generic_pla -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.3mm [values] diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_high.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg index 001e03a182..42899c7bd4 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_high.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_high.inst.cfg @@ -4,12 +4,11 @@ name = High definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 -material = generic_abs -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.4mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_normal.inst.cfg similarity index 67% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_normal.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_normal.inst.cfg index b1d8837cc6..824b3734ca 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_1.0_abs_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.4_pla_bois_normal.inst.cfg @@ -4,12 +4,11 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 -material = generic_abs -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.4mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_draft.inst.cfg similarity index 66% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_draft.inst.cfg index 52efa5b8bb..bd0eb530b2 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_draft.inst.cfg @@ -4,11 +4,12 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 -material = generic_pla -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.5mm [values] + diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..7dcdcb77e1 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.5mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_normal.inst.cfg similarity index 67% rename from resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_normal.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_normal.inst.cfg index 8389757165..3607a7665a 100644 --- a/resources/quality/tizyx/tizyx_evy/petg/tizyx_evy_1.0_petg_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.5_pla_bois_normal.inst.cfg @@ -4,12 +4,11 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 -material = generic_petg -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.5mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_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/abs/tizyx_evy_0.6_abs_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_coarse.inst.cfg index 361aba7d6a..3048d47bb8 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.6_abs_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_coarse.inst.cfg @@ -1,15 +1,14 @@ [general] version = 4 -name = Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = coarse weight = -2 -material = generic_abs +material = tizyx_pla_bois variant = 0.6mm [values] - diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..0b1ede986d --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.6mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_normal.inst.cfg similarity index 67% rename from resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_normal.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_normal.inst.cfg index b814c59b0f..a6d86d740b 100644 --- a/resources/quality/tizyx/tizyx_evy/pla/tizyx_evy_1.0_pla_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.6_pla_bois_normal.inst.cfg @@ -4,11 +4,11 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 -material = generic_pla -variant = 1.0mm +material = tizyx_pla_bois +variant = 0.6mm [values] diff --git a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_draft.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_extra_coarse.inst.cfg similarity index 55% rename from resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_draft.inst.cfg rename to resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_extra_coarse.inst.cfg index 4c9de95353..ab070ac404 100644 --- a/resources/quality/tizyx/tizyx_evy/abs/tizyx_evy_0.8_abs_draft.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_extra_coarse.inst.cfg @@ -1,14 +1,14 @@ [general] version = 4 -name = Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality -quality_type = draft +quality_type = extra coarse weight = -2 -material = generic_abs +material = tizyx_pla_bois variant = 0.8mm [values] diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..4627e7ba11 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_high.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = High +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = 0.8mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_normal.inst.cfg new file mode 100644 index 0000000000..f59f44e7b8 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy/pla_bois/tizyx_evy_0.8_pla_bois_normal.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_pla_bois +variant = 0.8mm + +[values] diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg index 2cca0b9225..5ce785d9e8 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Coarse_Quality.inst.cfg @@ -1,15 +1,45 @@ [general] version = 4 -name = Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse -weight = -3 +weight = -2 global_quality = True [values] -layer_height = 0.4 -layer_height_0 = =layer_height \ No newline at end of file +layer_height = 0.3 +layer_height_0 = =layer_height +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg index d88a6c95a3..ab921bd8b1 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 @@ -12,4 +12,34 @@ global_quality = True [values] layer_height = 0.25 -layer_height_0 = =layer_height \ No newline at end of file +layer_height_0 = =layer_height +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg index 8e34a42f62..97117f2f0c 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Extra_Coarse_Quality.inst.cfg @@ -1,15 +1,45 @@ [general] version = 4 -name = Extra Coarse +name = Draft definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse -weight = -4 +weight = -2 global_quality = True [values] -layer_height = 0.5 -layer_height_0 = =layer_height \ No newline at end of file +layer_height = 0.4 +layer_height_0 = =layer_height +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg index 160af128ce..0549e622a7 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_High_Quality.inst.cfg @@ -12,4 +12,34 @@ global_quality = True [values] layer_height = 0.1 -layer_height_0 = 0.1 \ No newline at end of file +layer_height_0 = 0.1 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg index dd4a262fbf..e62b244a5f 100644 --- a/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg +++ b/resources/quality/tizyx/tizyx_evy/tizyx_evy_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = tizyx_evy [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 @@ -12,4 +12,34 @@ global_quality = True [values] layer_height = 0.2 -layer_height_0 = 0.25 \ No newline at end of file +layer_height_0 = 0.25 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +retraction_amount = 5 +retraction_speed = 60 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/abs/tizyx_evy_dual_classic_abs_high.inst.cfg index 0f1f26af8b..e586f673a7 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 = 11 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..b6e44fbb6b 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 = 11 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..d14e24e025 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 = 11 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..42955af482 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 = 11 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..1a704f0afd --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_flex +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex_only.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex_only.inst.cfg new file mode 100644 index 0000000000..5aa9062813 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_classic_flex_flex_only.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Flex Only +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -3 +material = tizyx_flex +variant = Classic Extruder + +[values] +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex.inst.cfg new file mode 100644 index 0000000000..ded1436eb0 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_flex +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex_only.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex_only.inst.cfg new file mode 100644 index 0000000000..d5cf141bb3 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/flex/tizyx_evy_dual_direct_drive_flex_flex_only.inst.cfg @@ -0,0 +1,16 @@ +[general] +version = 4 +name = Flex Only +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -3 +material = tizyx_flex +variant = Direct Drive + +[values] +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 diff --git a/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/petg/tizyx_evy_dual_classic_petg_high.inst.cfg index 7f15b3428e..83d2b2991a 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 = 11 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..328578e51c 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 = 11 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..7e45c7ce40 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 = 11 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..1434496ea3 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 = 11 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..8c47258ade 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 = 11 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..aa7c5696b8 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 = 11 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..91a63416bf 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 = 11 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..a712eddc43 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 = 11 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..cb9d2eb965 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_classic_pla_pva.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_flex.inst.cfg index 42520b06e1..e35606b039 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 = 11 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..a0aec72143 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 = 11 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..70981c0dbf 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 = 11 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..caf360e2a7 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 = 11 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..ffcfa69bcf --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla/tizyx_evy_dual_direct_drive_pla_pva.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_flex.inst.cfg new file mode 100644 index 0000000000..72106f3e17 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_flex.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pla_bois +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..a4c371a444 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_high.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_normal.inst.cfg new file mode 100644 index 0000000000..e7297bf3ca --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_classic_pla_bois_normal.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_pla_bois +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_flex.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_flex.inst.cfg new file mode 100644 index 0000000000..8aa2016d38 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_flex.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Flex and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pla_bois +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_high.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_high.inst.cfg new file mode 100644 index 0000000000..b93e3b8d93 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_high.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = High +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = tizyx_pla_bois +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 diff --git a/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_normal.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_normal.inst.cfg new file mode 100644 index 0000000000..2af5836864 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pla_bois/tizyx_evy_dual_direct_drive_pla_bois_normal.inst.cfg @@ -0,0 +1,30 @@ +[general] +version = 4 +name = Normal +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = tizyx_pla_bois +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_classic_pva_pva.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_classic_pva_pva.inst.cfg new file mode 100644 index 0000000000..17fe67aebf --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_classic_pva_pva.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pva +variant = Classic Extruder + +[values] +cool_fan_speed_0 = 100 +cool_min_layer_time = 10 +default_material_print_temperature = 210 +fill_outline_gaps = True +infill_angles = [] +infill_sparse_density = 15 +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 100 +prime_tower_min_volume = 80 +prime_tower_wipe_enabled = False +retract_at_layer_change = True +retraction_enable = True +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +retraction_min_travel = 2 +skin_angles = [] +skirt_line_count = 2 +speed_print = 60 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +switch_extruder_retraction_amount = 100 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_direct_drive_pva_pva.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_direct_drive_pva_pva.inst.cfg new file mode 100644 index 0000000000..f8d8d32be4 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/pva/tizyx_evy_dual_direct_drive_pva_pva.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = tizyx_pva +variant = Direct Drive + +[values] +default_material_print_temperature = 210 +infill_angles = [] +material_final_print_temperature = 210 +material_initial_print_temperature = 210 +material_standby_temperature = 210 +prime_tower_flow = 110 +prime_tower_min_volume = 50 +prime_tower_wipe_enabled = True +retract_at_layer_change = True +retraction_enable = True +retraction_extra_prime_amount = 0 +retraction_hop_enabled = True +retraction_hop_only_when_collides = False +speed_print = 30 +skirt_brim_minimal_length = 100 +switch_extruder_retraction_amount = 72 +switch_extruder_retraction_speeds = 70 \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.CFG b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.CFG deleted file mode 100644 index 9dd69c246a..0000000000 --- a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.CFG +++ /dev/null @@ -1,30 +0,0 @@ -[general] -version = 4 -name = Flex Only -definition = tizyx_evy_dual - -[metadata] -setting_version = 7 -type = quality -quality_type = coarse -weight = -3 -global_quality = True - -[values] -layer_height = 0.2 -layer_height_0 = 0.25 -adhesion_extruder_nr = 1 -adhesion_type = skirt -skirt_line_count = 2 -skirt_gap = 2 -fill_outline_gaps = True -infill_sparse_density = 15 -retraction_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 diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg new file mode 100644 index 0000000000..a33ddab225 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Only_Quality.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Flex Only +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = coarse +weight = -3 +global_quality = True + +[values] +layer_height = 0.2 +layer_height_0 = 0.25 +adhesion_extruder_nr = 1 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +retraction_min_travel = 2 +speed_print = 30 +speed_topbottom = 50 +speed_wall_0 = 40 +top_layers = 4 +wall_line_count = 2 +cool_min_layer_time = 11 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True diff --git a/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_Flex_Quality.inst.cfg index f2e8e574b6..cd0a9e24c9 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 = 11 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..ff62bfff48 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 = 11 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..f69a6f272d 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 = 11 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..8d8c016991 --- /dev/null +++ b/resources/quality/tizyx/tizyx_evy_dual/tizyx_evy_dual_global_PVA_Quality.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = PVA and PLA +definition = tizyx_evy_dual + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +global_quality = True + +[values] +adhesion_extruder_nr = 0 +adhesion_type = skirt +layer_height = 0.2 +layer_height_0 = 0.25 +prime_tower_enable = True +prime_tower_position_x = 127.5 +prime_tower_position_y = =math.ceil(250-prime_tower_size) +prime_tower_size = 35 +prime_tower_flow = 110 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +support_enable = True +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True +retraction_hop_enabled = False \ No newline at end of file diff --git a/resources/quality/tizyx/tizyx_k25/tizyx_k25_high.inst.cfg b/resources/quality/tizyx/tizyx_k25/tizyx_k25_high.inst.cfg new file mode 100644 index 0000000000..e7382081ce --- /dev/null +++ b/resources/quality/tizyx/tizyx_k25/tizyx_k25_high.inst.cfg @@ -0,0 +1,41 @@ +[general] +version = 4 +name = High +definition = tizyx_k25 + +[metadata] +quality_type = draft +setting_version = 11 +type = quality +global_quality = True + +[values] +layer_height = 0.1 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True diff --git a/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg b/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg index 1a09737baa..1f8cf0cf57 100644 --- a/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg +++ b/resources/quality/tizyx/tizyx_k25/tizyx_k25_normal.inst.cfg @@ -1,27 +1,41 @@ -[general] -version = 4 -name = TiZYX K25 Normal -definition = tizyx_k25 - -[metadata] -quality_type = normal -setting_version = 7 -type = quality -global_quality = True - -[values] -adhesion_type = skirt -skirt_line_count = 2 -skirt_gap = 2 -fill_outline_gaps = True -infill_sparse_density = 15 -material_diameter = 1.75 -retraction_amount = 2.5 -retraction_min_travel = 2 -retraction_speed = 30 -speed_print = 60 -speed_topbottom = 50 -speed_wall_0 = 40 -top_layers = 4 -wall_line_count = 2 -cool_min_layer_time = 11 +[general] +version = 4 +name = Normal +definition = tizyx_k25 + +[metadata] +quality_type = normal +setting_version = 11 +type = quality +global_quality = True + +[values] +layer_height = 0.2 +initial_layer_line_width_factor = 90 +infill_overlap = 15 +material_flow_layer_0 = 93 +material_flow = 99 +speed_wall_0 = 45 +speed_wall_x = 50 +speed_topbottom = 45 +support_enable= True +support_angle = 70 +adhesion_type = skirt +skirt_line_count = 2 +skirt_gap = 2 +fill_outline_gaps = True +infill_sparse_density = 15 +material_diameter = 1.75 +retraction_min_travel = 2 +speed_print = 60 +cool_fan_speed_0 = 10 +cool_min_layer_time = 12 +layer_start_x = 250 +layer_start_y = 250 +coasting_enable = False +wall_line_count = 2 +material_print_temperature = =default_material_print_temperature +material_initial_print_temperature = =material_print_temperature +material_final_print_temperature = =material_print_temperature +z_seam_corner = z_seam_corner_none +optimize_wall_printing_order = True diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index 121f6f0404..5d204ad6c8 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -4,7 +4,7 @@ name = Draft definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 8dc9b56082..5acafb8944 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 5bb17480b6..d6f830154e 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index 1235fe27db..cdea639581 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index 544deae3a2..413f4d7702 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index f32deec07a..94074f291c 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 8c50d00108..78c39509c1 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index e2edba3039..fd7b54f99f 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index 170ccb06b2..d29242d8a6 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index 1b5bb17054..68dac9be64 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index b2e7e246d5..2b2cc4ce46 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index 13d2593e5f..746c9c5840 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index 7269389352..68f73aae10 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index 5713c9202f..4863ef4545 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 7ccbadb29d..9a99c1cd45 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index 0c961f2dc3..b69ab9ac8f 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index 590e2c4ff0..187be43c5d 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index a545dd9217..f74b587abe 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 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..e6542ca6a4 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 79eb50c3fa..ae6440eecc 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index 35e6644a07..91f961a00a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index ec300d3aad..85f62ad167 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index 85c0199afd..066b5f4201 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 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 44bba4b31a..826aa6c719 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 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 a8d23e44e2..56a57ca6a7 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -2 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 d357268ddb..235f89d110 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 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 e2bd504105..8c6529e5f1 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -2 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 67afe33eae..06fe250c8b 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg index 9cfbefa641..9359fd513c 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -4 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg index 1f4f9af746..51abb6bded 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg index 0aba820d7e..fb79676eab 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extracoarse weight = -3 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg index 29e649ffe0..33e8f76f4c 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg index 12f449fbd1..d9c818efa0 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg index 908d0e42ab..52231dff2a 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg b/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg index 02de795579..a43bc002a7 100644 --- a/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_global_Slightly_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -4 diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index fc90b2b6e9..add3690889 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 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 42b5bfc3c9..36604404b0 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 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 347e613811..f059cbcfc4 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 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 44d25a9301..789bacc98b 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 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 926bc4ab74..2bd0449056 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -1 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 6682e1c592..2730eb0a10 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 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 9ebbd2bc90..06c4c322b5 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -2 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 d84afd92cb..6c85e3e016 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 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 ebbf156286..7c5fbc1327 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 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 025f653e3f..87ba3e4ea5 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 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 71cef62f9d..b85fc8d3ff 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -1 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 de171408c4..3b314652f6 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 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 5c0b67f0e7..152932aaab 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -1 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 54b1488bc6..578b7ca970 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 0 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 04a21a1571..3158c79215 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extracoarse weight = -2 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 78c71ef4ff..a3a349e20e 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = 0 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..fb9423cd5d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index afe476adec..dd5c1facf9 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 7cec6b1bd1..07532c8684 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index 614bfbafcd..eb4c8d648b 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index c76e73990b..7d85dd3f2d 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index e570aafe07..1dddebe52e 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = slightlycoarse weight = -3 diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index 1ac5dedc81..4a659118b1 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 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 07b90ad10a..745c9e3057 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 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 736c42d294..a5e5d3e563 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg index fc56bc41e5..c234b2eab7 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg index c2a687a4d6..d95e6c38d8 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg index 8194d1a510..1020c5c0c0 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index fb8212a4a0..cd8ea78856 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg index 39416d4bb1..b57b3b12f6 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index e6b10560c3..c0d17827ef 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg index c83d3a1f49..480b807b39 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 150be3bdcd..f5e27c3773 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index f9d1110512..a392bd078f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 40229c1307..7705e1e456 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index df13a81211..679866fcbd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index 37c4f1effe..7a241cb1df 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 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 be88b3bcec..7780c8a77d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 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 46885141b7..c516a9c8c8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 37801626bd..52a9aa0ae2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 4bf87820fb..d1e0be55ce 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index cbb3085d85..2d7b4e3546 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index ed87e6d4ed..efa613a1b6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index 1a15755577..69323dbea1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index 2cba7b1ccf..1299e53e48 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index e927a79c10..a5a6af1345 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index d9a7649123..a0bc0d4798 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 0139970339..37c533eeb6 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 094a7c0ff5..f0551cc600 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 8bb0002b84..7d84ba00d9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index f7c733c212..48aab6f43b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index e6ac6a7cb6..a71d0082ce 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index e50cd7fc02..2b2f354c34 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index 5f837fce0e..4f589780a2 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index ccba414b57..d6b5ad0a09 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index e4cbb6ed35..e720379c7f 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 96d1a3436a..db8836e5c0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index a7d5fa0586..4cdc312bc0 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index bb6b6cb06c..a1c7f2b052 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 6ca1e6fe3e..ac7a8a89ac 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index e34a8ba625..06067b0e23 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index d363667af7..530f808781 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg index 4efb7d9e78..6352c0ed6c 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg index d461a3187e..e0f4555542 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg index b451c22489..35c913b632 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 0a3bd45c38..9e5cff3bb8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 42adf63e8c..a992a45fa1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index a5804ad2e1..d3516ddbbe 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index 051b5bba36..e7fe9b9806 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index dcbe8ca1b0..8f0cabd172 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 1a0c746b20..9fbcb71400 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index add4025786..bc3753ccbb 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 654447e5dc..eaf9a6a1be 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 86d145cf39..caf848d3b8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index 243bf8f437..f4c88589ea 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index 78362aa1d8..d247a83ada 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index 44f254b613..7b2ea92d15 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index be1245b58a..650cc6f9df 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index 9d15b69dbc..1a478c059d 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index d2b22cd418..eab56a450f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index 4e9c8c9376..b88d4e8ead 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 69661c91b6..b11159c1da 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index 1fefa5a141..ae94345be3 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index d8133eee5f..b440194ec4 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index 35b675fd10..c1e3b8c676 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index fed141f8e9..7a2dd4c5e8 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index a6fe2c9e8e..ecba4281cf 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index bd2a09c3cc..d347234919 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index 68765f839b..54f1852a40 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg index 2224917fc1..ea4dcf5080 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg index e4b3355579..d7c9b1d9b0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg index 026372156c..9aa048bef6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index d30a6db38c..d5f2c0f07e 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index 28fffe945a..c14469f466 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 35bc994931..b051efa442 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index a99a0abdf5..ba8cc414bf 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 4fd5c14f5d..31e2d91748 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 6d80217cd5..fc7932fa59 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 8068af6f22..6c26838173 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index 090baba2c8..a8a79c0c17 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 47a82e01a3..1d5fad0050 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index a8d0e494cb..623c7e3b26 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index 936406fce6..06c764547c 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 14b214da5a..b2fc9ce2fb 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index b9c2c19d8c..91e505486e 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index ab9127f26d..464d7141cd 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index 36d9f932f1..d1be77e8be 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index 3eaf8191a2..f398364bc2 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg index 2ebfb1e2c7..248cd595c0 100644 --- a/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Coarse Quality definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = coarse weight = -3 diff --git a/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg index b246ba12ea..9ea0b4314f 100644 --- a/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Draft Quality definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg index da8c6a9b39..d77dba8678 100644 --- a/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Extra_Coarse_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Coarse Quality definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extra coarse weight = -4 diff --git a/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg index db03a7f18c..d446fda6a1 100644 --- a/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg index ec1b593f7e..6f2add164b 100644 --- a/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg index 9b39c97682..07832b5d21 100644 --- a/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_original/umo_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_original [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..56b1f0d5d7 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_abs +variant = AA 0.25 + +[values] +cool_fan_speed = 40 +infill_overlap = 15 +material_final_print_temperature = =material_print_temperature - 5 +retraction_prime_speed = 25 +speed_topbottom = =math.ceil(speed_print * 30 / 55) +wall_thickness = 0.92 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..dd4dc55af8 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_cpe +variant = AA 0.25 + +[values] +retraction_combing_max_distance = 50 +retraction_extrusion_window = 0.5 +speed_infill = =math.ceil(speed_print * 40 / 55) +speed_topbottom = =math.ceil(speed_print * 30 / 55) +top_bottom_thickness = 0.8 +wall_thickness = 0.92 \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..00b4eb77e8 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = AA 0.25 + +[values] +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 3) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +retraction_min_travel = 5 +skin_overlap = 50 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..c414f76f8c --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PC_Normal_Quality.inst.cfg @@ -0,0 +1,55 @@ +[general] +version = 4 +name = Fine - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pc +variant = AA 0.25 +is_experimental = True + +[values] +acceleration_enabled = True +acceleration_print = 4000 +adhesion_type = brim +brim_width = 20 +cool_fan_full_at_height = =layer_height_0 + layer_height +cool_fan_speed_max = 50 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 5 +infill_line_width = =line_width +infill_pattern = triangles +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +machine_min_cool_heat_time_window = 15 +multiple_mesh_overlap = 0 +ooze_shield_angle = 40 +prime_tower_enable = True +prime_tower_wipe_enabled = True +raft_airgap = 0.25 +raft_interface_thickness = =max(layer_height * 1.5, 0.225) +retraction_count_max = 80 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 15 +skin_overlap = 30 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) +speed_print = 50 +speed_topbottom = =math.ceil(speed_print * 25 / 50) +speed_wall = =math.ceil(speed_print * 40 / 50) +speed_wall_0 = =math.ceil(speed_wall * 25 / 40) +support_bottom_distance = =support_z_distance +support_interface_density = 87.5 +support_interface_pattern = lines +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..ac5e475d96 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = AA 0.25 + +[values] +brim_width = 8 +cool_fan_full_at_height = =layer_height_0 +cool_min_speed = 10 +infill_overlap = 10 +infill_pattern = grid +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = 190 +retraction_hop = 0.2 +skin_overlap = 5 +speed_layer_0 = =speed_print +speed_print = 30 +speed_travel_layer_0 = 120 +speed_wall = =math.ceil(speed_print * 25 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +top_bottom_thickness = 0.72 +travel_avoid_distance = 0.4 +wall_0_inset = 0.015 +wall_0_wipe_dist = 0.25 +wall_thickness = 0.7 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..f3a67dfef4 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_PP_Normal_Quality.inst.cfg @@ -0,0 +1,59 @@ +[general] +version = 4 +name = Fine - Experimental +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pp +variant = AA 0.25 +is_experimental = True + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 10 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 5 +cool_min_speed = 2.5 +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_pattern = tetrahedral +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.92 +machine_min_cool_heat_time_window = 15 +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_print_temperature = =default_material_print_temperature - 15 +material_print_temperature_layer_0 = =material_print_temperature + 3 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_size = 16 +prime_tower_wipe_enabled = True +retraction_count_max = 6 +retraction_extra_prime_amount = 0.2 +retraction_extrusion_window = 6.5 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = 0.8 +retraction_prime_speed = 13 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 15 / 25) +speed_print = 25 +speed_travel_layer_0 = 50 +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 1 +travel_avoid_distance = 3 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = =line_width * 3 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..b27ae99a44 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tough_pla +variant = AA 0.25 + +[values] +brim_width = 8 +cool_fan_full_at_height = =layer_height_0 +cool_min_speed = 7 +infill_line_width = =line_width +infill_overlap = 10 +infill_pattern = grid +line_width = =machine_nozzle_size * 0.92 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature - 15 +skin_overlap = 5 +speed_layer_0 = =math.ceil(speed_print * 30 / 30) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) +speed_travel_layer_0 = 120 +speed_wall = =math.ceil(speed_print * 25 / 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +top_bottom_thickness = 0.72 +wall_0_inset = 0.015 +wall_0_wipe_dist = 0.25 +wall_line_width = =line_width +wall_line_width_x= =line_width +wall_thickness = 0.7 + diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg similarity index 78% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg index 6222dcdc7b..baa277c543 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] machine_nozzle_cool_down_speed = 0.85 @@ -21,7 +20,7 @@ material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) @@ -30,7 +29,3 @@ wall_thickness = 1 infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 50 / 60) -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg similarity index 77% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg index 2bf17429fa..fda1c9ee96 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 7 @@ -21,7 +20,7 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) @@ -29,7 +28,3 @@ speed_wall_0 = =math.ceil(speed_wall * 30 / 40) infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 45 / 60) -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg similarity index 76% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg index 7d7f4b2aaa..b65479ab74 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 12 @@ -21,14 +20,10 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 40 / 50) -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg similarity index 75% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg index 6d78d9d027..d4215be488 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_abs variant = AA 0.4 -buildplate = Aluminum [values] machine_nozzle_cool_down_speed = 0.85 @@ -20,15 +19,9 @@ material_initial_print_temperature = =material_print_temperature - 15 material_final_print_temperature = =material_print_temperature - 20 prime_tower_enable = False speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) infill_line_width = =round(line_width * 0.4 / 0.35, 2) speed_infill = =math.ceil(speed_print * 40 / 55) - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.17 - diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Draft_Print.inst.cfg new file mode 100644 index 0000000000..eab9ac6fe5 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Draft_Print.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_bam +variant = AA 0.4 + +[values] +brim_replaces_support = False +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 50 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 +support_brim_enable = True +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Fast_Print.inst.cfg new file mode 100644 index 0000000000..582c51456b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Fast_Print.inst.cfg @@ -0,0 +1,39 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_bam +variant = AA 0.4 + +[values] +brim_replaces_support = False +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +speed_print = 80 +speed_layer_0 = =math.ceil(speed_print * 20 / 80) +speed_topbottom = =math.ceil(speed_print * 30 / 80) +speed_wall = =math.ceil(speed_print * 40 / 80) +speed_wall_0 = =math.ceil(speed_wall * 30 / 40) +top_bottom_thickness = 1 +wall_thickness = 1 +support_brim_enable = True +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..7f3bfba927 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_bam +variant = AA 0.4 + +[values] +brim_replaces_support = False +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 10 +# prime_tower_enable: see CURA-4248 +prime_tower_enable = =min(extruderValues('material_surface_energy')) < 100 +skin_overlap = 10 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +support_brim_enable = True +support_interface_enable = True +support_interface_density = =min(extruderValues('material_surface_energy')) +support_interface_pattern = ='lines' if support_interface_density < 100 else 'concentric' +support_top_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 1) * layer_height +support_bottom_distance = =math.ceil(min(extruderValues('material_adhesion_tendency')) / 2) * layer_height +support_angle = 45 +support_join_distance = 5 +support_offset = 2 +support_pattern = triangles +support_infill_rate = =10 if support_enable else 0 if support_tree_enable else 10 +top_bottom_thickness = 1 +wall_thickness = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg index c02317792c..3af449ee69 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -36,7 +35,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_print = 50 speed_topbottom = =math.ceil(speed_print * 40 / 50) @@ -47,8 +46,3 @@ support_z_distance = =layer_height wall_0_inset = 0 wall_thickness = 1 -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 - diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg index 57be60501c..7f553837a9 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -36,7 +35,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) speed_print = 45 speed_topbottom = =math.ceil(speed_print * 35 / 45) @@ -45,8 +44,3 @@ speed_wall_0 = =math.ceil(speed_wall * 35 / 45) support_bottom_distance = =support_z_distance support_z_distance = =layer_height wall_0_inset = 0 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg index 44235b30eb..b311bce56b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -38,7 +37,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) @@ -47,9 +46,3 @@ speed_wall_0 = =math.ceil(speed_wall * 30 / 35) support_bottom_distance = =support_z_distance support_z_distance = =layer_height wall_0_inset = 0 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 - diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg similarity index 85% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg index a0b5af8679..41db72ae39 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_cpe_plus variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -38,7 +37,7 @@ retraction_hop = 0.2 retraction_hop_enabled = False retraction_hop_only_when_collides = True skin_overlap = 20 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 40) speed_print = 40 speed_topbottom = =math.ceil(speed_print * 30 / 35) @@ -47,8 +46,3 @@ speed_wall_0 = =math.ceil(speed_wall * 30 / 35) support_bottom_distance = =support_z_distance support_z_distance = =layer_height wall_0_inset = 0 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg similarity index 75% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg index 52f22f807f..ff8c914e34 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] material_print_temperature = =default_material_print_temperature + 10 @@ -19,7 +18,7 @@ material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 skin_overlap = 20 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 35 / 60) speed_wall = =math.ceil(speed_print * 45 / 60) speed_wall_0 = =math.ceil(speed_wall * 35 / 45) @@ -28,8 +27,3 @@ wall_thickness = 1 infill_pattern = triangles speed_infill = =math.ceil(speed_print * 50 / 60) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg similarity index 69% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg index 117a9e0273..fda0cad78a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 7 @@ -19,15 +18,10 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 speed_print = 60 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 60) speed_topbottom = =math.ceil(speed_print * 30 / 60) speed_wall = =math.ceil(speed_print * 40 / 60) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) infill_pattern = triangles -speed_infill = =math.ceil(speed_print * 50 / 60) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 +speed_infill = =math.ceil(speed_print * 50 / 60) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg similarity index 70% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg index d25ab9f605..4b438a1b41 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] cool_min_speed = 12 @@ -21,14 +20,9 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 speed_print = 50 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 30 / 50) infill_pattern = triangles -speed_infill = =math.ceil(speed_print * 40 / 50) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 +speed_infill = =math.ceil(speed_print * 40 / 50) \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg similarity index 67% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg index bafc867d14..e35e75ccb7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_cpe variant = AA 0.4 -buildplate = Aluminum [values] machine_nozzle_cool_down_speed = 0.85 @@ -19,14 +18,9 @@ material_initial_print_temperature = =material_print_temperature - 5 material_final_print_temperature = =material_print_temperature - 10 retraction_combing_max_distance = 50 speed_print = 55 -speed_layer_0 = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 55) speed_topbottom = =math.ceil(speed_print * 30 / 55) speed_wall = =math.ceil(speed_print * 30 / 55) infill_pattern = triangles -speed_infill = =math.ceil(speed_print * 45 / 55) - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.17 +speed_infill = =math.ceil(speed_print * 45 / 55) \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg new file mode 100644 index 0000000000..264f6dd635 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_print_temperature = =default_material_print_temperature + 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg new file mode 100644 index 0000000000..e374c67a29 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_print_temperature = =default_material_print_temperature + 5 +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg new file mode 100644 index 0000000000..5a3be0a93b --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_High_Quality.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 15 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..848921881e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -0,0 +1,37 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_nylon +variant = AA 0.4 + +[values] +adhesion_type = brim +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 12 +infill_line_width = =round(line_width * 0.5 / 0.4, 2) +line_width = =machine_nozzle_size +material_initial_print_temperature = =material_print_temperature - 5 +material_final_print_temperature = =material_print_temperature - 10 +material_standby_temperature = 100 +ooze_shield_angle = 40 +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_jerk = =jerk_layer_0 +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +skin_overlap = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 +wall_line_width_x = =wall_line_width + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg index ddaef82dcc..9a370932de 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -48,9 +47,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) support_bottom_distance = =support_z_distance @@ -62,8 +61,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg index 5c85a32af0..97d217b928 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -47,9 +46,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) @@ -62,8 +61,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg index dbeed2dfe9..974a4b86e3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_High_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -48,9 +47,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) @@ -63,8 +62,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg similarity index 87% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg index 3694db3f76..a176d8a066 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PC_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_pc variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -46,9 +45,9 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 15 skin_overlap = 30 -speed_layer_0 = 25 +speed_layer_0 = =math.ceil(speed_print * 25 / 50) speed_print = 50 -speed_topbottom = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 25 / 40) @@ -61,8 +60,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =round(line_width * 0.4 / 0.35, 2) wall_thickness = 1.2 - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.17 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..69c0d0bb23 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Draft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_topbottom = =math.ceil(speed_print * 40 / 70) +speed_wall = =math.ceil(speed_print * 55 / 70) +speed_wall_0 = =math.ceil(speed_wall * 45 / 50) +top_bottom_thickness = 0.8 +wall_thickness = 0.8 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +infill_sparse_density = 15 +layer_height_0 = 0.2 +acceleration_wall = 2000 +acceleration_wall_0 = 2000 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..32dce2236e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Fast_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +prime_tower_enable = False +speed_print = 70 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +speed_topbottom = =math.ceil(speed_print * 35 / 70) +speed_wall = =math.ceil(speed_print * 45 / 70) +speed_wall_0 = =math.ceil(speed_wall * 35 / 70) +top_bottom_thickness = 1 +wall_thickness = 1 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +layer_height_0 = 0.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_High_Quality.inst.cfg new file mode 100644 index 0000000000..567bd84a76 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_High_Quality.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 10 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 5 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_print = 50 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_topbottom = =math.ceil(speed_print * 35 / 50) +speed_wall = =math.ceil(speed_print * 35 / 50) +top_bottom_thickness = 1 +wall_thickness = 1 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +layer_height_0 = 0.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..522147fdd1 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -0,0 +1,29 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_layer_0 = =math.ceil(speed_print * 20 / 70) +top_bottom_thickness = 1 +wall_thickness = 1 + +jerk_travel = 50 +infill_line_width = =round(line_width * 0.42 / 0.35, 2) +layer_height_0 = 0.2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg similarity index 90% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg index f50c38f892..d8caa2e615 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pp variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -30,7 +29,7 @@ line_width = =machine_nozzle_size * 0.95 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature_layer_0 = =material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature - 5 @@ -48,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) speed_travel_layer_0 = 50 @@ -61,5 +60,3 @@ switch_extruder_retraction_speeds = 35 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = =line_width * 3 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg similarity index 90% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg index 8f07b2a6a9..bd08a774d2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Normal -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 material = generic_pp variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -30,7 +29,7 @@ line_width = =machine_nozzle_size * 0.95 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature_layer_0 = =material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 material_final_print_temperature = =material_print_temperature - 12 material_initial_print_temperature = =material_print_temperature - 2 material_print_temperature = =default_material_print_temperature - 13 @@ -48,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) @@ -63,5 +62,3 @@ top_bottom_thickness = 1.1 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = =line_width * 3 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg similarity index 90% rename from resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg index 440d8cbfe6..8bc06272be 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_aluminum_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_PP_Normal_Quality.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fine -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 material = generic_pp variant = AA 0.4 -buildplate = Aluminum [values] acceleration_enabled = True @@ -30,7 +29,7 @@ line_width = =machine_nozzle_size * 0.95 machine_min_cool_heat_time_window = 15 machine_nozzle_cool_down_speed = 0.85 machine_nozzle_heat_up_speed = 1.5 -material_bed_temperature_layer_0 = =material_bed_temperature +material_bed_temperature_layer_0 = =material_bed_temperature + 5 material_final_print_temperature = =material_print_temperature - 10 material_initial_print_temperature = =material_print_temperature - 5 material_print_temperature = =default_material_print_temperature - 15 @@ -48,7 +47,7 @@ retraction_hop_only_when_collides = True retraction_min_travel = 0.8 retraction_prime_speed = 18 speed_equalize_flow_enabled = True -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 25) speed_print = 25 speed_topbottom = =math.ceil(speed_print * 25 / 25) @@ -63,6 +62,3 @@ top_bottom_thickness = 1 wall_0_inset = 0 wall_line_width_x = =line_width wall_thickness = =line_width * 3 - -default_material_bed_temperature = 95 - diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..3f2bf71469 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Draft_Print.inst.cfg @@ -0,0 +1,38 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +infill_line_width = =round(line_width * 0.45/0.35,2) +jerk_print = 25 +jerk_roofing = 1 +layer_height_0 = 0.2 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature -10 +material_standby_temperature = 100 +prime_tower_enable = False +roofing_layer_count = 2 +skin_outline_count = 0 +skin_overlap = 20 +speed_layer_0 = =math.ceil(speed_print * 20 / 50) +speed_print = 50 +speed_roofing = =math.ceil(speed_wall * 20 / 24) +speed_topbottom = =math.ceil(speed_print * 25 / 50) +speed_wall = =math.ceil(speed_print * 36 / 50) +speed_wall_0 = =math.ceil(speed_print * 26 / 50) +top_bottom_thickness = 1.2 +wall_line_width_x = =round(line_width * 0.35/0.35,2) +wall_thickness = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..9c0f665788 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Fast_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +infill_line_width = =round(line_width * 1.285, 2) +layer_height_0 = 0.2 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature -10 +material_standby_temperature = 100 +prime_tower_enable = False +speed_layer_0 = =math.ceil(speed_print * 20 / 45) +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +top_bottom_thickness = 1.2 +wall_line_width_x = =round(line_width * 0.35/0.35,2) +wall_thickness = 1.23 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_High_Quality.inst.cfg new file mode 100644 index 0000000000..f4223bfb17 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_High_Quality.inst.cfg @@ -0,0 +1,36 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 10 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 15 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_print = 45 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +top_bottom_thickness = 1.2 +wall_thickness = 1.23 + +layer_height_0 = 0.2 + +line_width = =round(machine_nozzle_size * 1.025, 3) +wall_line_width_x = =line_width +infill_line_width = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..81ed3df828 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -0,0 +1,33 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tough_pla +variant = AA 0.4 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =cool_fan_speed +cool_min_speed = 7 +infill_line_width = =round(line_width * 1.285, 2) +layer_height_0 = 0.2 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_print_temperature = =default_material_print_temperature - 15 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 10 +speed_layer_0 = =math.ceil(speed_print * 20 / 45) +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_0 = =math.ceil(speed_wall * 35 / 45) +top_bottom_thickness = 1.2 +wall_thickness = 1.23 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg new file mode 100644 index 0000000000..aeee555471 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Draft_Print.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tpu +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 8.75 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 4 +gradual_infill_step_height = =5 * layer_height +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = cross_3d +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.95 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 106 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature + 15 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 18 / 25) +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) + +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 0.7 +travel_avoid_distance = 1.5 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 0.76 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg new file mode 100644 index 0000000000..7b289aa2d2 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Fast_Print.inst.cfg @@ -0,0 +1,64 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_tpu +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 8.75 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 4 +gradual_infill_step_height = =5 * layer_height +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = cross_3d +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.95 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 106 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature + 15 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 18 / 25) +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) + +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 0.7 +travel_avoid_distance = 1.5 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 0.76 + diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..9720978072 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_tpu +variant = AA 0.4 + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 8.75 +cool_fan_speed_max = 100 +cool_min_layer_time_fan_speed_max = 6 +cool_min_speed = 4 +gradual_infill_step_height = =5 * layer_height +infill_line_width = =round(line_width * 0.38 / 0.38, 2) +infill_overlap = 0 +infill_pattern = cross_3d +infill_sparse_density = 10 +infill_wipe_dist = 0.1 +jerk_enabled = True +jerk_print = 25 +line_width = =machine_nozzle_size * 0.95 +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 106 +material_initial_print_temperature = =material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 17 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_wipe_enabled = True +retraction_count_max = 12 +retraction_extra_prime_amount = 0.8 +retraction_extrusion_window = 1 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = =math.ceil(speed_print * 18 / 25) +speed_print = 25 +speed_topbottom = =math.ceil(speed_print * 25 / 25) + +speed_wall = =math.ceil(speed_print * 25 / 25) +speed_wall_0 = =math.ceil(speed_wall * 25 / 25) +support_angle = 50 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 35 +top_bottom_thickness = 0.7 +travel_avoid_distance = 1.5 +wall_0_inset = 0 +wall_line_width_x = =line_width +wall_thickness = 0.76 + diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg similarity index 71% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg index e0dd599317..32b31446c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_abs variant = AA 0.8 -buildplate = Aluminum [values] line_width = =machine_nozzle_size * 0.875 @@ -21,8 +20,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) retract_at_layer_change = False - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg similarity index 71% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg index 0ca1b63c0b..ff02568346 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Sprint -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_abs variant = AA 0.8 -buildplate = Aluminum [values] line_width = =machine_nozzle_size * 0.875 @@ -21,8 +20,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) retract_at_layer_change = False - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg similarity index 72% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg index 1611c3fedd..ada2e19e40 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_abs variant = AA 0.8 -buildplate = Aluminum [values] line_width = =machine_nozzle_size * 0.875 @@ -21,8 +20,3 @@ speed_topbottom = =math.ceil(speed_print * 30 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) retract_at_layer_change = False - -material_bed_temperature_layer_0 = 100 -default_material_bed_temperature = 90 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg similarity index 83% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg index 6b0f12f8dc..7db7f859f1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast - Experimental -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe_plus variant = AA 0.8 -buildplate = Aluminum is_experimental = True [values] @@ -28,7 +27,7 @@ retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 35 / 50) @@ -38,8 +37,3 @@ support_bottom_distance = =support_z_distance support_line_width = =round(line_width * 0.6 / 0.7, 2) support_z_distance = =layer_height top_bottom_thickness = 1.2 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg similarity index 81% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 78ad1f6eac..15e07be671 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -1,16 +1,16 @@ [general] version = 4 -name = Sprint -definition = ultimaker_s5 +name = Sprint - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_cpe_plus variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] brim_width = 14 @@ -27,7 +27,7 @@ retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 35 / 50) @@ -37,8 +37,3 @@ support_bottom_distance = =support_z_distance support_line_width = =round(line_width * 0.6 / 0.7, 2) support_z_distance = =layer_height top_bottom_thickness = 1.2 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg similarity index 81% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 7be2cdbcc8..6931956c28 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -1,16 +1,16 @@ [general] version = 4 -name = Extra Fast -definition = ultimaker_s5 +name = Extra Fast - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_cpe_plus variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] brim_width = 14 @@ -27,7 +27,7 @@ retraction_combing_max_distance = 50 retraction_hop = 0.1 retraction_hop_enabled = False skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 35 / 50) @@ -37,8 +37,3 @@ support_bottom_distance = =support_z_distance support_line_width = =round(line_width * 0.6 / 0.7, 2) support_z_distance = =layer_height top_bottom_thickness = 1.2 - -material_bed_temperature_layer_0 = 115 -default_material_bed_temperature = 105 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg similarity index 69% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg index 67132b67fc..63a5b8d26b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_cpe variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 15 @@ -23,9 +22,4 @@ speed_print = 40 speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) -jerk_travel = 50 - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.3 +jerk_travel = 50 \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg similarity index 72% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg index 49e70af112..83224c83f4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Sprint -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_cpe variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 15 @@ -24,9 +23,4 @@ speed_topbottom = =math.ceil(speed_print * 30 / 45) speed_wall = =math.ceil(speed_print * 40 / 45) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) -jerk_travel = 50 - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.3 +jerk_travel = 50 \ No newline at end of file diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg similarity index 72% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg index 9d781092b1..7a66485d16 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_cpe variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 15 @@ -24,8 +23,3 @@ speed_topbottom = =math.ceil(speed_print * 25 / 40) speed_wall = =math.ceil(speed_print * 30 / 40) jerk_travel = 50 - -material_bed_temperature_layer_0 = 90 -default_material_bed_temperature = 80 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg new file mode 100644 index 0000000000..a3bb787d82 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_nylon +variant = AA 0.8 + +[values] +brim_width = 5.6 +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_before_walls = True +infill_line_width = =line_width +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_standby_temperature = 100 +ooze_shield_angle = 40 +prime_tower_enable = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..4b9a460eff --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_nylon +variant = AA 0.8 + +[values] +brim_width = 5.6 +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_before_walls = True +infill_line_width = =line_width +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_standby_temperature = 100 +ooze_shield_angle = 40 +prime_tower_enable = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..460504d9b1 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -0,0 +1,35 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_nylon +variant = AA 0.8 + +[values] +brim_width = 5.6 +cool_min_layer_time_fan_speed_max = 20 +cool_min_speed = 10 +infill_before_walls = True +infill_line_width = =line_width +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_heat_up_speed = 1.4 +material_standby_temperature = 100 +ooze_shield_angle = 40 +prime_tower_enable = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = =round(layer_height_0 * 0.85, 2) +raft_interface_thickness = =round(machine_nozzle_size * 0.3 / 0.4, 2) +raft_margin = 10 +raft_surface_thickness = =round(machine_nozzle_size * 0.2 / 0.4, 2) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +switch_extruder_prime_speed = 30 +switch_extruder_retraction_amount = 30 +switch_extruder_retraction_speeds = 40 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg similarity index 77% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg index 04170b3ba2..cad3dc4b2f 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Fast_Print.inst.cfg @@ -1,20 +1,19 @@ [general] version = 4 name = Fast - Experimental -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pc variant = AA 0.8 -buildplate = Aluminum is_experimental = True [values] -brim_width = 10 +brim_width = 14 cool_fan_full_at_height = =layer_height_0 + 14 * layer_height infill_before_walls = True line_width = =machine_nozzle_size * 0.875 @@ -24,15 +23,10 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 15 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) support_line_width = =round(line_width * 0.6 / 0.7, 2) - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg similarity index 73% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg index 90b7afdb8d..b3fd93971d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -1,19 +1,19 @@ [general] version = 4 -name = Sprint -definition = ultimaker_s5 +name = Sprint - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_pc variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] -brim_width = 10 +brim_width = 14 cool_fan_full_at_height = =layer_height_0 + 7 * layer_height infill_before_walls = True line_width = =machine_nozzle_size * 0.875 @@ -22,15 +22,10 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 8 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) support_line_width = =round(line_width * 0.6 / 0.7, 2) - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg similarity index 74% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg index f9b93eac37..c7b6d85efe 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -1,19 +1,19 @@ [general] version = 4 -name = Extra Fast -definition = ultimaker_s5 +name = Extra Fast - Experimental +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_pc variant = AA 0.8 -buildplate = Aluminum +is_experimental = True [values] -brim_width = 10 +brim_width = 14 cool_fan_full_at_height = =layer_height_0 + 9 * layer_height infill_before_walls = True line_width = =machine_nozzle_size * 0.875 @@ -23,16 +23,10 @@ material_standby_temperature = 100 raft_airgap = 0.5 raft_margin = 15 skin_overlap = 0 -speed_layer_0 = 15 +speed_layer_0 = =math.ceil(speed_print * 15 / 50) speed_print = 50 speed_slowdown_layers = 10 speed_topbottom = =math.ceil(speed_print * 25 / 50) speed_wall = =math.ceil(speed_print * 40 / 50) speed_wall_0 = =math.ceil(speed_wall * 30 / 40) support_line_width = =round(line_width * 0.6 / 0.7, 2) - -material_bed_temperature_layer_0 = 125 -default_material_bed_temperature = 115 -prime_blob_enable = False -layer_height_0 = 0.3 - diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..09e9d72e24 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Draft_Print.inst.cfg @@ -0,0 +1,42 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +prime_tower_enable = True +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x + +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +infill_sparse_density = 15 +layer_height_0 = 0.4 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..d1f5851822 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -0,0 +1,42 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 15 +prime_tower_enable = True +raft_margin = 10 +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +infill_sparse_density = 15 +layer_height_0 = 0.4 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..e398a6a9ea --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -0,0 +1,41 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +prime_tower_enable = True +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +infill_sparse_density = 15 +layer_height_0 = 0.4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg similarity index 93% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg index 3569aac74b..d129bafb4b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Draft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 material = generic_pp variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 25 @@ -30,6 +29,7 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 +prime_tower_min_volume = 10 retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 @@ -50,5 +50,3 @@ travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) wall_thickness = 1.6 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg similarity index 93% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg index 0e10a17210..0977c369bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Sprint -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 material = generic_pp variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 25 @@ -30,6 +29,7 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 +prime_tower_min_volume = 20 retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 @@ -50,6 +50,3 @@ travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) wall_thickness = 1.6 - -default_material_bed_temperature = 95 - diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg similarity index 93% rename from resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg rename to resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg index 79d58f56f4..93600d1d45 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_aluminum_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -1,16 +1,15 @@ [general] version = 4 name = Extra Fast -definition = ultimaker_s5 +definition = ultimaker_s3 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 material = generic_pp variant = AA 0.8 -buildplate = Aluminum [values] brim_width = 25 @@ -29,6 +28,7 @@ material_standby_temperature = 100 multiple_mesh_overlap = 0.2 prime_tower_enable = True prime_tower_flow = 100 +prime_tower_min_volume = 15 retract_at_layer_change = False retraction_count_max = 12 retraction_extra_prime_amount = 0.5 @@ -49,5 +49,3 @@ travel_compensate_overlapping_walls_0_enabled = False wall_0_wipe_dist = =line_width * 2 wall_line_width_x = =round(line_width * 0.8 / 0.8, 2) wall_thickness = 1.6 - -default_material_bed_temperature = 95 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..3b95a2dffa --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Draft_Print.inst.cfg @@ -0,0 +1,40 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tough_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.75 / 0.75, 2) +infill_pattern = cubic +layer_height_0 = 0.4 +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 0 +prime_tower_enable = False +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =round(speed_print * 35 / 45) +speed_wall = =round(speed_print * 40 / 45) +speed_wall_0 = =round(speed_print * 35 / 45) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 6 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.75 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x \ No newline at end of file diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..bff567d5fb --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -0,0 +1,41 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_tough_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.75 / 0.75, 2) +infill_pattern = cubic +layer_height_0 = 0.4 +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 5 +prime_tower_enable = False +raft_margin = 10 +retract_at_layer_change = False +speed_infill = =math.ceil(speed_print * 30 / 30) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) +speed_wall = =math.ceil(speed_print * 25/ 30) +speed_wall_0 = =math.ceil(speed_print * 20 / 30) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..eca00013da --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_tough_pla +variant = AA 0.8 + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.75 / 0.75, 2) +infill_pattern = cubic +layer_height_0 = 0.4 +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 5 +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +prime_tower_enable = False +retract_at_layer_change = False +speed_infill = =math.ceil(speed_print * 30 / 35) +speed_print = 35 +speed_topbottom = =math.ceil(speed_print * 20 / 35) +speed_wall = =math.ceil(speed_print * 25/ 35) +speed_wall_0 = =math.ceil(speed_print * 20 / 35) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.75 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg new file mode 100644 index 0000000000..f13273353d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Draft_Print.inst.cfg @@ -0,0 +1,62 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_tpu +variant = AA 0.8 + +[values] +brim_width = 8.75 +cool_min_layer_time_fan_speed_max = 6 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = cross_3d +jerk_prime_tower = =math.ceil(jerk_print * 25 / 25) +jerk_support = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25) +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 105 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature - 2 +material_print_temperature_layer_0 = =material_print_temperature + 19 +material_standby_temperature = 100 +multiple_mesh_overlap = 0.2 +prime_tower_enable = True +prime_tower_flow = 100 +retract_at_layer_change = False +retraction_count_max = 12 +retraction_extra_prime_amount = 0.5 +retraction_hop = 1.5 +retraction_hop_only_when_collides = False +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 25 / 30) + +speed_wall = =math.ceil(speed_print * 30 / 30) +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_line_width = =round(line_width * 0.7 / 0.8, 2) +support_offset = =line_width +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 45 +top_bottom_thickness = 1.2 +travel_avoid_distance = 1.5 +travel_compensate_overlapping_walls_0_enabled = False +wall_0_wipe_dist = =line_width * 2 +wall_line_width_x = =round(line_width * 0.6 / 0.8, 2) +wall_thickness = 1.3 + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..a0a200ef67 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -0,0 +1,63 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_tpu +variant = AA 0.8 + +[values] +brim_width = 8.75 +cool_min_layer_time_fan_speed_max = 6 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = cross_3d +infill_sparse_density = 10 +jerk_prime_tower = =math.ceil(jerk_print * 25 / 25) +jerk_support = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25) +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 105 +material_initial_print_temperature = =material_print_temperature +material_print_temperature = =default_material_print_temperature + 2 +material_print_temperature_layer_0 = =material_print_temperature + 15 +material_standby_temperature = 100 +multiple_mesh_overlap = 0.2 +prime_tower_enable = True +prime_tower_flow = 100 +retract_at_layer_change = False +retraction_count_max = 12 +retraction_extra_prime_amount = 0.5 +retraction_hop = 1.5 +retraction_hop_only_when_collides = False +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 20 / 30) + +speed_wall = =math.ceil(speed_print * 30 / 30) +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_line_width = =round(line_width * 0.7 / 0.8, 2) +support_offset = =line_width +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 45 +top_bottom_thickness = 1.2 +travel_avoid_distance = 1.5 +travel_compensate_overlapping_walls_0_enabled = False +wall_0_wipe_dist = =line_width * 2 +wall_line_width_x = =round(line_width * 0.6 / 0.8, 2) +wall_thickness = 1.3 + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..25b24721c8 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -0,0 +1,62 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_tpu +variant = AA 0.8 + +[values] +brim_width = 8.75 +cool_min_layer_time_fan_speed_max = 6 +top_skin_expand_distance = =line_width * 2 +infill_before_walls = True +infill_line_width = =round(line_width * 0.7 / 0.8, 2) +infill_pattern = cross_3d +infill_sparse_density = 10 +jerk_prime_tower = =math.ceil(jerk_print * 25 / 25) +jerk_support = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 15 / 25) +machine_nozzle_cool_down_speed = 0.5 +machine_nozzle_heat_up_speed = 2.5 +material_final_print_temperature = =material_print_temperature +material_flow = 105 +material_initial_print_temperature = =material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature + 17 +material_standby_temperature = 100 +multiple_mesh_overlap = 0.2 +prime_tower_enable = True +prime_tower_flow = 100 +retract_at_layer_change = False +retraction_count_max = 12 +retraction_extra_prime_amount = 0.5 +retraction_hop = 1.5 +retraction_hop_only_when_collides = False +retraction_min_travel = =line_width * 2 +retraction_prime_speed = 15 +skin_line_width = =round(line_width * 0.78 / 0.8, 2) +speed_print = 30 +speed_topbottom = =math.ceil(speed_print * 23 / 30) + +speed_wall = =math.ceil(speed_print * 30 / 30) +speed_wall_x = =math.ceil(speed_wall * 30 / 30) +support_angle = 50 +support_bottom_distance = =support_z_distance +support_line_width = =round(line_width * 0.7 / 0.8, 2) +support_offset = =line_width +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 20 +switch_extruder_retraction_speeds = 45 +top_bottom_thickness = 1.2 +travel_avoid_distance = 1.5 +travel_compensate_overlapping_walls_0_enabled = False +wall_0_wipe_dist = =line_width * 2 +wall_line_width_x = =round(line_width * 0.6 / 0.8, 2) +wall_thickness = 1.3 + +jerk_travel = 50 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..9085bd2bd9 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Draft_Print.inst.cfg @@ -0,0 +1,20 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 20 +support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..ff8208ab7a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Fast_Print.inst.cfg @@ -0,0 +1,21 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = 100 +prime_tower_enable = False +skin_overlap = 15 +support_brim_enable = True +support_infill_sparse_thickness = 0.3 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg new file mode 100644 index 0000000000..40e466c187 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_High_Quality.inst.cfg @@ -0,0 +1,19 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +prime_tower_enable = False +support_brim_enable = True +support_infill_sparse_thickness = 0.18 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..d6bf539597 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +material = generic_pva +variant = BB 0.4 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +prime_tower_enable = False +support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..57022cd1f6 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Draft_Print.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_pva +variant = BB 0.8 + +[values] +brim_replaces_support = False +material_print_temperature = =default_material_print_temperature + 5 +material_standby_temperature = 100 +support_brim_enable = True diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg new file mode 100644 index 0000000000..d5b206a84f --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -0,0 +1,18 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +material = generic_pva +variant = BB 0.8 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +support_brim_enable = True +support_interface_height = 0.9 diff --git a/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg new file mode 100644 index 0000000000..ca945049b2 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -0,0 +1,19 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +material = generic_pva +variant = BB 0.8 + +[values] +brim_replaces_support = False +material_standby_temperature = 100 +support_brim_enable = True +support_infill_sparse_thickness = 0.3 +support_interface_height = 1.2 diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFCPE_Draft_Print.inst.cfg new file mode 100644 index 0000000000..8e2963dc25 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFCPE_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_cffcpe +variant = CC 0.6 + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFPA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..dfb810a05c --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_CFFPA_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_cffpa +variant = CC 0.6 + +[values] +adhesion_type = skirt +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFCPE_Draft_Print.inst.cfg new file mode 100644 index 0000000000..fd5d3e6c21 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFCPE_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_gffcpe +variant = CC 0.6 + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFPA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..5b8bce580a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_GFFPA_Draft_Print.inst.cfg @@ -0,0 +1,31 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +material = generic_gffpa +variant = CC 0.6 + +[values] +adhesion_type = brim +cool_fan_enabled = True +cool_min_layer_time = 7 +cool_min_layer_time_fan_speed_max = 15 +cool_min_speed = 6 +infill_line_width = =line_width +initial_layer_line_width_factor = 130.0 +line_width = =machine_nozzle_size * (0.58/0.6) +material_bed_temperature_layer_0 = =material_bed_temperature + 5 +material_print_temperature = =default_material_print_temperature +material_print_temperature_layer_0 = =material_print_temperature +material_standby_temperature = 100 +skin_overlap = 20 +support_bottom_distance = =support_z_distance / 2 +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +wall_line_width_x = =line_width diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg new file mode 100644 index 0000000000..8f5e111425 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Draft_Print.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -3 +material = generic_pla +variant = CC 0.6 +is_experimental = True + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +infill_pattern = triangles +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +prime_tower_enable = True +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_pattern = ='triangles' +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg new file mode 100644 index 0000000000..ad2805ddaa --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_cc0.6_PLA_Fast_Print.inst.cfg @@ -0,0 +1,43 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -2 +material = generic_pla +variant = CC 0.6 +is_experimental = True + +[values] +cool_fan_full_at_height = =layer_height_0 + 2 * layer_height +cool_fan_speed_max = =100 +cool_min_speed = 2 +gradual_infill_step_height = =3 * layer_height +infill_line_width = =round(line_width * 0.65 / 0.75, 2) +infill_pattern = triangles +line_width = =machine_nozzle_size * 0.9375 +machine_nozzle_cool_down_speed = 0.75 +machine_nozzle_heat_up_speed = 1.6 +material_final_print_temperature = =max(-273.15, material_print_temperature - 15) +material_initial_print_temperature = =max(-273.15, material_print_temperature - 10) +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +prime_tower_enable = True +retract_at_layer_change = False +speed_print = 45 +speed_topbottom = =math.ceil(speed_print * 35 / 45) +speed_wall = =math.ceil(speed_print * 40 / 45) +speed_wall_x = =speed_wall +speed_wall_0 = =math.ceil(speed_wall * 35 / 40) +support_angle = 70 +support_line_width = =line_width * 0.75 +support_pattern = ='triangles' +support_xy_distance = =wall_line_width_0 * 1.5 +top_bottom_thickness = =layer_height * 4 +wall_line_width = =round(line_width * 0.75 / 0.75, 2) +wall_line_width_x = =round(wall_line_width * 0.625 / 0.75, 2) +wall_thickness = =wall_line_width_0 + wall_line_width_x diff --git a/resources/quality/ultimaker_s3/um_s3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Draft_Quality.inst.cfg new file mode 100644 index 0000000000..32eaabb90e --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Draft_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = draft +weight = -2 +global_quality = True + +[values] +layer_height = 0.2 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Fast_Quality.inst.cfg new file mode 100644 index 0000000000..0381b00a4d --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Fast_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Normal +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = fast +weight = -1 +global_quality = True + +[values] +layer_height = 0.15 diff --git a/resources/quality/ultimaker_s3/um_s3_global_High_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_High_Quality.inst.cfg new file mode 100644 index 0000000000..153667334a --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_High_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Extra Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = high +weight = 1 +global_quality = True + +[values] +layer_height = 0.06 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Normal_Quality.inst.cfg new file mode 100644 index 0000000000..22d477e221 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Normal_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Fine +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = normal +weight = 0 +global_quality = True + +[values] +layer_height = 0.1 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Superdraft_Quality.inst.cfg new file mode 100644 index 0000000000..2a56308c00 --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Superdraft_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Sprint +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = superdraft +weight = -4 +global_quality = True + +[values] +layer_height = 0.4 diff --git a/resources/quality/ultimaker_s3/um_s3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker_s3/um_s3_global_Verydraft_Quality.inst.cfg new file mode 100644 index 0000000000..ec37acd5da --- /dev/null +++ b/resources/quality/ultimaker_s3/um_s3_global_Verydraft_Quality.inst.cfg @@ -0,0 +1,14 @@ +[general] +version = 4 +name = Extra Fast +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = quality +quality_type = verydraft +weight = -3 +global_quality = True + +[values] +layer_height = 0.3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg index 1b46116686..c55eb1f98e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg index 0beec0fba4..c50c46a195 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg index 7623872d07..e89f0307d5 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg index e09ea57792..c686973cac 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg index e284ac277a..a9d336bb48 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg index a8c5f08448..cf43886537 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg index 27c9c1d63e..457274f56a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.25_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg index 5d2e8767ba..6e2110bb0c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg index 7e5fcc0ab6..e873e83a72 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg index 829939b2a6..90c6a26a2a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg index a6a51aca4c..9212424fd0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg index 73ac26f806..e37bfde09b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 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 030f4f7652..1398e26221 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 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 c0f3dd0ac9..4b40e21243 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_BAM_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg index aa32861ddb..d02e1a3b3a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg index 26edd2d8a7..cdb5e9fe63 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg index e200c3b078..d993ce239d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg index dc665ae114..3f638c5324 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg index 311c335a86..1a169e38c7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg index 02122a40fa..ddf3155693 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg index 54ab48e88d..2b4ace5cd2 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg index be9b43b1b8..bae1113643 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_CPE_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg index 03fe4f4b8a..384253f81c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg index bd078f7e4d..d0ef05dfbd 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg index 45506f4152..275d4d9e99 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg index c159402e3f..f5ebb0de69 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg index f6713fd4e9..e8315bd643 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg index fbc5328d80..6da61722df 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg index d6e002c7f1..d8b5b0f25d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg index 0f708b16db..14cba24d92 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PC_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg index ca4ef6bd9b..1c35efaa96 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg index 56cb57cb08..0971ef8f17 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg index 44b643d529..5c9ba5f36a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg index aa737dc1ea..dc16dd2fad 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg index d008bb37fc..3a2d552486 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg index b0c00f2c07..2464f03b3d 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg index 835c53eaef..8bcf1c41df 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_PP_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg index 8be35d2ae2..8679f29273 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg index 460fd73afa..3b3ea7fde4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg index 3488756cb6..1681a0cabf 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg index dc2b844d90..60fc8b50d8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg index ec93e5ec23..03ad0757f7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg index eff47b9c20..dbdaf4ba9b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg index 62e543977c..dafa3aec69 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.4_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg index 56a16595e8..f750cb4010 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg index 77c0031feb..9bde0cd927 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg index 5a4ee5c515..5014a09bbc 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg index a1c4479973..a9cf05558a 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg index 3bde53d593..98b7a6780c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg index 159c909ba5..15b52dddf4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg index af016c06da..4d39177ad7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg index 17036438a9..d429c9642c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg index 2973abfdd3..ab3729b23c 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg index 7760ffa89e..6eec90641b 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg index 2499e6b3d2..9314a64c72 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg index 2e611aeecc..27236b5e27 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg index 2ac89416aa..71baad0b5e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg index 31db0f93dd..28d3ad20ad 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg index 2ef532a8b9..85d9382cc6 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PC_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast - Experimental definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg index ecfab94ef3..7e391481b0 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg index 38f3c9c9d9..30e5c92c73 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg index b4b65ee5f7..47a8fac6f1 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg index 9a413c42c1..4c0086fda7 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg index 0286f482cf..86c9fcf080 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg index ed53d87b78..cd1597ce46 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_PP_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg index 790ff4a922..e9828faca4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg index 9111bb5804..7f0ea9b6f4 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg index af0fb786d2..a797bb1fe8 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPLA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg index 479aab6e7c..c1a9412566 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg index 2b2f280730..1480e677b3 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg index ef38d96aea..1a1510b17e 100644 --- a/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg index 804e9fd62b..180565afc1 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg index 52a571c4f1..df096b5f87 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg index e8e293c81b..43a1992696 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg index b512b47514..3f52afd331 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.4_PVA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg index 04015fe0f8..4a3778d211 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg index 8d79e8fafe..b9de83233c 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg index 31663ab192..b87082c8db 100644 --- a/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg index e3ecf51f13..a1862c53bb 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFCPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg index f73379dd3d..61153f7d4b 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_CFFPA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg index 906f22a66f..5a8f7ed5f8 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFCPE_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg index e411fa877b..388af46060 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_GFFPA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg index 156799aa6f..8b864d09ac 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Draft_Print.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -3 diff --git a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg index f69093ff02..f9c8276a78 100644 --- a/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_cc0.6_PLA_Fast_Print.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg index 6d5e9cce24..d2db096e38 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Draft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = draft weight = -2 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg index 64fa64c463..5587b20741 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Fast_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = -1 diff --git a/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg index 0f15089757..159b64312a 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg index f31a3e5ee3..44758ae5a9 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg index d97e906d8e..1907ca5a68 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Superdraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Sprint definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = superdraft weight = -4 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg index 4a6a431e5f..89c45641ef 100644 --- a/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker_s5/um_s5_global_Verydraft_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extra Fast definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = verydraft weight = -3 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg index d1547719f3..a5e22330e1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg index 169fda1f47..574ea34477 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg index a2a298542e..98c79fea5c 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg index f82194c911..f9a07db778 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg index 9d8f5fa98d..544d32cedf 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg index 08bc3aa522..4c9d2a0be0 100644 --- a/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_Global_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg index 09c3902405..1fd07d1a65 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg index 058ed545b7..a0898fcf8d 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg index 595f2be25f..229fdd1c48 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg index 9ec084e758..64865959f2 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg index 9f1bd25564..cd458e20c4 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg index b60c8d8496..7713cf37c1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg index 567de3a73b..f9407fac25 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Extreme definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = extreme weight = 2 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg index dbcb27b229..d3b569aa6f 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg @@ -4,7 +4,7 @@ name = High definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = high weight = 1 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg index 975556bb86..e1d8f540e4 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = vertex_delta_k8800 [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg index a795485a6d..660cde5ed9 100644 --- a/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg index 6133c0aa99..28d0031d02 100644 --- a/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fine weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg index 4a5bfc7d47..6d2edee02c 100644 --- a/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_global_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg index ec89e83337..40c17d371d 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg index e9ce3c7244..5a254ee3e9 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fine weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg index 81d7bcd308..bdc936c193 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_flex_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg index f805c0f3be..efd7362aab 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fast.inst.cfg @@ -4,7 +4,7 @@ name = Fast definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fast weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg index 9647938cf6..258f20016b 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_fine.inst.cfg @@ -4,7 +4,7 @@ name = Fine definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = fine weight = 1 diff --git a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg index af2a32384c..942c610f18 100644 --- a/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg +++ b/resources/quality/zyyx/zyyx_agile_pro_pla_normal.inst.cfg @@ -4,7 +4,7 @@ name = Normal definition = zyyx_agile [metadata] -setting_version = 7 +setting_version = 11 type = quality quality_type = normal weight = 0 diff --git a/resources/setting_visibility/expert.cfg b/resources/setting_visibility/expert.cfg index c8d13a1836..76f8d5dd1f 100644 --- a/resources/setting_visibility/expert.cfg +++ b/resources/setting_visibility/expert.cfg @@ -52,6 +52,7 @@ fill_outline_gaps xy_offset xy_offset_layer_0 z_seam_type +z_seam_position z_seam_x z_seam_y z_seam_corner @@ -99,6 +100,9 @@ top_skin_expand_distance bottom_skin_expand_distance max_skin_angle_for_expansion min_skin_width_for_expansion +infill_randomize_start_location +skin_edge_support_thickness +skin_edge_support_layers [material] default_material_print_temperature @@ -113,6 +117,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 +163,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,7 +207,6 @@ 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 @@ -259,7 +273,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 @@ -271,6 +285,7 @@ skirt_line_count skirt_gap skirt_brim_minimal_length brim_width +brim_gap brim_line_count brim_outside_only raft_margin @@ -293,12 +308,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 @@ -362,7 +375,6 @@ coasting_enable coasting_volume coasting_min_volume coasting_speed -skin_alternate_rotation cross_infill_pocket_size spaghetti_infill_enabled spaghetti_infill_stepped @@ -399,3 +411,7 @@ 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/overhang.shader b/resources/shaders/overhang.shader index e1c03f7586..7f1b04dd59 100644 --- a/resources/shaders/overhang.shader +++ b/resources/shaders/overhang.shader @@ -32,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; @@ -99,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; @@ -127,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; @@ -138,6 +142,7 @@ 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] @@ -148,6 +153,7 @@ u_normalMatrix = normal_matrix u_viewPosition = view_position u_lightPosition = light_0_position u_diffuseColor = diffuse_color +u_faceId = hover_face [attributes] a_vertex = vertex diff --git a/resources/shaders/striped.shader b/resources/shaders/striped.shader index 9da921a629..71b1f7b0fa 100644 --- a/resources/shaders/striped.shader +++ b/resources/shaders/striped.shader @@ -45,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; @@ -118,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; diff --git a/resources/texts/change_log.txt b/resources/texts/change_log.txt index b8528ea1fa..dfb3ab0ab1 100644 --- a/resources/texts/change_log.txt +++ b/resources/texts/change_log.txt @@ -1,3 +1,240 @@ +[4.4.0] +*Intent profiles. +What’s the intent of your print? A rapid prototype? A visual prototype? An end-use part with specific holes sizes? Intent profiles accelerate the CAD-CAM workflow by preconfiguring all the right settings in Ultimaker Cura for each of these use cases. Simply select a profile that matches the intent of your design, slice, and you’re ready to print immediately, without the need to adjust the typical settings. For now, there are three Intent profiles: +*‘Draft’ +Intended for initial prototypes and concept validation, and will print your design in the shortest time possible. +*‘Engineering’ +Intended for high-dimensional accuracy, to print functional prototypes and mechanical end-use parts. +*‘Visual’ +Intended for visual prototypes and prints that need excellent aesthetic quality. +For now, these profiles work for the Ultimaker S5 and Ultimaker S3 with Ultimaker PLA, Tough PLA, and ABS materials, and include PVA and Breakaway combinations. More profiles will follow over time. + +*Per-model settings. +Per-model settings are a set of very powerful features for users who need to tweak specific settings in specific parts of the model. In previous releases these were buried in the interface somewhat, so this release has made them more discoverable with clear icons in the toolbar, so everyone can discover them. The per-model settings can now be accessed both when working from the recommended and the custom print settings mode. + +*Specify network printer. +When connected to an Ultimaker Connect group of multiple printers, Ultimaker Cura once again shows a pop-up to select a designated printer for your printjob. This functionality had been disabled in the last version to ensure reliability when printing remotely. + +*Performance improvements. +Various tweaks under the hood for a snappier, more responsive interface. This improvement is most noticeable when switching extruders, print profiles, hovering over tooltips and when scrolling through the print settings list. + +*SDK version increment. +The changes made in version 4.4 (mainly for intents but also other things) are so thorough that we needed to do a major increment of the SDK version. Contributors – please update your packages! + +*Pause at height message. +A setting has been added to the pause at height script that displays a custom message on screen. This can be used to give instructions to operators to perform an action during the pause, e.g. ‘Place 626 bearings in slots now’. + +*Restore window preference. +https://github.com/fieldOfView has contributed a new preference around restoring the previous window position/size to the last used position/size on start up. This would be a workaround for those setups where starting Ultimaker Cura on a secondary screen will prevent it from working. + +*Group Linux instances. +https://github.com/MatthewCroughan has contributed a fix so that multiple instances of Ultimaker Cura get grouped in one application group in Gnome (the Linux front-end). It adds a bit of metadata to the .desktop file so that the windows can be grouped. + +* Known bugs +Cura not starting on Windows 10. Some users started reporting that Ultimaker Cura 4.3 and higher did not start properly, fur unknown reasons. We have implemented some code to get a better understanding of the issue, but we have not been able to fix it just yet. +As a quick fix: Go to the install path, by default “C:\Program Files\Ultimaker Cura 4.4”. Right click Cura.exe and select ‘properties’. Click the ‘compatibility’ tab and select “Run This Program in Compatibility Mode For: Windows 8”. If this does not fix your issue, please contact your service provider. + +* Minor improvements + - Reweighting stages. + - Small plug-in system improvements + - Add RetractContinue post-processing script by https://github.com/thopiekar + - Add DisplayRemainingTimeOnLCD post-processing script by https://github.com/iLyngklip + - Thickness of the very bottom layer + +* Updated third party printers + - Strateo3D. https://github.com/KOUBeMT has updated the machine profile for Strateo3D. + - Key3D Tyro. https://github.com/DragonJe has created a definition, extruder, and profiles for the Key3D Tyro. + - Prusa i3 MK3/MK3S printer. https://github.com/samirabaza has contributed the latest definition for Prusa i3 MK3/MK3s made by Prusa Research with a minor modification to fit in Prusa folder under "add printer". + - Hellbot printer. https://github.com/F-Fischer has contributed a machine profile for the Hellbot printer. + - HMS434 update by https://github.com/maukcc + - Add CR-10 MAX and Ender-5 plus by https://github.com/trouch + - Modify Cubicon device profile by https://github.com/HUNIBEST-HyVISION + - Add Cubicon printer definitions by https://github.com/HUNIBEST-HyVISION + +* Bug fixes + - Re-calculating retraction-safe area with every wall by https://github.com/smartavionics + - Fix Normals after Mirror Operation + - Crash when loading PJ with creality + - Per-object setting stacks checked for errors even if they are empty by https://github.com/smartavionics + - getAngleLeft gives wrong results when lines are colinear + - Lots of qml warnings regarding MaterialsTypeSelection.qml + - PR: Avoid unwanted travel with ironing by https://github.com/smartavionics + - PR: Remove all travel moves < 5um by https://github.com/smartavionics + - AMF files are mirrored + - Changes to Material diameter do not get applied + - Long string of text on profile names goes through borders + - CURA 4.3 - Crash when connecting networked Ultimaker S5 + - Layer slider falls behind action panel, on low resolution displays only by https://github.com/AMI3 + - Deleting profiles will not update the size of the drop-down menu + - Create / Update / Discard options are enabled when they should be greyed out + - Scroll bar for profile dropdown + - Can't change printhead X/Y Min/Max + - Syncing to a printer that has both nozzles disabled causes Cura to crash + - Project file open behavior preference is ignored when opening from command line. + - Create CFFF printer and change nozzle diameter will cause a crash + - Pause At Height resumes with wrong speed + - One-at-a-time ordering wrong + - Fix license extraction from CuraPackage + - Invalid firmware for UM2 update continues forever + - Infill inset too much with connected lines and thicker infill by https://github.com/smartavionics + - Reworked line polygon crossings by https://github.com/smartavionics + + +[4.3.0] +*Ultimaker S3. +This release includes a new profile for our latest S-line of 3D printers: the Ultimaker S3. Eagle-eyed beta testers may have noticed this extra printer profile in the beta release, too. Well done to those who spotted it. Learn more about the Ultimaker S3 by reading the blog on Ultimaker.com. + +*Even more 3D file formats. +This version is compatible with even more 3D file formats out-of-the-box, so you can integrate CAD software, 3D scanning software, and 3D modeling software into your workflow with ease. Natively open Collada, GLTF, OpenCTM, and PLY formats, to name a few. And don’t forget, downloading plugins from the Ultimaker Marketplace brings in support for many more. + +*Align faces to the build plate. +Orienting your models with the rotation tool or the lay flat tool can be a hassle with complex geometries. This new time-saving feature lets you select a face of your model to rest on the build plate, so you can get the orientation you need quickly and easily. Please note this is disabled in compatibility mode (and if your machine is running OpenGL 3.2 or lower). + +*Support infill/interface line directions. +Improve reliability with more precise control over certain aspects of your print. Choose the angle that support-infill and interfaces print at, thanks to a contribution from vgribinchuck. Input a set of angles you want lines generated at, and these will be placed sequentially throughout your 3D print. + +*Randomize infill start. +Randomize which infill line is printed first. This distributes strength across the model, preventing one segment becoming the weakest link, at the cost of an additional travel move. + +*Print small features slower. +Smartavionics has contributed a setting which recognizes small perimeters and reduces print speed in order to boost the reliability and accuracy of small printed features. This is especially useful for small perimeters such as printed holes, as they tend to get ripped away from the build plate easily due to their low contact area. + +*Easy selector for Z seam positions. +Z seams are now easier to position on your model, thanks to a contribution by trouch. A drop down selection box has been added to custom mode, giving you a list of presets to place the z seam on your model. + +*Colorblind assist theme. +Nubnubbud has added a new theme for colorblind users which makes more distinction between colors, such as the yellow/green line colors in the layer view. + +*DisplayFilenameAndLayerOnLCD script. +Some improvements for this post processing script from the community. N95JPL has contributed updates to offer a wider range of optional information. Adecastilho has contributed updates so that the layer count is displayed before the filename to prevent the layer number getting truncated in the event of long filename, as well as an option to start layer count at either 0 or 1. The ':' in the display string has also been removed as it is a GCODE command that splits the line into two different commands. + +*Peripheral information for output devices. +Architectural changes in Ultimaker Cura to allow display information about peripherals in the printer output device, so that I can use it to later on show that information in the Monitor stage plugin. + +*Quality changes on import. +Users can now import profiles that have been created on a different machine other than the active one. + +*Remove prime after coasting. +Reduce the visibility of the z seam when printing with coasting by preventing nozzle priming. + +*Map Material Station slot data. +The available configurations drop down will display information about a Ultimaker S5 Material Station if connected. Read more about the Ultimaker S5 Material Station on ultimaker.com + +*Manage Printer link. +Added a “Manage Printer” link in the monitor tab which takes you to Ultimaker Connect. + +*Improvement in code quality. +Improved code quality resulting in improved stability. + +* Bug fixes +- Uninstall in silent mode. Fixed an issue where a dialog displays when uninstalling in silent mode. +- Build Interface if Support is Present. In some cases, support could be pushed away by large support XY distance, but interfaces could be left on overhangs which leads to situation when interface is generated without support. This has been fixed. +- Install in silent mode. The bundled Arduino driver is signed by a certificate that's not trusted on Windows by default, so there was no way to suppress the prompt or to have the installer skip driver installation. This has been fixed. +- 3MF project printer connection not included. When loading a project file that was saved while a network connection was active, the network connection is not re-established. This has been fixed. +- Thin Walls broken. Fixed an error with thin walls being broken. +- Tray icon remaining. Fixed a bug where the tray icon would remain after closing the application. +- Marketplace text. Fixed an issue where Marketplace text is blurry on some screens +- Unsupported profile imports. Fixed an issue where exported profiles could not be reimported. +- Loading file message. Added visual feedback when loading files such as STLs +- Loading GCODE on disabled extruders. Fixed an issue where GCODE imported using multi-extrusion fails to load if an extruder is disabled. +- Support brim with concentric support pattern. Fixed an issue where support would be in mid-air. +- Reduced cloud logging. Logging has been reduced for cloud connections on unstable connections. +- Application menu extruder menu. Fixed an issue where changing the extruder via the application menu didn’t work. +- Tool handles move when rotating. Fixed an issue where rotate tool handles would change location when rotating. +- F5 reload. Fixed an issue where F5 doesn't reload GCODE. +- Application not starting before the splash screen. Fixed an issue where the application wouldn’t start before the splash window. +- Qt 5.13 crashes. Fixed an issue where the ShaderEffect crashes using Qt 5.13 +- Can’t select other materials in print setting tab. Fixed an issue where other materials couldn’t be selected using the print settings tab. +- Drop down to buildplate after resize. Models don’t drop down to the build plate if they are scaled down from ‘too large to fit’. +- Unsupported quality profiles. Fixed unsupported quality profiles appearing for 0.25 + 0.8 print core combinations. +- 'Arrange all models' for groups. Fixed an issue where arrange all models hangs for grouped models. +- Update Checker not working. Fixed this so that updates are visible if using a legacy version. +- Missing support brim. Fixed an issue where support brim was missing if platform adhesion set to ‘None’. +- Multiply non-normal mesh doesn't work. Fixed instances where processes stopped and messages would hang. +- Settings not updating in GUI with inheritance. Fixed settings not updating GUI with inheritance. +- Prevent 'generic'-part in name of specific materials. Introduced checks for ‘generic’ material types to help material categorization. +- Hide temperature settings. The "Default Print Temperature" setting is currently editable, but editing this setting can cause problems with temperatures later especially when you have it in your custom profile. We decided to hide this setting so users can no longer edit it in the later releases to avoid confusion. The "Default Build Plate Temperature" has also been hidden because it causes a similar issue. +- Add machine_heated_build_volume. Introduced a new machine_heated_build_volume machine-setting, which is set it to false by default, and only set it to true for the Ultimaker S5. Users can alter their own definition if they do have a heated build volume. +- Z-hops on first layer. First move other start GCODE not z-hopped. Contributed by sailorgreg. +- Preserve extruder-only moves in post stretch script. Contributed by sgtnoodle. +- “Print via Cloud” is no longer possible without an Internet connection +- Monitor tab no longer sometimes shows incorrect printer name or type +- Long print job names are no longer overlapping other text in the monitor tab +- “Connected to Cloud” pop-up now only displays when the currently selected printer is connected to Ultimaker cloud. +- Monitor tab is no longer greyed out when idle. + +*Third-party printer definitions +New machine definitions added for: +- IMADE3D Jellybox. Contributed by filipgoc for IMADE3D Jellybox printers, which adds JellyBOX 2 printer and revises settings of JellyBOX Original. +- Vertex Nano. Contributed by velbn +- Felix Pro 2. Contributed by pnks +- JGAurora A35. Contributed by pinchies. +- eMotionTech Strateo3D. Contributed by KOUBeMT. +- NWA3D A31. Contributed by DragonJe. + +[4.2.0] +*Orthographic view. +When preparing prints, professional users wanted more control over the 3D view type, so this version introduces an orthographic view, which is the same view type used by most professional CAD software packages. Find the orthographic view in View > Camera view > Orthographic, and compare the dimensions of your model to your CAD design with ease. + +*Object list. +Easily identify corresponding filenames and models with this new popup list. Click a model in the viewport and its filename will highlight, or click a filename in the list and the corresponding model will highlight. The open or hidden state of the list will persist between sessions. How convenient. + +*Print previews. +Some improvements have been made to print previews displayed in the monitor tab, Ultimaker Connect, or the Ultimaker S5 interface. In some instances, previews were clipped at the bottom or side, and sometimes models outside of the build plate area were visible. This is all fixed now. + +*AMF file compatibility. +Ultimaker Cura now supports AMF (Additive manufacturing file format) files out-of-the-box, thanks to an AMF file reader contributed by fieldOfView. + +*Slice button delay. +After clicking ‘Slice’, a lack of response could lead to frustrated buttonclicking. This version changes the button text to read ‘Processing’ during any pre-slicing delay. + +*Layer view line type. +The line type color scheme in the layer view has been tweaked with new colors for infill and support interfaces so that they can be distinguished better. + +*Nozzle switch prime distance. +Certain materials “ooze” more than others during retraction and long moves. Vgribinchuk has contributed a new setting that lets you finetune the restart distance, so that the full extrusion width is achieved when resuming a print. + +*Smart Z seam. +A new option to increase the aesthetic quality of your prints has been added to custom mode, under Z seam settings. Smart Z seam works by analyzing your model’s geometry and automatically choosing when to hide or expose the seam, so that visible seams on outer walls are kept to a minimum. + +*Separate Z axis movements. +Z axis movement handling has been improved to reduce the chance of print head collisions with prints. + +*Flow per feature. +You can now adjust material flow for specific features of your print, such as walls, infill, support, prime towers, and adhesion. This allows line spacing to be controlled separately from flow settings. + +*Merge infill lines. +We did some finetuning of the CuraEngine to improve print quality by filling thin infill areas more precisely and efficiently, and reducing movements that caused excessive gantry vibration. + +*Z hop speed. +The Z hop speed for printers with no specific speed value would default to ‘299792458000’ (light speed!) The new Z hop speed setting ensures that all Z hops are performed at a more sensible speed, which you can control. + +*Support tower diameter. +The ‘Minimum diameter’ setting for support towers has been renamed to ‘Maximum Tower-Supported Diameter’, which is more accurate and more specific because it mentions towers. + +*Square prime towers. +Circular prime towers are now the default option. Square prime towers have been eradicated forever. + +*Third-party printer order. +The ‘add printer’ menu now includes third-party printers that are ordered by manufacturer, so that specific machines can be found easily. Printer definitions. New machine definitions added for: +- Anet A6 contributed by markbernard +- Stereotech ST320 and START contributed by frylock34 +- Erzay3D contributed by Robokinetics +- FL Sun QQ contributed by curso007 +- GeeTech A30 contributed by curso007 + +*Creawsome mod. +This version has pulled the Creawsome mod, made by trouch, which adds a lot of print profiles for Creality printers. It includes definitions for Creality CR10 Mini, CR10s, CR10s Pro, CR20, CR20 Pro, Ender 2, Ender 4 and Ender 5, and updates the definitions for CR10, CR10s4, CR10s5 and Ender3. The CRX is untouched. Pull requests are now submitted that merge the mod into mainline Cura. + +* Bug fixes +- Noto Sans. Noto Sans was introduced as the default font in Ultimaker Cura some versions ago, but until now it wouldn’t render properly in the application unless already installed on your computer. This release forces the application to render Noto Sans even when it’s not installed as a font on your computer. Fun fact: Ultimaker recently rebranded, and we made Noto Sans our corporate font as well. +- Reslice with per-model settings. When slicing a model with per-model settings, a change of one of the per model settings would not trigger a reslice. This has been fixed. Serial port interruptions. This version adds a way to stop serial connections if you add command line parameters. +- Print one-at-a-time blob. In print-one-at-a-time mode, prime blobs could cause obstructions and cause prints to fail. This has been fixed. +- Prime tower brim overlap fix. Fixed an issue where models on the build plate could overlap with brims of other models. +- Wrong printer name. Fixed an issue where Ultimaker 3D printers that are synchronized over the network would display ‘Extruder 1’ in place of the printer’s hostname. +- Unnecessary travel at print start. Fixed an issue where printing without a prime blob would cause the print head to make a 10 mm travel move for no reason. +- Stair step height. This version fixes support stair step height, which influences the adhesion between the model and support printed on top (supports everywhere). For now, this bug has had no influence on PVA supported prints. + [4.1.0] *Draggable settings panels There was a lot of feedback from the 4.0 release about the collapsible settings panels. Based on this feedback, we decided to make them completely draggable. The print settings panel (prepare stage) and the color scheme panel (preview stage) can now be dragged and positioned anywhere in the 3D viewer. A double click of the header will reset each to their default position. @@ -33,7 +270,7 @@ Gcode now contains comments to indicate when a prime tower is printed, like so: 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 +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. 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 84f06bee0e..282004c3a9 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -88,7 +88,7 @@ "action_button": [39, 44, 48, 255], "action_button_text": [255, 255, 255, 200], "action_button_border": [255, 255, 255, 30], - "action_button_hovered": [39, 44, 48, 255], + "action_button_hovered": [79, 85, 89, 255], "action_button_hovered_text": [255, 255, 255, 255], "action_button_hovered_border": [255, 255, 255, 30], "action_button_active": [39, 44, 48, 30], @@ -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], diff --git a/resources/themes/cura-light-colorblind/icons/sign_in_to_cloud.svg b/resources/themes/cura-light-colorblind/icons/sign_in_to_cloud.svg new file mode 100644 index 0000000000..09ba300b6a --- /dev/null +++ b/resources/themes/cura-light-colorblind/icons/sign_in_to_cloud.svg @@ -0,0 +1,16 @@ + + + + Group-cloud Copy + Created with Sketch. + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light-colorblind/theme.json b/resources/themes/cura-light-colorblind/theme.json new file mode 100644 index 0000000000..10349acbfd --- /dev/null +++ b/resources/themes/cura-light-colorblind/theme.json @@ -0,0 +1,29 @@ +{ + "metadata": { + "name": "Colorblind Assist Light", + "inherits": "cura-light" + }, + + "colors": { + + "x_axis": [200, 0, 0, 255], + "y_axis": [64, 64, 255, 255], + "model_default": [156, 201, 36, 255], + "model_overhang": [200, 0, 255, 255], + + "model_selection_outline": [12, 169, 227, 255], + + "xray": [26, 26, 62, 255], + "xray_error": [255, 0, 0, 255], + + "layerview_inset_0": [255, 64, 0, 255], + "layerview_inset_x": [0, 156, 128, 255], + "layerview_skin": [255, 255, 86, 255], + "layerview_support": [255, 255, 0, 255], + + "layerview_infill": [0, 255, 255, 255], + "layerview_support_infill": [0, 200, 200, 255], + + "layerview_move_retraction": [0, 100, 255, 255] + } +} diff --git a/resources/themes/cura-light/icons/pos_modify_dont_support_overlap.svg b/resources/themes/cura-light/icons/pos_modify_dont_support_overlap.svg new file mode 100644 index 0000000000..124e95f558 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_modify_dont_support_overlap.svg @@ -0,0 +1,26 @@ + + + + pms_modify_dont_support_overlap + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/pos_modify_overlaps.svg b/resources/themes/cura-light/icons/pos_modify_overlaps.svg new file mode 100644 index 0000000000..a664e820a6 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_modify_overlaps.svg @@ -0,0 +1,17 @@ + + + + pms_modify_overlaps + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/pos_normal.svg b/resources/themes/cura-light/icons/pos_normal.svg new file mode 100644 index 0000000000..8a49ef3a00 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_normal.svg @@ -0,0 +1,9 @@ + + + + pms_Normal + Created with Sketch. + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/pos_print_as_support.svg b/resources/themes/cura-light/icons/pos_print_as_support.svg new file mode 100644 index 0000000000..3562ca1fe0 --- /dev/null +++ b/resources/themes/cura-light/icons/pos_print_as_support.svg @@ -0,0 +1,14 @@ + + + + pms_printassupport + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/icons/rotate_face_layflat.svg b/resources/themes/cura-light/icons/rotate_face_layflat.svg new file mode 100644 index 0000000000..261a624cf0 --- /dev/null +++ b/resources/themes/cura-light/icons/rotate_face_layflat.svg @@ -0,0 +1,12 @@ + + + + select face lay flat + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/resources/themes/cura-light/images/logo.svg b/resources/themes/cura-light/images/logo.svg index 814b157e2a..611840e248 100644 --- a/resources/themes/cura-light/images/logo.svg +++ b/resources/themes/cura-light/images/logo.svg @@ -1,37 +1,18 @@ - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/resources/themes/cura-light/styles.qml b/resources/themes/cura-light/styles.qml index 2cf3b0ed58..daf06ac6af 100755 --- a/resources/themes/cura-light/styles.qml +++ b/resources/themes/cura-light/styles.qml @@ -241,7 +241,7 @@ QtObject Behavior on color { ColorAnimation { duration: 50; } } border.width: (control.hasOwnProperty("needBorder") && control.needBorder) ? Theme.getSize("default_lining").width : 0 - border.color: Theme.getColor("lining") + border.color: control.checked ? Theme.getColor("icon") : Theme.getColor("lining") } } diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 9d118fa7dd..e5009d8633 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -372,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], @@ -441,6 +441,9 @@ "sizes": { "window_minimum_size": [80, 48], + "large_popup_dialog": [48, 40], + "popup_dialog": [40, 36], + "small_popup_dialog": [36, 12], "main_window_header": [0.0, 4.0], "main_window_header_button": [8, 2.35], @@ -483,7 +486,7 @@ "default_lining": [0.08, 0.08], "default_arrow": [0.8, 0.8], - "logo": [8, 1.75], + "logo": [16, 3.5], "wide_margin": [2.0, 2.0], "thick_margin": [1.71, 1.43], @@ -544,7 +547,7 @@ "slider_groove": [0.5, 0.5], "slider_groove_radius": [0.15, 0.15], "slider_handle": [1.5, 1.5], - "slider_layerview_size": [1.0, 26.0], + "slider_layerview_size": [1.0, 34.0], "layerview_menu_size": [16.0, 4.0], "layerview_legend_size": [1.0, 1.0], @@ -619,6 +622,8 @@ "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_column": [18.0, 1.0] + "monitor_column": [18.0, 1.0], + "monitor_progress_bar": [16.5, 1.0], + "monitor_margin": [1.5, 1.5] } } diff --git a/resources/variants/Leapfrog_Bolt_Pro_Brass_0.4.inst.cfg b/resources/variants/Leapfrog_Bolt_Pro_Brass_0.4.inst.cfg new file mode 100644 index 0000000000..c428f9e2b9 --- /dev/null +++ b/resources/variants/Leapfrog_Bolt_Pro_Brass_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = Brass 0.4 +version = 4 +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/Leapfrog_Bolt_Pro_NozzleX_0.4.inst.cfg b/resources/variants/Leapfrog_Bolt_Pro_NozzleX_0.4.inst.cfg new file mode 100644 index 0000000000..6790b63189 --- /dev/null +++ b/resources/variants/Leapfrog_Bolt_Pro_NozzleX_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = NozzleX 0.4 +version = 4 +definition = leapfrog_bolt_pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg index 32d12214b2..420db71e6d 100644 --- a/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg +++ b/resources/variants/Mark2_for_Ultimaker2_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = Mark2_for_Ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg index 5a04878a4e..e877bf0182 100644 --- a/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg +++ b/resources/variants/Mark2_for_Ultimaker2_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = Mark2_for_Ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg index b9e1745174..a641f94abd 100644 --- a/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg +++ b/resources/variants/Mark2_for_Ultimaker2_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = Mark2_for_Ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg b/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg index 4656c9f502..00b89de2a7 100644 --- a/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg +++ b/resources/variants/Mark2_for_Ultimaker2_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = Mark2_for_Ultimaker2 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index 24203fa0d3..13afb97261 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index 6b980110b7..e975129722 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index 62669929dc..0e3d1e8e8a 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -5,7 +5,7 @@ definition = cartesio [metadata] author = Cartesio -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/creality_base_0.2.inst.cfg b/resources/variants/creality_base_0.2.inst.cfg new file mode 100644 index 0000000000..024024b8b1 --- /dev/null +++ b/resources/variants/creality_base_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_base_0.3.inst.cfg b/resources/variants/creality_base_0.3.inst.cfg new file mode 100644 index 0000000000..ecee3b263d --- /dev/null +++ b/resources/variants/creality_base_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_base_0.4.inst.cfg b/resources/variants/creality_base_0.4.inst.cfg new file mode 100644 index 0000000000..80f98c72a9 --- /dev/null +++ b/resources/variants/creality_base_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_base_0.5.inst.cfg b/resources/variants/creality_base_0.5.inst.cfg new file mode 100644 index 0000000000..d7b497c3fd --- /dev/null +++ b/resources/variants/creality_base_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/hms434_0.6tpnozzle.inst.cfg b/resources/variants/creality_base_0.6.inst.cfg similarity index 50% rename from resources/variants/hms434_0.6tpnozzle.inst.cfg rename to resources/variants/creality_base_0.6.inst.cfg index e7bcdd5fd4..9f2891a500 100644 --- a/resources/variants/hms434_0.6tpnozzle.inst.cfg +++ b/resources/variants/creality_base_0.6.inst.cfg @@ -1,13 +1,12 @@ [general] -name = 0.6mm TP extruder +name = 0.6mm Nozzle version = 4 -definition = hms434 +definition = creality_base [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle [values] machine_nozzle_size = 0.6 -machine_nozzle_tip_outer_diameter = 1.05 diff --git a/resources/variants/creality_base_0.8.inst.cfg b/resources/variants/creality_base_0.8.inst.cfg new file mode 100644 index 0000000000..83cfe29df9 --- /dev/null +++ b/resources/variants/creality_base_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_base_1.0.inst.cfg b/resources/variants/creality_base_1.0.inst.cfg new file mode 100644 index 0000000000..5f33a6f571 --- /dev/null +++ b/resources/variants/creality_base_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_base + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10_0.2.inst.cfg b/resources/variants/creality_cr10_0.2.inst.cfg new file mode 100644 index 0000000000..46a319ab06 --- /dev/null +++ b/resources/variants/creality_cr10_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10_0.3.inst.cfg b/resources/variants/creality_cr10_0.3.inst.cfg new file mode 100644 index 0000000000..6515e2cc36 --- /dev/null +++ b/resources/variants/creality_cr10_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10_0.4.inst.cfg b/resources/variants/creality_cr10_0.4.inst.cfg new file mode 100644 index 0000000000..5e3ce36692 --- /dev/null +++ b/resources/variants/creality_cr10_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10_0.5.inst.cfg b/resources/variants/creality_cr10_0.5.inst.cfg new file mode 100644 index 0000000000..0914780a54 --- /dev/null +++ b/resources/variants/creality_cr10_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10_0.6.inst.cfg b/resources/variants/creality_cr10_0.6.inst.cfg new file mode 100644 index 0000000000..2d0d42c518 --- /dev/null +++ b/resources/variants/creality_cr10_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10_0.8.inst.cfg b/resources/variants/creality_cr10_0.8.inst.cfg new file mode 100644 index 0000000000..73990c7862 --- /dev/null +++ b/resources/variants/creality_cr10_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10_1.0.inst.cfg b/resources/variants/creality_cr10_1.0.inst.cfg new file mode 100644 index 0000000000..6357a40498 --- /dev/null +++ b/resources/variants/creality_cr10_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10max_0.2.inst.cfg b/resources/variants/creality_cr10max_0.2.inst.cfg new file mode 100644 index 0000000000..6cc1be53da --- /dev/null +++ b/resources/variants/creality_cr10max_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10max_0.3.inst.cfg b/resources/variants/creality_cr10max_0.3.inst.cfg new file mode 100644 index 0000000000..8e1265f3ab --- /dev/null +++ b/resources/variants/creality_cr10max_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10max_0.4.inst.cfg b/resources/variants/creality_cr10max_0.4.inst.cfg new file mode 100644 index 0000000000..b00c8ba4b0 --- /dev/null +++ b/resources/variants/creality_cr10max_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10max_0.5.inst.cfg b/resources/variants/creality_cr10max_0.5.inst.cfg new file mode 100644 index 0000000000..c00fe00c5c --- /dev/null +++ b/resources/variants/creality_cr10max_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10max_0.6.inst.cfg b/resources/variants/creality_cr10max_0.6.inst.cfg new file mode 100644 index 0000000000..97393c357d --- /dev/null +++ b/resources/variants/creality_cr10max_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10max_0.8.inst.cfg b/resources/variants/creality_cr10max_0.8.inst.cfg new file mode 100644 index 0000000000..54a01e0973 --- /dev/null +++ b/resources/variants/creality_cr10max_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10max_1.0.inst.cfg b/resources/variants/creality_cr10max_1.0.inst.cfg new file mode 100644 index 0000000000..b291b9cd1c --- /dev/null +++ b/resources/variants/creality_cr10max_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10max + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10mini_0.2.inst.cfg b/resources/variants/creality_cr10mini_0.2.inst.cfg new file mode 100644 index 0000000000..21a8806881 --- /dev/null +++ b/resources/variants/creality_cr10mini_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10mini_0.3.inst.cfg b/resources/variants/creality_cr10mini_0.3.inst.cfg new file mode 100644 index 0000000000..00c079f21e --- /dev/null +++ b/resources/variants/creality_cr10mini_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10mini_0.4.inst.cfg b/resources/variants/creality_cr10mini_0.4.inst.cfg new file mode 100644 index 0000000000..69c9d9d09a --- /dev/null +++ b/resources/variants/creality_cr10mini_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10mini_0.5.inst.cfg b/resources/variants/creality_cr10mini_0.5.inst.cfg new file mode 100644 index 0000000000..763708080d --- /dev/null +++ b/resources/variants/creality_cr10mini_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10mini_0.6.inst.cfg b/resources/variants/creality_cr10mini_0.6.inst.cfg new file mode 100644 index 0000000000..6fcb2c06fc --- /dev/null +++ b/resources/variants/creality_cr10mini_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10mini_0.8.inst.cfg b/resources/variants/creality_cr10mini_0.8.inst.cfg new file mode 100644 index 0000000000..d5d3658738 --- /dev/null +++ b/resources/variants/creality_cr10mini_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10mini_1.0.inst.cfg b/resources/variants/creality_cr10mini_1.0.inst.cfg new file mode 100644 index 0000000000..008b7bc645 --- /dev/null +++ b/resources/variants/creality_cr10mini_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10mini + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10s4_0.2.inst.cfg b/resources/variants/creality_cr10s4_0.2.inst.cfg new file mode 100644 index 0000000000..779b6133ab --- /dev/null +++ b/resources/variants/creality_cr10s4_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10s4_0.3.inst.cfg b/resources/variants/creality_cr10s4_0.3.inst.cfg new file mode 100644 index 0000000000..a244c09eba --- /dev/null +++ b/resources/variants/creality_cr10s4_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10s4_0.4.inst.cfg b/resources/variants/creality_cr10s4_0.4.inst.cfg new file mode 100644 index 0000000000..a92d4a3df4 --- /dev/null +++ b/resources/variants/creality_cr10s4_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10s4_0.5.inst.cfg b/resources/variants/creality_cr10s4_0.5.inst.cfg new file mode 100644 index 0000000000..0cc93cff6a --- /dev/null +++ b/resources/variants/creality_cr10s4_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10s4_0.6.inst.cfg b/resources/variants/creality_cr10s4_0.6.inst.cfg new file mode 100644 index 0000000000..b0a57972c4 --- /dev/null +++ b/resources/variants/creality_cr10s4_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10s4_0.8.inst.cfg b/resources/variants/creality_cr10s4_0.8.inst.cfg new file mode 100644 index 0000000000..83b19ba5cb --- /dev/null +++ b/resources/variants/creality_cr10s4_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10s4_1.0.inst.cfg b/resources/variants/creality_cr10s4_1.0.inst.cfg new file mode 100644 index 0000000000..0b852f22e1 --- /dev/null +++ b/resources/variants/creality_cr10s4_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10s4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10s5_0.2.inst.cfg b/resources/variants/creality_cr10s5_0.2.inst.cfg new file mode 100644 index 0000000000..8e300a1325 --- /dev/null +++ b/resources/variants/creality_cr10s5_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10s5_0.3.inst.cfg b/resources/variants/creality_cr10s5_0.3.inst.cfg new file mode 100644 index 0000000000..c710a9eefa --- /dev/null +++ b/resources/variants/creality_cr10s5_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10s5_0.4.inst.cfg b/resources/variants/creality_cr10s5_0.4.inst.cfg new file mode 100644 index 0000000000..3827335a8d --- /dev/null +++ b/resources/variants/creality_cr10s5_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10s5_0.5.inst.cfg b/resources/variants/creality_cr10s5_0.5.inst.cfg new file mode 100644 index 0000000000..8520799dfb --- /dev/null +++ b/resources/variants/creality_cr10s5_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10s5_0.6.inst.cfg b/resources/variants/creality_cr10s5_0.6.inst.cfg new file mode 100644 index 0000000000..c21827ffa7 --- /dev/null +++ b/resources/variants/creality_cr10s5_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10s5_0.8.inst.cfg b/resources/variants/creality_cr10s5_0.8.inst.cfg new file mode 100644 index 0000000000..e6676c9240 --- /dev/null +++ b/resources/variants/creality_cr10s5_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10s5_1.0.inst.cfg b/resources/variants/creality_cr10s5_1.0.inst.cfg new file mode 100644 index 0000000000..1c84c1117d --- /dev/null +++ b/resources/variants/creality_cr10s5_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10s5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10s_0.2.inst.cfg b/resources/variants/creality_cr10s_0.2.inst.cfg new file mode 100644 index 0000000000..aa01e71be6 --- /dev/null +++ b/resources/variants/creality_cr10s_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10s_0.3.inst.cfg b/resources/variants/creality_cr10s_0.3.inst.cfg new file mode 100644 index 0000000000..1ae25762ab --- /dev/null +++ b/resources/variants/creality_cr10s_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10s_0.4.inst.cfg b/resources/variants/creality_cr10s_0.4.inst.cfg new file mode 100644 index 0000000000..b72d53a8bc --- /dev/null +++ b/resources/variants/creality_cr10s_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10s_0.5.inst.cfg b/resources/variants/creality_cr10s_0.5.inst.cfg new file mode 100644 index 0000000000..98f222b229 --- /dev/null +++ b/resources/variants/creality_cr10s_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10s_0.6.inst.cfg b/resources/variants/creality_cr10s_0.6.inst.cfg new file mode 100644 index 0000000000..444a107666 --- /dev/null +++ b/resources/variants/creality_cr10s_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10s_0.8.inst.cfg b/resources/variants/creality_cr10s_0.8.inst.cfg new file mode 100644 index 0000000000..9d35763da5 --- /dev/null +++ b/resources/variants/creality_cr10s_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10s_1.0.inst.cfg b/resources/variants/creality_cr10s_1.0.inst.cfg new file mode 100644 index 0000000000..47b43b3222 --- /dev/null +++ b/resources/variants/creality_cr10s_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10s + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr10spro_0.2.inst.cfg b/resources/variants/creality_cr10spro_0.2.inst.cfg new file mode 100644 index 0000000000..b0a4a3223d --- /dev/null +++ b/resources/variants/creality_cr10spro_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr10spro_0.3.inst.cfg b/resources/variants/creality_cr10spro_0.3.inst.cfg new file mode 100644 index 0000000000..37a20a4455 --- /dev/null +++ b/resources/variants/creality_cr10spro_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr10spro_0.4.inst.cfg b/resources/variants/creality_cr10spro_0.4.inst.cfg new file mode 100644 index 0000000000..760e9bcdd5 --- /dev/null +++ b/resources/variants/creality_cr10spro_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr10spro_0.5.inst.cfg b/resources/variants/creality_cr10spro_0.5.inst.cfg new file mode 100644 index 0000000000..02b04babac --- /dev/null +++ b/resources/variants/creality_cr10spro_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr10spro_0.6.inst.cfg b/resources/variants/creality_cr10spro_0.6.inst.cfg new file mode 100644 index 0000000000..ef7cb16379 --- /dev/null +++ b/resources/variants/creality_cr10spro_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr10spro_0.8.inst.cfg b/resources/variants/creality_cr10spro_0.8.inst.cfg new file mode 100644 index 0000000000..96577fcb9a --- /dev/null +++ b/resources/variants/creality_cr10spro_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr10spro_1.0.inst.cfg b/resources/variants/creality_cr10spro_1.0.inst.cfg new file mode 100644 index 0000000000..1b8a7edd38 --- /dev/null +++ b/resources/variants/creality_cr10spro_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr10spro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr20_0.2.inst.cfg b/resources/variants/creality_cr20_0.2.inst.cfg new file mode 100644 index 0000000000..83ed7d453c --- /dev/null +++ b/resources/variants/creality_cr20_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr20_0.3.inst.cfg b/resources/variants/creality_cr20_0.3.inst.cfg new file mode 100644 index 0000000000..71245ef751 --- /dev/null +++ b/resources/variants/creality_cr20_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr20_0.4.inst.cfg b/resources/variants/creality_cr20_0.4.inst.cfg new file mode 100644 index 0000000000..a467e9db97 --- /dev/null +++ b/resources/variants/creality_cr20_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr20_0.5.inst.cfg b/resources/variants/creality_cr20_0.5.inst.cfg new file mode 100644 index 0000000000..288ff1821f --- /dev/null +++ b/resources/variants/creality_cr20_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr20_0.6.inst.cfg b/resources/variants/creality_cr20_0.6.inst.cfg new file mode 100644 index 0000000000..ebd75a82d7 --- /dev/null +++ b/resources/variants/creality_cr20_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr20_0.8.inst.cfg b/resources/variants/creality_cr20_0.8.inst.cfg new file mode 100644 index 0000000000..9f55c4e8c6 --- /dev/null +++ b/resources/variants/creality_cr20_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr20_1.0.inst.cfg b/resources/variants/creality_cr20_1.0.inst.cfg new file mode 100644 index 0000000000..a31af91078 --- /dev/null +++ b/resources/variants/creality_cr20_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr20 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_cr20pro_0.2.inst.cfg b/resources/variants/creality_cr20pro_0.2.inst.cfg new file mode 100644 index 0000000000..f54e9cc622 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_cr20pro_0.3.inst.cfg b/resources/variants/creality_cr20pro_0.3.inst.cfg new file mode 100644 index 0000000000..a915b3365c --- /dev/null +++ b/resources/variants/creality_cr20pro_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_cr20pro_0.4.inst.cfg b/resources/variants/creality_cr20pro_0.4.inst.cfg new file mode 100644 index 0000000000..16ac215a9d --- /dev/null +++ b/resources/variants/creality_cr20pro_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_cr20pro_0.5.inst.cfg b/resources/variants/creality_cr20pro_0.5.inst.cfg new file mode 100644 index 0000000000..cd44cec729 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_cr20pro_0.6.inst.cfg b/resources/variants/creality_cr20pro_0.6.inst.cfg new file mode 100644 index 0000000000..15b60a94c0 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_cr20pro_0.8.inst.cfg b/resources/variants/creality_cr20pro_0.8.inst.cfg new file mode 100644 index 0000000000..12bcaccab7 --- /dev/null +++ b/resources/variants/creality_cr20pro_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_cr20pro_1.0.inst.cfg b/resources/variants/creality_cr20pro_1.0.inst.cfg new file mode 100644 index 0000000000..f14431a45f --- /dev/null +++ b/resources/variants/creality_cr20pro_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_cr20pro + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender2_0.2.inst.cfg b/resources/variants/creality_ender2_0.2.inst.cfg new file mode 100644 index 0000000000..f3b0a6603f --- /dev/null +++ b/resources/variants/creality_ender2_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender2_0.3.inst.cfg b/resources/variants/creality_ender2_0.3.inst.cfg new file mode 100644 index 0000000000..d43c96017d --- /dev/null +++ b/resources/variants/creality_ender2_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender2_0.4.inst.cfg b/resources/variants/creality_ender2_0.4.inst.cfg new file mode 100644 index 0000000000..2e3a1d9215 --- /dev/null +++ b/resources/variants/creality_ender2_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender2_0.5.inst.cfg b/resources/variants/creality_ender2_0.5.inst.cfg new file mode 100644 index 0000000000..dc7cefe27a --- /dev/null +++ b/resources/variants/creality_ender2_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender2_0.6.inst.cfg b/resources/variants/creality_ender2_0.6.inst.cfg new file mode 100644 index 0000000000..fecf5573ad --- /dev/null +++ b/resources/variants/creality_ender2_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender2_0.8.inst.cfg b/resources/variants/creality_ender2_0.8.inst.cfg new file mode 100644 index 0000000000..2a2aa5001e --- /dev/null +++ b/resources/variants/creality_ender2_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender2_1.0.inst.cfg b/resources/variants/creality_ender2_1.0.inst.cfg new file mode 100644 index 0000000000..5562fbd819 --- /dev/null +++ b/resources/variants/creality_ender2_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender2 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender3_0.2.inst.cfg b/resources/variants/creality_ender3_0.2.inst.cfg new file mode 100644 index 0000000000..ce44646d09 --- /dev/null +++ b/resources/variants/creality_ender3_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender3_0.3.inst.cfg b/resources/variants/creality_ender3_0.3.inst.cfg new file mode 100644 index 0000000000..4ccfc38820 --- /dev/null +++ b/resources/variants/creality_ender3_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender3_0.4.inst.cfg b/resources/variants/creality_ender3_0.4.inst.cfg new file mode 100644 index 0000000000..6183845e0f --- /dev/null +++ b/resources/variants/creality_ender3_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender3_0.5.inst.cfg b/resources/variants/creality_ender3_0.5.inst.cfg new file mode 100644 index 0000000000..2c4219b51c --- /dev/null +++ b/resources/variants/creality_ender3_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender3_0.6.inst.cfg b/resources/variants/creality_ender3_0.6.inst.cfg new file mode 100644 index 0000000000..429d21db0e --- /dev/null +++ b/resources/variants/creality_ender3_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender3_0.8.inst.cfg b/resources/variants/creality_ender3_0.8.inst.cfg new file mode 100644 index 0000000000..3ccc5e90c1 --- /dev/null +++ b/resources/variants/creality_ender3_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender3_1.0.inst.cfg b/resources/variants/creality_ender3_1.0.inst.cfg new file mode 100644 index 0000000000..feda76917e --- /dev/null +++ b/resources/variants/creality_ender3_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender4_0.2.inst.cfg b/resources/variants/creality_ender4_0.2.inst.cfg new file mode 100644 index 0000000000..42aebf3ad7 --- /dev/null +++ b/resources/variants/creality_ender4_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender4_0.3.inst.cfg b/resources/variants/creality_ender4_0.3.inst.cfg new file mode 100644 index 0000000000..269819366e --- /dev/null +++ b/resources/variants/creality_ender4_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender4_0.4.inst.cfg b/resources/variants/creality_ender4_0.4.inst.cfg new file mode 100644 index 0000000000..8a6bda3495 --- /dev/null +++ b/resources/variants/creality_ender4_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender4_0.5.inst.cfg b/resources/variants/creality_ender4_0.5.inst.cfg new file mode 100644 index 0000000000..5d5640d510 --- /dev/null +++ b/resources/variants/creality_ender4_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender4_0.6.inst.cfg b/resources/variants/creality_ender4_0.6.inst.cfg new file mode 100644 index 0000000000..28e806b46c --- /dev/null +++ b/resources/variants/creality_ender4_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender4_0.8.inst.cfg b/resources/variants/creality_ender4_0.8.inst.cfg new file mode 100644 index 0000000000..e90adbcfde --- /dev/null +++ b/resources/variants/creality_ender4_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender4_1.0.inst.cfg b/resources/variants/creality_ender4_1.0.inst.cfg new file mode 100644 index 0000000000..221ddacb83 --- /dev/null +++ b/resources/variants/creality_ender4_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender4 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender5_0.2.inst.cfg b/resources/variants/creality_ender5_0.2.inst.cfg new file mode 100644 index 0000000000..4c03104c09 --- /dev/null +++ b/resources/variants/creality_ender5_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender5_0.3.inst.cfg b/resources/variants/creality_ender5_0.3.inst.cfg new file mode 100644 index 0000000000..901745dd70 --- /dev/null +++ b/resources/variants/creality_ender5_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender5_0.4.inst.cfg b/resources/variants/creality_ender5_0.4.inst.cfg new file mode 100644 index 0000000000..ad071a3b38 --- /dev/null +++ b/resources/variants/creality_ender5_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender5_0.5.inst.cfg b/resources/variants/creality_ender5_0.5.inst.cfg new file mode 100644 index 0000000000..978eaf61c1 --- /dev/null +++ b/resources/variants/creality_ender5_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender5_0.6.inst.cfg b/resources/variants/creality_ender5_0.6.inst.cfg new file mode 100644 index 0000000000..57c0e8dda3 --- /dev/null +++ b/resources/variants/creality_ender5_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender5_0.8.inst.cfg b/resources/variants/creality_ender5_0.8.inst.cfg new file mode 100644 index 0000000000..253dd4374f --- /dev/null +++ b/resources/variants/creality_ender5_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender5_1.0.inst.cfg b/resources/variants/creality_ender5_1.0.inst.cfg new file mode 100644 index 0000000000..140f326557 --- /dev/null +++ b/resources/variants/creality_ender5_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender5 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/creality_ender5plus_0.2.inst.cfg b/resources/variants/creality_ender5plus_0.2.inst.cfg new file mode 100644 index 0000000000..e07489a22a --- /dev/null +++ b/resources/variants/creality_ender5plus_0.2.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.2mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.2 diff --git a/resources/variants/creality_ender5plus_0.3.inst.cfg b/resources/variants/creality_ender5plus_0.3.inst.cfg new file mode 100644 index 0000000000..e6bf5b75b2 --- /dev/null +++ b/resources/variants/creality_ender5plus_0.3.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.3mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.3 diff --git a/resources/variants/creality_ender5plus_0.4.inst.cfg b/resources/variants/creality_ender5plus_0.4.inst.cfg new file mode 100644 index 0000000000..a18f640415 --- /dev/null +++ b/resources/variants/creality_ender5plus_0.4.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.4mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/creality_ender5plus_0.5.inst.cfg b/resources/variants/creality_ender5plus_0.5.inst.cfg new file mode 100644 index 0000000000..cb3e05a82c --- /dev/null +++ b/resources/variants/creality_ender5plus_0.5.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.5mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/creality_ender5plus_0.6.inst.cfg b/resources/variants/creality_ender5plus_0.6.inst.cfg new file mode 100644 index 0000000000..6200ab2f5a --- /dev/null +++ b/resources/variants/creality_ender5plus_0.6.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.6mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/creality_ender5plus_0.8.inst.cfg b/resources/variants/creality_ender5plus_0.8.inst.cfg new file mode 100644 index 0000000000..4366fd59bd --- /dev/null +++ b/resources/variants/creality_ender5plus_0.8.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 0.8mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.8 diff --git a/resources/variants/creality_ender5plus_1.0.inst.cfg b/resources/variants/creality_ender5plus_1.0.inst.cfg new file mode 100644 index 0000000000..ff4cc0d25f --- /dev/null +++ b/resources/variants/creality_ender5plus_1.0.inst.cfg @@ -0,0 +1,12 @@ +[general] +name = 1.0mm Nozzle +version = 4 +definition = creality_ender5plus + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 1.0 diff --git a/resources/variants/deltacomb_025_e3d.inst.cfg b/resources/variants/deltacomb_025_e3d.inst.cfg old mode 100755 new mode 100644 index fd6575bf9a..594447cc39 --- 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 = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/deltacomb_040_e3d.inst.cfg b/resources/variants/deltacomb_040_e3d.inst.cfg old mode 100755 new mode 100644 index 3fab3e74c7..17deafdaf9 --- 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 = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/deltacomb_080_e3d.inst.cfg b/resources/variants/deltacomb_080_e3d.inst.cfg old mode 100755 new mode 100644 index 61f8226280..9e94ccd83f --- 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 = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index bf00512c8f..c7d11e4eff 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index cb4f7e4d34..8e6cd96030 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index 9f0e3fe145..46d9c88462 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index b80f80155b..c8939cfce4 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 7a0afdccb2..ce3aefbeb2 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 6330b2e77c..c2a9e29533 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index 412bbf7410..7f32b5eeea 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -5,7 +5,7 @@ definition = fabtotum [metadata] author = FABtotum -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.25tpnozzle.inst.cfg b/resources/variants/felixpro2_0.25.inst.cfg similarity index 50% rename from resources/variants/hms434_0.25tpnozzle.inst.cfg rename to resources/variants/felixpro2_0.25.inst.cfg index 72e4afe87a..ea8dd8ebed 100644 --- a/resources/variants/hms434_0.25tpnozzle.inst.cfg +++ b/resources/variants/felixpro2_0.25.inst.cfg @@ -1,13 +1,14 @@ [general] -name = 0.25mm TP extruder +name = 0.25 mm version = 4 -definition = hms434 +definition = felixpro2dual [metadata] -setting_version = 7 +author = pnks type = variant +setting_version = 11 hardware_type = nozzle [values] machine_nozzle_size = 0.25 -machine_nozzle_tip_outer_diameter = 1.05 +layer_height_0 = 0.15 diff --git a/resources/variants/felixpro2_0.35.inst.cfg b/resources/variants/felixpro2_0.35.inst.cfg new file mode 100644 index 0000000000..f580633098 --- /dev/null +++ b/resources/variants/felixpro2_0.35.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.35 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.35 +layer_height_0 = 0.2 diff --git a/resources/variants/felixpro2_0.50.inst.cfg b/resources/variants/felixpro2_0.50.inst.cfg new file mode 100644 index 0000000000..5eda1ba795 --- /dev/null +++ b/resources/variants/felixpro2_0.50.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = 0.50 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.5 diff --git a/resources/variants/felixpro2_0.70.inst.cfg b/resources/variants/felixpro2_0.70.inst.cfg new file mode 100644 index 0000000000..afa97b539a --- /dev/null +++ b/resources/variants/felixpro2_0.70.inst.cfg @@ -0,0 +1,14 @@ +[general] +name = 0.70 mm +version = 4 +definition = felixpro2dual + +[metadata] +author = pnks +type = variant +setting_version = 11 +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.70 +layer_height_0 = 0.4 diff --git a/resources/variants/felixtec4_0.25.inst.cfg b/resources/variants/felixtec4_0.25.inst.cfg index 7a158bcc80..2993440972 100644 --- a/resources/variants/felixtec4_0.25.inst.cfg +++ b/resources/variants/felixtec4_0.25.inst.cfg @@ -6,7 +6,7 @@ definition = felixtec4dual [metadata] author = kerog777 type = variant -setting_version = 7 +setting_version = 11 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.35.inst.cfg b/resources/variants/felixtec4_0.35.inst.cfg index 35850afa7a..6d9079b637 100644 --- a/resources/variants/felixtec4_0.35.inst.cfg +++ b/resources/variants/felixtec4_0.35.inst.cfg @@ -6,7 +6,7 @@ definition = felixtec4dual [metadata] author = kerog777 type = variant -setting_version = 7 +setting_version = 11 hardware_type = nozzle [values] diff --git a/resources/variants/felixtec4_0.50.inst.cfg b/resources/variants/felixtec4_0.50.inst.cfg index d4ee356132..6bc04c3224 100644 --- a/resources/variants/felixtec4_0.50.inst.cfg +++ b/resources/variants/felixtec4_0.50.inst.cfg @@ -7,7 +7,7 @@ definition = felixtec4dual author = kerog777 type = variant hardware_type = nozzle -setting_version = 7 +setting_version = 11 [values] machine_nozzle_size = 0.5 diff --git a/resources/variants/felixtec4_0.70.inst.cfg b/resources/variants/felixtec4_0.70.inst.cfg index b5dfc3758c..52057a3be5 100644 --- a/resources/variants/felixtec4_0.70.inst.cfg +++ b/resources/variants/felixtec4_0.70.inst.cfg @@ -7,7 +7,7 @@ definition = felixtec4dual author = kerog777 type = variant hardware_type = nozzle -setting_version = 7 +setting_version = 11 [values] machine_nozzle_size = 0.70 diff --git a/resources/variants/gmax15plus_025_e3d.inst.cfg b/resources/variants/gmax15plus_025_e3d.inst.cfg index 42d692d5df..a3c590c5ad 100644 --- a/resources/variants/gmax15plus_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_04_e3d.inst.cfg b/resources/variants/gmax15plus_04_e3d.inst.cfg index fca1fd837d..60aa600bc6 100644 --- a/resources/variants/gmax15plus_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_04_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_05_e3d.inst.cfg b/resources/variants/gmax15plus_05_e3d.inst.cfg index 9c514dea8f..7485e9a474 100644 --- a/resources/variants/gmax15plus_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_05_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_05_jhead.inst.cfg b/resources/variants/gmax15plus_05_jhead.inst.cfg index 29dded70e2..4d0f1b1f1b 100644 --- a/resources/variants/gmax15plus_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_05_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_06_e3d.inst.cfg b/resources/variants/gmax15plus_06_e3d.inst.cfg index 18569ff55a..a76d867b28 100644 --- a/resources/variants/gmax15plus_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_06_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_08_e3d.inst.cfg b/resources/variants/gmax15plus_08_e3d.inst.cfg index 5ec1ce6916..bfea83ad11 100644 --- a/resources/variants/gmax15plus_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_08_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_10_jhead.inst.cfg b/resources/variants/gmax15plus_10_jhead.inst.cfg index 81c8ce2fcc..c9dc51f9dc 100644 --- a/resources/variants/gmax15plus_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_10_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_12_e3d.inst.cfg b/resources/variants/gmax15plus_12_e3d.inst.cfg index 3381f53cd0..671bf00f73 100644 --- a/resources/variants/gmax15plus_12_e3d.inst.cfg +++ b/resources/variants/gmax15plus_12_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg index a3d22f8629..7303487eb8 100644 --- a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg index 4338432b10..60f66dc3aa 100644 --- a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg index 1c1151324c..45b1bb15f2 100644 --- a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg index ce2e9546be..28dc31a2dc 100644 --- a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg index ec2f378ff5..63bc1358e2 100644 --- a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg index 06f9969302..6f766f0655 100644 --- a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg index 6fefc37862..6aee101856 100644 --- a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg @@ -5,7 +5,7 @@ definition = gmax15plus_dual [metadata] author = gcreate -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_0.4tpnozzle.inst.cfg b/resources/variants/hms434_0.4tpnozzle.inst.cfg index 64bf1d6e63..ffecadd3db 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 = 11 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..903493cc4e 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 = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/hms434_1.2tpnozzle.inst.cfg b/resources/variants/hms434_1.2tpnozzle.inst.cfg deleted file mode 100644 index 21ef8f2a17..0000000000 --- a/resources/variants/hms434_1.2tpnozzle.inst.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[general] -name = 1.2mm TP extruder -version = 4 -definition = hms434 - -[metadata] -setting_version = 7 -type = variant -hardware_type = nozzle - -[values] -machine_nozzle_size = 1.2 -machine_nozzle_tip_outer_diameter = 1.3 diff --git a/resources/variants/hms434_1.5tpnozzle.inst.cfg b/resources/variants/hms434_1.5tpnozzle.inst.cfg deleted file mode 100644 index 23aeffaee5..0000000000 --- a/resources/variants/hms434_1.5tpnozzle.inst.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[general] -name = 1.5mm TP extruder -version = 4 -definition = hms434 - -[metadata] -setting_version = 7 -type = variant -hardware_type = nozzle - -[values] -machine_nozzle_size = 1.5 -machine_nozzle_tip_outer_diameter = 1.6 diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index 18481a8342..812b6a4dee 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = imade3d_jellybox [metadata] author = IMADE3D -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_2_0.4.inst.cfg similarity index 63% rename from resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg rename to resources/variants/imade3d_jellybox_2_0.4.inst.cfg index 2f4d35676e..c96249ffea 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_2_0.4.inst.cfg @@ -1,11 +1,11 @@ [general] -name = 0.4 mm 2-fans +name = 0.4 mm version = 4 -definition = imade3d_jellybox +definition = imade3d_jellybox_2 [metadata] author = IMADE3D -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/nwa3d_a31_04.inst.cfg b/resources/variants/nwa3d_a31_04.inst.cfg new file mode 100644 index 0000000000..557b2bd072 --- /dev/null +++ b/resources/variants/nwa3d_a31_04.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = Standard 0.4mm +version = 4 +definition = nwa3d_a31 + +[metadata] +author = DragonJe +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.4 diff --git a/resources/variants/nwa3d_a31_06.inst.cfg b/resources/variants/nwa3d_a31_06.inst.cfg new file mode 100644 index 0000000000..1b23b1e1f8 --- /dev/null +++ b/resources/variants/nwa3d_a31_06.inst.cfg @@ -0,0 +1,13 @@ +[general] +name = Engineering 0.6mm +version = 4 +definition = nwa3d_a31 + +[metadata] +author = DragonJe +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +machine_nozzle_size = 0.6 diff --git a/resources/variants/strateo3d_standard_04.inst.cfg b/resources/variants/strateo3d_standard_04.inst.cfg index 29cd075177..c7e9d433db 100644 --- a/resources/variants/strateo3d_standard_04.inst.cfg +++ b/resources/variants/strateo3d_standard_04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/strateo3d_standard_06.inst.cfg b/resources/variants/strateo3d_standard_06.inst.cfg index b4618f2bd8..f8fe060bf3 100644 --- a/resources/variants/strateo3d_standard_06.inst.cfg +++ b/resources/variants/strateo3d_standard_06.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = strateo3d [metadata] -setting_version = 10 +setting_version = 11 type = variant hardware_type = nozzle 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..38636be20f 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 = 11 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..e00d816183 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 = 11 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..ceb7ade2ed 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 = 11 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..bdc90a417a 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 = 11 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..58c7ef255b 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 = 11 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..8eb4bd0915 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 = 11 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..6087e0acdf 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 = 11 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..a024784550 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 = 11 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..4f70be4da8 100644 --- a/resources/variants/tizyx_evy_0.3.inst.cfg +++ b/resources/variants/tizyx_evy_0.3.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.4.inst.cfg b/resources/variants/tizyx_evy_0.4.inst.cfg index ab67d2492e..9fc644023f 100644 --- a/resources/variants/tizyx_evy_0.4.inst.cfg +++ b/resources/variants/tizyx_evy_0.4.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.5.inst.cfg b/resources/variants/tizyx_evy_0.5.inst.cfg index 6b1cf6b0fb..0005989cca 100644 --- a/resources/variants/tizyx_evy_0.5.inst.cfg +++ b/resources/variants/tizyx_evy_0.5.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.6.inst.cfg b/resources/variants/tizyx_evy_0.6.inst.cfg index 58368245cf..3bd7cff273 100644 --- a/resources/variants/tizyx_evy_0.6.inst.cfg +++ b/resources/variants/tizyx_evy_0.6.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_0.8.inst.cfg b/resources/variants/tizyx_evy_0.8.inst.cfg index 8f6d8ce633..ac56c46502 100644 --- a/resources/variants/tizyx_evy_0.8.inst.cfg +++ b/resources/variants/tizyx_evy_0.8.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_1.0.inst.cfg b/resources/variants/tizyx_evy_1.0.inst.cfg index 7e00752a90..1ba55936aa 100644 --- a/resources/variants/tizyx_evy_1.0.inst.cfg +++ b/resources/variants/tizyx_evy_1.0.inst.cfg @@ -5,7 +5,7 @@ definition = tizyx_evy [metadata] author = TiZYX -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_evy_dual_classic.inst.cfg b/resources/variants/tizyx_evy_dual_classic.inst.cfg index 00b7a7745a..b9239088e0 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 = 11 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..166d981765 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 = 11 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..647adc64ac 100644 --- a/resources/variants/tizyx_k25_0.2.inst.cfg +++ b/resources/variants/tizyx_k25_0.2.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.3.inst.cfg b/resources/variants/tizyx_k25_0.3.inst.cfg index 41612baa4d..ef7e227f69 100644 --- a/resources/variants/tizyx_k25_0.3.inst.cfg +++ b/resources/variants/tizyx_k25_0.3.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.4.inst.cfg b/resources/variants/tizyx_k25_0.4.inst.cfg index b3fca877b3..517aedabc6 100644 --- a/resources/variants/tizyx_k25_0.4.inst.cfg +++ b/resources/variants/tizyx_k25_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.5.inst.cfg b/resources/variants/tizyx_k25_0.5.inst.cfg index e0dd4f1054..c0d8702adc 100644 --- a/resources/variants/tizyx_k25_0.5.inst.cfg +++ b/resources/variants/tizyx_k25_0.5.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.6.inst.cfg b/resources/variants/tizyx_k25_0.6.inst.cfg index d2aebe4695..0940ff6407 100644 --- a/resources/variants/tizyx_k25_0.6.inst.cfg +++ b/resources/variants/tizyx_k25_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_0.8.inst.cfg b/resources/variants/tizyx_k25_0.8.inst.cfg index 5a425988ee..0e02a9210f 100644 --- a/resources/variants/tizyx_k25_0.8.inst.cfg +++ b/resources/variants/tizyx_k25_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/tizyx_k25_1.0.inst.cfg b/resources/variants/tizyx_k25_1.0.inst.cfg index 01c8944960..c19ea398bd 100644 --- a/resources/variants/tizyx_k25_1.0.inst.cfg +++ b/resources/variants/tizyx_k25_1.0.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = tizyx_k25 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.25.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.25.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.25.inst.cfg index eceb659e21..98e77b7a84 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.25.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.25 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.4.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.4.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.4.inst.cfg index e3dad7fd56..617980b5bf 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.4.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.4 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.6.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.6.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.6.inst.cfg index 82a5c08362..f0c959a26e 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.6.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.6 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_olsson_0.8.inst.cfg similarity index 72% rename from resources/variants/ultimaker2_extended_0.8.inst.cfg rename to resources/variants/ultimaker2_extended_olsson_0.8.inst.cfg index 4f9d1d8889..64f08d3f7b 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_olsson_0.8.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.8 mm version = 4 -definition = ultimaker2_extended +definition = ultimaker2_extended_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index 034d094e86..cee40fd59d 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index 976e129393..bd7a570554 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index b7cbe8fa62..c636b2946e 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index 437e107e89..c0e2e20a3d 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_extended_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_olsson_0.25.inst.cfg similarity index 77% rename from resources/variants/ultimaker2_0.25.inst.cfg rename to resources/variants/ultimaker2_olsson_0.25.inst.cfg index 87bb0a237d..481e793ed1 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.25.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.25 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_olsson_0.4.inst.cfg similarity index 75% rename from resources/variants/ultimaker2_0.4.inst.cfg rename to resources/variants/ultimaker2_olsson_0.4.inst.cfg index b50cc32eca..eb3d4b1d4d 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.4.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.4 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_olsson_0.6.inst.cfg similarity index 75% rename from resources/variants/ultimaker2_0.6.inst.cfg rename to resources/variants/ultimaker2_olsson_0.6.inst.cfg index fac65ed284..78923886e7 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.6.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.6 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_olsson_0.8.inst.cfg similarity index 75% rename from resources/variants/ultimaker2_0.8.inst.cfg rename to resources/variants/ultimaker2_olsson_0.8.inst.cfg index 9177e8e6ee..c2972e3393 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_olsson_0.8.inst.cfg @@ -1,10 +1,10 @@ [general] name = 0.8 mm version = 4 -definition = ultimaker2 +definition = ultimaker2_olsson [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index 0880159d03..43b5059192 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index 4543c148bb..9012398e96 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index 57ff6714a7..a7388e5f7a 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 0fd1b50c5f..9142396e68 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker2_plus [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg index 1dadf10e91..02c818df63 100644 --- a/resources/variants/ultimaker3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 2d3f210019..c6429b2cfd 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index b5a250184f..d7c4d62e42 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index df5b654e2e..400e4d092c 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 70e2a5faa8..01d465fe6a 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg index 5a9292ad1f..d8a1044620 100644 --- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 03b5b0753d..5ba9dd311c 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 8303eca4e6..b5914013b2 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index 13bb67d108..4a3f3e371f 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 36191bd054..a8d706d2e4 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker3_extended [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s3_aa0.25.inst.cfg b/resources/variants/ultimaker_s3_aa0.25.inst.cfg new file mode 100644 index 0000000000..3922e094b3 --- /dev/null +++ b/resources/variants/ultimaker_s3_aa0.25.inst.cfg @@ -0,0 +1,50 @@ +[general] +name = AA 0.25 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +brim_width = 7 +infill_line_width = 0.23 +layer_height_0 = 0.17 +line_width = 0.23 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.25 +machine_nozzle_size = 0.25 +machine_nozzle_tip_outer_diameter = 0.65 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_min_travel = 0.7 +retraction_prime_speed = =retraction_speed +skin_overlap = 15 +speed_layer_0 = 20 +speed_print = 55 +speed_topbottom = 20 +speed_wall = =math.ceil(speed_print * 30 / 55) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = 1.2 +wall_line_width_x = 0.23 +wall_thickness = 1.3 diff --git a/resources/variants/ultimaker_s3_aa0.8.inst.cfg b/resources/variants/ultimaker_s3_aa0.8.inst.cfg new file mode 100644 index 0000000000..c6f578d263 --- /dev/null +++ b/resources/variants/ultimaker_s3_aa0.8.inst.cfg @@ -0,0 +1,67 @@ +[general] +name = AA 0.8 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +acceleration_enabled = True +acceleration_print = 4000 +brim_width = 7 +cool_fan_speed = 7 +cool_fan_speed_max = 100 +cool_min_speed = 5 +default_material_print_temperature = 200 +infill_before_walls = False +infill_line_width = =round(line_width * 0.6 / 0.7, 2) +infill_overlap = 0 +infill_pattern = triangles +infill_wipe_dist = 0 +jerk_enabled = True +jerk_print = 25 +jerk_topbottom = =math.ceil(jerk_print * 25 / 25) +jerk_wall = =math.ceil(jerk_print * 25 / 25) +jerk_wall_0 = =math.ceil(jerk_wall * 25 / 25) +layer_height = 0.2 +line_width = =machine_nozzle_size +machine_min_cool_heat_time_window = 15 +machine_nozzle_cool_down_speed = 0.85 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = AA 0.8 +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 2.0 +material_final_print_temperature = =material_print_temperature - 10 +material_initial_print_temperature = =material_print_temperature - 5 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_wipe_enabled = True +retract_at_layer_change = =not magic_spiralize +retraction_amount = 6.5 +retraction_count_max = 25 +retraction_extrusion_window = 1 +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 2 +skin_overlap = 5 +speed_equalize_flow_enabled = True +speed_layer_0 = 20 +speed_print = 35 +speed_topbottom = =math.ceil(speed_print * 25 / 35) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = 20 +switch_extruder_retraction_amount = 16.5 +top_bottom_thickness = 1.4 +wall_0_inset = 0 +wall_line_width_0 = =wall_line_width +wall_line_width_x = =wall_line_width +wall_thickness = 2 diff --git a/resources/variants/ultimaker_s3_aa04.inst.cfg b/resources/variants/ultimaker_s3_aa04.inst.cfg new file mode 100644 index 0000000000..9ef3f515f0 --- /dev/null +++ b/resources/variants/ultimaker_s3_aa04.inst.cfg @@ -0,0 +1,42 @@ +[general] +name = AA 0.4 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +brim_width = 7 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = AA 0.4 +machine_nozzle_tip_outer_diameter = 1.0 +raft_acceleration = =acceleration_print +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_amount = 6.5 +retraction_count_max = 25 +retraction_min_travel = =line_width * 2 +retraction_prime_speed = =retraction_speed +skin_overlap = 15 +speed_print = 70 +speed_topbottom = =math.ceil(speed_print * 30 / 70) +speed_wall = =math.ceil(speed_print * 30 / 70) +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = 1.2 +wall_thickness = 1.3 diff --git a/resources/variants/ultimaker_s3_bb0.8.inst.cfg b/resources/variants/ultimaker_s3_bb0.8.inst.cfg new file mode 100644 index 0000000000..5c1e9c449e --- /dev/null +++ b/resources/variants/ultimaker_s3_bb0.8.inst.cfg @@ -0,0 +1,93 @@ +[general] +name = BB 0.8 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +acceleration_enabled = True +acceleration_print = 4000 +acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) +acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) +acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) +acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 4000) +brim_width = 3 +cool_fan_speed = 50 +cool_min_speed = 5 +gradual_support_infill_step_height = 1.6 +gradual_support_infill_steps = 2 +infill_line_width = =round(line_width * 0.8 / 0.7, 2) +infill_overlap = 0 +infill_pattern = triangles +infill_wipe_dist = 0 +jerk_enabled = True +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) +jerk_print = 25 +jerk_support = =math.ceil(jerk_print * 15 / 25) +jerk_support_interface = =math.ceil(jerk_support * 10 / 15) +jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) +layer_height = 0.2 +machine_min_cool_heat_time_window = 15 +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = BB 0.8 +machine_nozzle_size = 0.8 +machine_nozzle_tip_outer_diameter = 2.0 +material_print_temperature = =default_material_print_temperature + 10 +material_standby_temperature = 100 +multiple_mesh_overlap = 0 +prime_tower_enable = False +prime_tower_wipe_enabled = True +raft_acceleration = =acceleration_layer_0 +raft_airgap = 0 +raft_base_speed = 20 +raft_base_thickness = 0.3 +raft_interface_line_spacing = 0.5 +raft_interface_line_width = 0.5 +raft_interface_speed = 20 +raft_interface_thickness = 0.2 +raft_margin = 10 +raft_speed = 25 +raft_surface_layers = 1 +retraction_amount = 4.5 +retraction_count_max = 15 +retraction_extrusion_window = =retraction_amount +retraction_hop = 2 +retraction_hop_only_when_collides = True +retraction_min_travel = =line_width * 3 +retraction_prime_speed = 15 +skin_overlap = 5 +speed_layer_0 = 20 +speed_print = 35 +speed_support = =math.ceil(speed_print * 25 / 35) +speed_support_interface = =math.ceil(speed_support * 20 / 25) +speed_support_bottom = =math.ceil(speed_support_interface * 10 / 20) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +speed_prime_tower = =math.ceil(speed_print * 7 / 35) +support_angle = 60 +support_bottom_height = =layer_height * 2 +support_bottom_pattern = zigzag +support_bottom_stair_step_height = =layer_height +support_infill_rate = 50 +support_infill_sparse_thickness = 0.4 +support_interface_enable = True +support_interface_height = 0.6 +support_interface_skip_height = =layer_height +support_join_distance = 3 +support_line_width = =round(line_width * 0.4 / 0.35, 2) +support_offset = 1.5 +support_pattern = triangles +support_use_towers = False +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) +support_xy_distance_overhang = =wall_line_width_0 / 4 +support_z_distance = 0 +switch_extruder_prime_speed = 15 +switch_extruder_retraction_amount = 12 +top_bottom_thickness = 1 +wall_0_inset = 0 +wall_line_width_0 = =wall_line_width +wall_line_width_x = =wall_line_width +wall_thickness = 1 diff --git a/resources/variants/ultimaker_s3_bb04.inst.cfg b/resources/variants/ultimaker_s3_bb04.inst.cfg new file mode 100644 index 0000000000..7c37ffaa76 --- /dev/null +++ b/resources/variants/ultimaker_s3_bb04.inst.cfg @@ -0,0 +1,51 @@ +[general] +name = BB 0.4 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +acceleration_support = =math.ceil(acceleration_print * 2000 / 4000) +acceleration_support_interface = =math.ceil(acceleration_support * 1500 / 2000) +acceleration_support_bottom = =math.ceil(acceleration_support_interface * 100 / 1500) +acceleration_prime_tower = =math.ceil(acceleration_print * 200 / 4000) +cool_fan_speed_max = =cool_fan_speed +gradual_support_infill_steps = 2 +jerk_prime_tower = =math.ceil(jerk_print * 2 / 25) +jerk_support = =math.ceil(jerk_print * 15 / 25) +jerk_support_interface = =math.ceil(jerk_support * 10 / 15) +jerk_support_bottom = =math.ceil(jerk_support_interface * 1 / 10) +machine_nozzle_heat_up_speed = 1.5 +machine_nozzle_id = BB 0.4 +machine_nozzle_tip_outer_diameter = 1.0 +raft_base_speed = 20 +raft_interface_speed = 20 +raft_speed = 25 +retraction_amount = 4.5 +retraction_count_max = 20 +retraction_extrusion_window = =retraction_amount +retraction_min_travel = =3 * line_width +speed_layer_0 = 20 +speed_prime_tower = =math.ceil(speed_print * 10 / 35) +speed_support = =math.ceil(speed_print * 25 / 35) +speed_support_interface = =math.ceil(speed_support * 20 / 25) +speed_support_bottom = =math.ceil(speed_support_interface * 10 / 20) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +support_bottom_height = =layer_height * 2 +support_bottom_pattern = zigzag +support_bottom_stair_step_height = =layer_height +support_infill_rate = 50 +support_infill_sparse_thickness = 0.2 +support_interface_enable = True +support_interface_height = 0.6 +support_interface_skip_height = =layer_height +support_join_distance = 3 +support_line_width = =round(line_width * 0.4 / 0.35, 2) +support_offset = 3 +support_xy_distance = =round(wall_line_width_0 * 0.75, 2) +support_xy_distance_overhang = =wall_line_width_0 / 2 +switch_extruder_retraction_amount = 12 diff --git a/resources/variants/ultimaker_s3_cc06.inst.cfg b/resources/variants/ultimaker_s3_cc06.inst.cfg new file mode 100644 index 0000000000..882b248986 --- /dev/null +++ b/resources/variants/ultimaker_s3_cc06.inst.cfg @@ -0,0 +1,46 @@ +[general] +name = CC 0.6 +version = 4 +definition = ultimaker_s3 + +[metadata] +setting_version = 11 +type = variant +hardware_type = nozzle + +[values] +brim_width = 7 +machine_nozzle_cool_down_speed = 0.9 +machine_nozzle_id = CC 0.6 +machine_nozzle_size = 0.6 +raft_acceleration = =acceleration_print +raft_airgap = 0.3 +raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 +raft_interface_line_spacing = =raft_interface_line_width + 0.2 +raft_interface_line_width = =line_width * 2 +raft_interface_thickness = =layer_height * 1.5 +raft_jerk = =jerk_print +raft_margin = 15 +raft_surface_layers = 2 +retraction_count_max = 25 +retraction_min_travel = =line_width * 2 +retraction_prime_speed = =retraction_speed +speed_infill = =speed_print +speed_layer_0 = 20 +speed_print = 45 +speed_support = =speed_topbottom +speed_topbottom = =math.ceil(speed_print * 25 / 45) +speed_travel_layer_0 = 50 +speed_wall = =math.ceil(speed_print * 30 / 45) +speed_wall_0 = =math.ceil(speed_wall * 25 / 30) +speed_wall_x = =speed_wall +support_angle = 60 +support_bottom_distance = =support_z_distance / 2 +support_pattern = zigzag +support_top_distance = =support_z_distance +support_use_towers = True +support_z_distance = =layer_height * 2 +switch_extruder_prime_speed = =switch_extruder_retraction_speeds +switch_extruder_retraction_amount = =machine_heat_zone_length +top_bottom_thickness = =layer_height * 6 +wall_thickness = =line_width * 3 diff --git a/resources/variants/ultimaker_s5_aa0.25.inst.cfg b/resources/variants/ultimaker_s5_aa0.25.inst.cfg index e2ed3defe9..442da77bbf 100644 --- a/resources/variants/ultimaker_s5_aa0.25.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.25.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa0.8.inst.cfg b/resources/variants/ultimaker_s5_aa0.8.inst.cfg index 84b3802fef..4af3273236 100644 --- a/resources/variants/ultimaker_s5_aa0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_aa0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg index 88dbc25d91..e2a573d64c 100644 --- a/resources/variants/ultimaker_s5_aa04.inst.cfg +++ b/resources/variants/ultimaker_s5_aa04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_aluminum.inst.cfg b/resources/variants/ultimaker_s5_aluminum.inst.cfg index 65b0a6da68..3ee1f9f2f4 100644 --- a/resources/variants/ultimaker_s5_aluminum.inst.cfg +++ b/resources/variants/ultimaker_s5_aluminum.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = buildplate diff --git a/resources/variants/ultimaker_s5_bb0.8.inst.cfg b/resources/variants/ultimaker_s5_bb0.8.inst.cfg index d05ce74f61..f393da7ff3 100644 --- a/resources/variants/ultimaker_s5_bb0.8.inst.cfg +++ b/resources/variants/ultimaker_s5_bb0.8.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_bb04.inst.cfg b/resources/variants/ultimaker_s5_bb04.inst.cfg index 2d3bc42a50..7b3634a923 100644 --- a/resources/variants/ultimaker_s5_bb04.inst.cfg +++ b/resources/variants/ultimaker_s5_bb04.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_cc06.inst.cfg b/resources/variants/ultimaker_s5_cc06.inst.cfg index f64e3b9055..f788811f58 100644 --- a/resources/variants/ultimaker_s5_cc06.inst.cfg +++ b/resources/variants/ultimaker_s5_cc06.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = nozzle diff --git a/resources/variants/ultimaker_s5_glass.inst.cfg b/resources/variants/ultimaker_s5_glass.inst.cfg index 87196e5e9b..d08fdbe494 100644 --- a/resources/variants/ultimaker_s5_glass.inst.cfg +++ b/resources/variants/ultimaker_s5_glass.inst.cfg @@ -4,7 +4,7 @@ version = 4 definition = ultimaker_s5 [metadata] -setting_version = 7 +setting_version = 11 type = variant hardware_type = buildplate diff --git a/run_coverage.py b/run_coverage.py new file mode 100644 index 0000000000..2fd60f9342 --- /dev/null +++ b/run_coverage.py @@ -0,0 +1,22 @@ +import pytest +from pathlib import Path + +# Small helper script to run the coverage of main code & all plugins + +path = Path("plugins") +args = ["--cov" ,"cura" , "--cov-report", "html"] +all_paths = [] +for p in path.glob('**/*'): + if p.is_dir(): + if p.name in ["__pycache__", "tests"]: + continue + args.append("--cov") + args.append(str(p)) + all_paths.append(str(p)) + +for path in all_paths: + args.append(path) +args.append(".") +args.append("-x") +pytest.main(args) + diff --git a/run_mypy.py b/run_mypy.py index 27f07cd281..6be424bda8 100644 --- a/run_mypy.py +++ b/run_mypy.py @@ -1,80 +1,82 @@ -#!/usr/bin/env python -import os -import sys -import subprocess - - -# A quick Python implementation of unix 'where' command. -def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str: - if search_path is None: - search_path = "" - paths = search_path.split(os.pathsep) - result = "" - print(" -> sys.executable location: %s" % sys.executable) - sys_exec_dir = os.path.dirname(sys.executable) - root_dir = os.path.dirname(sys_exec_dir) - paths += [sys_exec_dir, - os.path.join(root_dir, "bin"), - os.path.join(root_dir, "scripts"), - ] - paths = set(paths) - - for path in sorted(paths): - print(" -> Searching %s" % path) - candidate_path = os.path.join(path, exe_name) - if os.path.exists(candidate_path): - result = candidate_path - break - return result - - -def findModules(path): - result = [] - for entry in os.scandir(path): - if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")): - result.append(entry.name) - return result - - -def main(): - # Find Uranium via the PYTHONPATH var - uraniumUMPath = where("UM", os.getenv("PYTHONPATH")) - if uraniumUMPath is None: - uraniumUMPath = os.path.join("..", "Uranium") - uraniumPath = os.path.dirname(uraniumUMPath) - - mypy_path_parts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"), - uraniumPath, os.path.join(uraniumPath, "stubs")] - if sys.platform == "win32": - os.putenv("MYPYPATH", ";".join(mypy_path_parts)) - else: - os.putenv("MYPYPATH", ":".join(mypy_path_parts)) - - # Mypy really needs to be run via its Python script otherwise it can't find its data files. - mypy_exe_name = "mypy.exe" if sys.platform == "win32" else "mypy" - mypy_exe_dir = where(mypy_exe_name) - mypy_module = os.path.join(os.path.dirname(mypy_exe_dir), mypy_exe_name) - print("Found mypy exe path: %s" % mypy_exe_dir) - print("Found mypy module path: %s" % mypy_module) - - plugins = findModules("plugins") - plugins.sort() - - mods = ["cura"] + plugins + findModules("plugins/VersionUpgrade") - - for mod in mods: - print("------------- Checking module {mod}".format(**locals())) - if sys.platform == "win32": - result = subprocess.run([mypy_module, "-p", mod, "--ignore-missing-imports"]) - else: - result = subprocess.run([sys.executable, mypy_module, "-p", mod, "--ignore-missing-imports"]) - if result.returncode != 0: - print("\nModule {mod} failed checking. :(".format(**locals())) - return 1 - else: - print("\n\nDone checking. All is good.") - return 0 - - -if __name__ == "__main__": - sys.exit(main()) +#!/usr/bin/env python +import os +import sys +import subprocess + + +# A quick Python implementation of unix 'where' command. +def where(exe_name: str, search_path: str = os.getenv("PATH")) -> str: + if search_path is None: + search_path = "" + paths = search_path.split(os.pathsep) + result = "" + print(" -> sys.executable location: %s" % sys.executable) + sys_exec_dir = os.path.dirname(sys.executable) + root_dir = os.path.dirname(sys_exec_dir) + paths += [sys_exec_dir, + os.path.join(root_dir, "bin"), + os.path.join(root_dir, "scripts"), + ] + paths = set(paths) + + for path in sorted(paths): + print(" -> Searching %s" % path) + candidate_path = os.path.join(path, exe_name) + if os.path.exists(candidate_path): + result = candidate_path + break + return result + + +def findModules(path): + result = [] + for entry in os.scandir(path): + if entry.is_dir() and os.path.exists(os.path.join(path, entry.name, "__init__.py")): + result.append(entry.name) + return result + + +def main(): + # Find Uranium via the PYTHONPATH var + uraniumUMPath = where("UM", os.getenv("PYTHONPATH")) + if uraniumUMPath is None: + uraniumUMPath = os.path.join("..", "Uranium") + uraniumPath = os.path.dirname(uraniumUMPath) + + mypy_path_parts = [".", os.path.join(".", "plugins"), os.path.join(".", "plugins", "VersionUpgrade"), + uraniumPath, os.path.join(uraniumPath, "stubs")] + if sys.platform == "win32": + os.putenv("MYPYPATH", ";".join(mypy_path_parts)) + else: + os.putenv("MYPYPATH", ":".join(mypy_path_parts)) + + # Mypy really needs to be run via its Python script otherwise it can't find its data files. + mypy_exe_name = "mypy.exe" if sys.platform == "win32" else "mypy" + mypy_exe_dir = where(mypy_exe_name) + mypy_module = os.path.join(os.path.dirname(mypy_exe_dir), mypy_exe_name) + print("Found mypy exe path: %s" % mypy_exe_dir) + print("Found mypy module path: %s" % mypy_module) + + plugins = findModules("plugins") + plugins.sort() + + mods = ["cura"] + plugins + findModules("plugins/VersionUpgrade") + success_code = 0 + for mod in mods: + print("------------- Checking module {mod}".format(**locals())) + if sys.platform == "win32": + result = subprocess.run([mypy_module, "-p", mod, "--ignore-missing-imports"]) + else: + result = subprocess.run([sys.executable, mypy_module, "-p", mod, "--ignore-missing-imports"]) + if result.returncode != 0: + print("\nModule {mod} failed checking. :(".format(**locals())) + success_code = 1 + if success_code: + print("\n\nSome modules failed checking!") + else: + print("\n\nDone checking. All is good.") + return success_code + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/scripts/lionbridge_import.py b/scripts/lionbridge_import.py new file mode 100644 index 0000000000..0c2c132216 --- /dev/null +++ b/scripts/lionbridge_import.py @@ -0,0 +1,180 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import argparse #To get the source directory from command line arguments. +import io # To fix encoding issues in Windows +import os #To find files from the source. +import os.path #To find files from the source and the destination path. + +cura_files = {"cura", "fdmprinter.def.json", "fdmextruder.def.json"} +uranium_files = {"uranium"} + +## Imports translation files from Lionbridge. +# +# Lionbridge has a bit of a weird export feature. It exports it to the same +# file type as what we imported, so that's a .pot file. However this .pot file +# only contains the translations, so the header is completely empty. We need +# to merge those translations into our existing files so that the header is +# preserved. +def lionbridge_import(source: str) -> None: + print("Importing from:", source) + print("Importing to Cura:", destination_cura()) + print("Importing to Uranium:", destination_uranium()) + + for language in (directory for directory in os.listdir(source) if os.path.isdir(os.path.join(source, directory))): + print("================ Processing language:", language, "================") + directory = os.path.join(source, language) + for file_pot in (file for file in os.listdir(directory) if file.endswith(".pot")): + source_file = file_pot[:-4] #Strip extension. + if source_file in cura_files: + destination_file = os.path.join(destination_cura(), language.replace("-", "_"), source_file + ".po") + print("Merging", source_file, "(Cura) into", destination_file) + elif source_file in uranium_files: + destination_file = os.path.join(destination_uranium(), language.replace("-", "_"), source_file + ".po") + print("Merging", source_file, "(Uranium) into", destination_file) + else: + raise Exception("Unknown file: " + source_file + "... Is this Cura or Uranium?") + + with io.open(os.path.join(directory, file_pot), encoding = "utf8") as f: + source_str = f.read() + with io.open(destination_file, encoding = "utf8") as f: + destination_str = f.read() + result = merge(source_str, destination_str) + with io.open(destination_file, "w", encoding = "utf8") as f: + f.write(result) + +## Gets the destination path to copy the translations for Cura to. +# \return Destination path for Cura. +def destination_cura() -> str: + return os.path.abspath(os.path.join(__file__, "..", "..", "resources", "i18n")) + +## Gets the destination path to copy the translations for Uranium to. +# \return Destination path for Uranium. +def destination_uranium() -> str: + try: + import UM + except ImportError: + relative_path = os.path.join(__file__, "..", "..", "..", "Uranium", "resources", "i18n", "uranium.pot") + print(os.path.abspath(relative_path)) + if os.path.exists(relative_path): + return os.path.abspath(relative_path) + else: + raise Exception("Can't find Uranium. Please put UM on the PYTHONPATH or put the Uranium folder next to the Cura folder.") + return os.path.abspath(os.path.join(UM.__file__, "..", "..", "resources", "i18n")) + +## Merges translations from the source file into the destination file if they +# were missing in the destination file. +# \param source The contents of the source .po file. +# \param destination The contents of the destination .po file. +def merge(source: str, destination: str) -> str: + result_lines = [] + last_destination = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + current_state = "none" + for line in destination.split("\n"): + if line.startswith("msgctxt \""): + current_state = "msgctxt" + line = line[8:] + last_destination[current_state] = "" + elif line.startswith("msgid \""): + current_state = "msgid" + line = line[6:] + last_destination[current_state] = "" + elif line.startswith("msgstr \""): + current_state = "msgstr" + line = line[7:] + last_destination[current_state] = "" + elif line.startswith("msgid_plural \""): + current_state = "msgid_plural" + line = line[13:] + last_destination[current_state] = "" + + if line.startswith("\"") and line.endswith("\""): + last_destination[current_state] += line + "\n" + else: #White lines or comment lines trigger us to search for the translation in the source file. + if last_destination["msgstr"] == "\"\"\n" and last_destination["msgid"] != "\"\"\n": #No translation for this yet! + last_destination["msgstr"] = find_translation(source, last_destination["msgctxt"], last_destination["msgid"]) #Actually place the translation in. + if last_destination["msgctxt"] != "\"\"\n" or last_destination["msgid"] != "\"\"\n" or last_destination["msgid_plural"] != "\"\"\n" or last_destination["msgstr"] != "\"\"\n": + if last_destination["msgctxt"] != "\"\"\n": + result_lines.append("msgctxt {msgctxt}".format(msgctxt = last_destination["msgctxt"][:-1])) #The [:-1] to strip the last newline. + result_lines.append("msgid {msgid}".format(msgid = last_destination["msgid"][:-1])) + if last_destination["msgid_plural"] != "\"\"\n": + result_lines.append("msgid_plural {msgid_plural}".format(msgid_plural = last_destination["msgid_plural"][:-1])) + else: + result_lines.append("msgstr {msgstr}".format(msgstr = last_destination["msgstr"][:-1])) + last_destination = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + result_lines.append(line) #This line itself. + return "\n".join(result_lines) + +## Finds a translation in the source file. +# \param source The contents of the source .po file. +# \param msgctxt The ctxt of the translation to find. +# \param msgid The id of the translation to find. +def find_translation(source: str, msgctxt: str, msgid: str) -> str: + last_source = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + current_state = "none" + for line in source.split("\n"): + if line.startswith("msgctxt \""): + current_state = "msgctxt" + line = line[8:] + last_source[current_state] = "" + elif line.startswith("msgid \""): + current_state = "msgid" + line = line[6:] + last_source[current_state] = "" + elif line.startswith("msgstr \""): + current_state = "msgstr" + line = line[7:] + last_source[current_state] = "" + elif line.startswith("msgid_plural \""): + current_state = "msgid_plural" + line = line[13:] + last_source[current_state] = "" + + if line.startswith("\"") and line.endswith("\""): + last_source[current_state] += line + "\n" + else: #White lines trigger us to process this translation. Is it the correct one? + #Process the source and destination keys for comparison independent of newline technique. + source_ctxt = "".join((line.strip()[1:-1] for line in last_source["msgctxt"].split("\n"))) + source_id = "".join((line.strip()[1:-1] for line in last_source["msgid"].split("\n"))) + dest_ctxt = "".join((line.strip()[1:-1] for line in msgctxt.split("\n"))) + dest_id = "".join((line.strip()[1:-1] for line in msgid.split("\n"))) + + if source_ctxt == dest_ctxt and source_id == dest_id: + if last_source["msgstr"] == "\"\"\n" and last_source["msgid_plural"] == "\"\"\n": + print("!!! Empty translation for {" + dest_ctxt + "}", dest_id, "!!!") + return last_source["msgstr"] + + last_source = { + "msgctxt": "\"\"\n", + "msgid": "\"\"\n", + "msgstr": "\"\"\n", + "msgid_plural": "\"\"\n" + } + + #Still here? Then the entire msgctxt+msgid combination was not found at all. + print("!!! Missing translation for {" + msgctxt.strip() + "}", msgid.strip(), "!!!") + return "\"\"\n" + +if __name__ == "__main__": + argparser = argparse.ArgumentParser(description = "Import translation files from Lionbridge.") + argparser.add_argument("source") + args = argparser.parse_args() + lionbridge_import(args.source) \ No newline at end of file diff --git a/tests/API/TestAccount.py b/tests/API/TestAccount.py index fd3d5aea55..d2708638cb 100644 --- a/tests/API/TestAccount.py +++ b/tests/API/TestAccount.py @@ -1,9 +1,8 @@ -from unittest.mock import MagicMock, patch, PropertyMock +from unittest.mock import MagicMock import pytest -from cura.API import CuraAPI, Account -from cura.OAuth2.AuthorizationService import AuthorizationService +from cura.API import Account from cura.OAuth2.Models import UserProfile diff --git a/tests/Machines/TestContainerTree.py b/tests/Machines/TestContainerTree.py new file mode 100644 index 0000000000..ef11d9acc0 --- /dev/null +++ b/tests/Machines/TestContainerTree.py @@ -0,0 +1,93 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest +from UM.Settings.DefinitionContainer import DefinitionContainer +from cura.Machines.ContainerTree import ContainerTree +from cura.Settings.GlobalStack import GlobalStack + + +def createMockedStack(definition_id: str): + result = MagicMock(spec = GlobalStack) + result.definition.getId = MagicMock(return_value = definition_id) + + extruder_left_mock = MagicMock() + extruder_left_mock.variant.getName = MagicMock(return_value = definition_id + "_left_variant_name") + extruder_left_mock.material.getMetaDataEntry = MagicMock(return_value = definition_id + "_left_material_base_file") + extruder_left_mock.isEnabled = True + extruder_right_mock = MagicMock() + extruder_right_mock.variant.getName = MagicMock(return_value = definition_id + "_right_variant_name") + extruder_right_mock.material.getMetaDataEntry = MagicMock(return_value = definition_id + "_right_material_base_file") + extruder_right_mock.isEnabled = True + extruder_list = [extruder_left_mock, extruder_right_mock] + result.extruderList = extruder_list + return result + + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findContainerStacks = MagicMock(return_value = [createMockedStack("machine_1"), createMockedStack("machine_2")]) + result.findContainersMetadata = lambda id: [{"id": id}] if id in {"machine_1", "machine_2"} else [] + return result + +@pytest.fixture +def application(): + return MagicMock(getGlobalContainerStack = MagicMock(return_value = createMockedStack("current_global_stack"))) + + +def test_containerTreeInit(container_registry): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + container_tree = ContainerTree() + + assert "machine_1" in container_tree.machines + assert "machine_2" in container_tree.machines + +def test_getCurrentQualityGroupsNoGlobalStack(container_registry): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = MagicMock(getGlobalContainerStack = MagicMock(return_value = None)))): + container_tree = ContainerTree() + result = container_tree.getCurrentQualityGroups() + + assert len(result) == 0 + +def test_getCurrentQualityGroups(container_registry, application): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + container_tree = ContainerTree() + container_tree.machines._machines["current_global_stack"] = MagicMock() # Mock so that we can track whether the getQualityGroups function gets called with correct parameters. + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + result = container_tree.getCurrentQualityGroups() + + # As defined in the fixture for application. + expected_variant_names = ["current_global_stack_left_variant_name", "current_global_stack_right_variant_name"] + expected_material_base_files = ["current_global_stack_left_material_base_file", "current_global_stack_right_material_base_file"] + expected_is_enabled = [True, True] + + container_tree.machines["current_global_stack"].getQualityGroups.assert_called_with(expected_variant_names, expected_material_base_files, expected_is_enabled) + assert result == container_tree.machines["current_global_stack"].getQualityGroups.return_value + +def test_getCurrentQualityChangesGroupsNoGlobalStack(container_registry): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = MagicMock(getGlobalContainerStack = MagicMock(return_value = None)))): + container_tree = ContainerTree() + result = container_tree.getCurrentQualityChangesGroups() + + assert len(result) == 0 + +def test_getCurrentQualityChangesGroups(container_registry, application): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + container_tree = ContainerTree() + container_tree.machines._machines["current_global_stack"] = MagicMock() # Mock so that we can track whether the getQualityGroups function gets called with correct parameters. + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + result = container_tree.getCurrentQualityChangesGroups() + + # As defined in the fixture for application. + expected_variant_names = ["current_global_stack_left_variant_name", "current_global_stack_right_variant_name"] + expected_material_base_files = ["current_global_stack_left_material_base_file", "current_global_stack_right_material_base_file"] + expected_is_enabled = [True, True] + + container_tree.machines["current_global_stack"].getQualityChangesGroups.assert_called_with(expected_variant_names, expected_material_base_files, expected_is_enabled) + assert result == container_tree.machines["current_global_stack"].getQualityChangesGroups.return_value \ No newline at end of file diff --git a/tests/Machines/TestMachineNode.py b/tests/Machines/TestMachineNode.py new file mode 100644 index 0000000000..50d7bdafa0 --- /dev/null +++ b/tests/Machines/TestMachineNode.py @@ -0,0 +1,174 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest + +from UM.Settings.Interfaces import ContainerInterface +from cura.Machines.MachineNode import MachineNode + +metadata_dict = { + "has_materials": "false", + "has_variants": "true", + "has_machine_quality": "true", + "quality_definition": "test_quality_definition", + "exclude_materials": ["excluded_material_1", "excluded_material_2"], + "preferred_variant_name": "beautiful_nozzle", + "preferred_material": "beautiful_material", + "preferred_quality_type": "beautiful_quality_type" +} + + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findInstanceContainersMetadata = MagicMock(return_value = [{"id": "variant_1", "name": "Variant One", "quality_type": "normal"}, {"id": "variant_2", "name": "Variant Two", "quality_type": "great"}]) + result.findContainersMetadata = MagicMock(return_value = [metadata_dict]) + return result + +## Creates a machine node without anything underneath it. No sub-nodes. +# +# For testing stuff with machine nodes without testing _loadAll(). You'll need +# to add subnodes manually in your test. +@pytest.fixture +def empty_machine_node(): + empty_container_registry = MagicMock() + empty_container_registry.findContainersMetadata = MagicMock(return_value = [metadata_dict]) # Still contain the MachineNode's own metadata for the constructor. + empty_container_registry.findInstanceContainersMetadata = MagicMock(return_value = []) + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = empty_container_registry)): + with patch("cura.Machines.MachineNode.MachineNode._loadAll", MagicMock()): + return MachineNode("machine_1") + +def getMetadataEntrySideEffect(*args, **kwargs): + return metadata_dict.get(args[0]) + + +def createMockedInstanceContainer(): + result = MagicMock(spec = ContainerInterface) + result.getMetaDataEntry = MagicMock(side_effect = getMetadataEntrySideEffect) + return result + + +def createMachineNode(container_id, container_registry): + with patch("cura.Machines.MachineNode.VariantNode"): # We're not testing the variant node here, so patch it out. + with patch("cura.Machines.MachineNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + return MachineNode(container_id) + + +def test_machineNodeInit(container_registry): + machine_node = createMachineNode("machine_1", container_registry) + + # As variants get stored by name, we want to check if those get added. + assert "Variant One" in machine_node.variants + assert "Variant Two" in machine_node.variants + assert len(machine_node.variants) == 2 # And ensure that *only* those two got added. + +def test_metadataProperties(container_registry): + node = createMachineNode("machine_1", container_registry) + + # Check if each of the metadata entries got stored properly. + assert not node.has_materials + assert node.has_variants + assert node.has_machine_quality + assert node.quality_definition == metadata_dict["quality_definition"] + assert node.exclude_materials == metadata_dict["exclude_materials"] + assert node.preferred_variant_name == metadata_dict["preferred_variant_name"] + assert node.preferred_material == metadata_dict["preferred_material"] + assert node.preferred_quality_type == metadata_dict["preferred_quality_type"] + +## Test getting quality groups when there are quality profiles available for +# the requested configurations on two extruders. +def test_getQualityGroupsBothExtrudersAvailable(empty_machine_node): + # Prepare a tree inside the machine node. + extruder_0_node = MagicMock(quality_type = "quality_type_1") + extruder_1_node = MagicMock(quality_type = "quality_type_1") # Same quality type, so this is the one that can be returned. + empty_machine_node.variants = { + "variant_1": MagicMock( + materials = { + "material_1": MagicMock( + qualities = { + "quality_1": extruder_0_node + } + ) + } + ), + "variant_2": MagicMock( + materials = { + "material_2": MagicMock( + qualities = { + "quality_2": extruder_1_node + } + ) + } + ) + } + global_node = MagicMock( + container = MagicMock(id = "global_quality_container"), # Needs to exist, otherwise it won't add this quality type. + getMetaDataEntry = lambda _, __: "Global Quality Profile Name" + ) + empty_machine_node.global_qualities = { + "quality_type_1": global_node + } + + # Request the quality groups for the variants in the machine tree. + result = empty_machine_node.getQualityGroups(["variant_1", "variant_2"], ["material_1", "material_2"], [True, True]) + + assert "quality_type_1" in result, "This quality type was available for both extruders." + assert result["quality_type_1"].node_for_global == global_node + assert result["quality_type_1"].nodes_for_extruders[0] == extruder_0_node + assert result["quality_type_1"].nodes_for_extruders[1] == extruder_1_node + assert result["quality_type_1"].name == global_node.getMetaDataEntry("name", "Unnamed Profile") + assert result["quality_type_1"].quality_type == "quality_type_1" + +## Test the "is_available" flag on quality groups. +# +# If a profile is available for a quality type on an extruder but not on all +# extruders, there should be a quality group for it but it should not be made +# available. +def test_getQualityGroupsAvailability(empty_machine_node): + # Prepare a tree inside the machine node. + extruder_0_both = MagicMock(quality_type = "quality_type_both") # This quality type is available for both extruders. + extruder_1_both = MagicMock(quality_type = "quality_type_both") + extruder_0_exclusive = MagicMock(quality_type = "quality_type_0") # These quality types are only available on one of the extruders. + extruder_1_exclusive = MagicMock(quality_type = "quality_type_1") + empty_machine_node.variants = { + "variant_1": MagicMock( + materials = { + "material_1": MagicMock( + qualities = { + "quality_0_both": extruder_0_both, + "quality_0_exclusive": extruder_0_exclusive + } + ) + } + ), + "variant_2": MagicMock( + materials = { + "material_2": MagicMock( + qualities = { + "quality_1_both": extruder_1_both, + "quality_1_exclusive": extruder_1_exclusive + } + ) + } + ) + } + global_both = MagicMock(container = MagicMock(id = "global_quality_both"), getMetaDataEntry = lambda _, __: "Global Quality Both") + global_0 = MagicMock(container = MagicMock(id = "global_quality_0"), getMetaDataEntry = lambda _, __: "Global Quality 0 Exclusive") + global_1 = MagicMock(container = MagicMock(id = "global_quality_1"), getMetaDataEntry = lambda _, __: "Global Quality 1 Exclusive") + empty_machine_node.global_qualities = { + "quality_type_both": global_both, + "quality_type_0": global_0, + "quality_type_1": global_1 + } + + # Request the quality groups for the variants in the machine tree. + result = empty_machine_node.getQualityGroups(["variant_1", "variant_2"], ["material_1", "material_2"], [True, True]) + + assert "quality_type_both" in result, "This quality type was available on both extruders." + assert result["quality_type_both"].is_available, "This quality type was available on both extruders and thus should be made available." + assert "quality_type_0" in result, "This quality type was available for one of the extruders, and so there must be a group for it (even though it's unavailable)." + assert not result["quality_type_0"].is_available, "This quality type was only available for one of the extruders and thus can't be activated." + assert "quality_type_1" in result, "This quality type was available for one of the extruders, and so there must be a group for it (even though it's unavailable)." + assert not result["quality_type_1"].is_available, "This quality type was only available for one of the extruders and thus can't be activated." \ No newline at end of file diff --git a/tests/Machines/TestMaterialNode.py b/tests/Machines/TestMaterialNode.py new file mode 100644 index 0000000000..a04c8b253b --- /dev/null +++ b/tests/Machines/TestMaterialNode.py @@ -0,0 +1,155 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest + +from cura.Machines.MaterialNode import MaterialNode + +instance_container_metadata_dict = {"fdmprinter": {"no_variant": [{"id": "quality_1", "material": "material_1"}]}, + "machine_1": {"variant_1": {"material_1": [{"id": "quality_2", "material": "material_1"}, {"id": "quality_3","material": "material_1"}]}}} + +metadata_dict = {} + + +def getMetadataEntrySideEffect(*args, **kwargs): + return metadata_dict.get(args[0]) + + +def createMockedInstanceContainer(container_id): + result = MagicMock() + result.getId = MagicMock(return_value=container_id) + result.getMetaDataEntry = MagicMock(side_effect=getMetadataEntrySideEffect) + return result + + +def getInstanceContainerSideEffect(*args, **kwargs): + variant = kwargs.get("variant") + definition = kwargs.get("definition") + type = kwargs.get("type") + material = kwargs.get("material") + if material is not None and variant is not None: + definition_dict = instance_container_metadata_dict.get(definition) + variant_dict = definition_dict.get(variant) + material_dict = variant_dict.get("material_1") + return material_dict + if type == "quality": + if variant is None: + return instance_container_metadata_dict.get(definition).get("no_variant") + else: + return instance_container_metadata_dict.get(definition).get(variant).get("material_1") + if definition is None: + return [{"id": "material_1", "material": "material_1"}] + return instance_container_metadata_dict.get(definition).get("no_variant") + + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findInstanceContainersMetadata = MagicMock(side_effect=getInstanceContainerSideEffect) + result.findContainersMetadata = MagicMock(return_value = [{"base_file": "material_1", "material": "test_material_type", "GUID": "omg zomg"}]) + return result + + +def test_materialNodeInit_noMachineQuality(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = False + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + assert len(node.qualities) == 1 + assert "quality_1" in node.qualities + + +def test_materialNodeInit_MachineQuality(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + assert len(node.qualities) == 2 + assert "quality_2" in node.qualities + assert "quality_3" in node.qualities + + +def test_onRemoved_wrongContainer(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + variant_node.materials = {"material_1": MagicMock()} + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance",MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + container = createMockedInstanceContainer("material_2") + node._onRemoved(container) + + assert "material_1" in variant_node.materials + + +def test_onRemoved_rightContainer(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + container = createMockedInstanceContainer("material_1") + variant_node.materials = {"material_1": MagicMock()} + node._onRemoved(container) + + assert "material_1" not in variant_node.materials + + +def test_onMetadataChanged(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + # We only do this now since we do want it to be constructed but not actually re-evaluated. + node._loadAll = MagicMock() + + container = createMockedInstanceContainer("material_1") + container.getMetaData = MagicMock(return_value = {"base_file": "new_base_file", "material": "new_material_type", "GUID": "new_guid"}) + + node._onMetadataChanged(container) + + assert node.material_type == "new_material_type" + assert node.guid == "new_guid" + assert node.base_file == "new_base_file" + + +def test_onMetadataChanged_wrongContainer(container_registry): + variant_node = MagicMock() + variant_node.variant_name = "variant_1" + variant_node.machine.has_machine_quality = True + variant_node.machine.quality_definition = "machine_1" + with patch("cura.Machines.MaterialNode.QualityNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", + MagicMock(return_value=container_registry)): + node = MaterialNode("material_1", variant_node) + + # We only do this now since we do want it to be constructed but not actually re-evaluated. + node._loadAll = MagicMock() + + container = createMockedInstanceContainer("material_2") + container.getMetaData = MagicMock( + return_value={"base_file": "new_base_file", "material": "new_material_type", "GUID": "new_guid"}) + + node._onMetadataChanged(container) + + assert node.material_type == "test_material_type" + assert node.guid == "omg zomg" + assert node.base_file == "material_1" diff --git a/tests/Machines/TestQualityNode.py b/tests/Machines/TestQualityNode.py new file mode 100644 index 0000000000..ffe897d203 --- /dev/null +++ b/tests/Machines/TestQualityNode.py @@ -0,0 +1,95 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import patch, MagicMock +import pytest + +from cura.Machines.QualityNode import QualityNode + +## Metadata for hypothetical containers that get put in the registry. +metadatas = [ + { + "id": "matching_intent", # Matches our query. + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "matching_intent_2", # Matches our query as well. + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_type", + "type": "quality", # Doesn't match because it's not an intent. + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_definition", + "type": "intent", + "definition": "wrong_definition", # Doesn't match on the definition. + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_variant", + "type": "intent", + "definition": "correct_definition", + "variant": "wrong_variant", # Doesn't match on the variant. + "material": "correct_material", + "quality_type": "correct_quality_type" + }, + { + "id": "bad_material", + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "wrong_material", # Doesn't match on the material. + "quality_type": "correct_quality_type" + }, + { + "id": "bad_quality", + "type": "intent", + "definition": "correct_definition", + "variant": "correct_variant", + "material": "correct_material", + "quality_type": "wrong_quality_type" # Doesn't match on the quality type. + }, + { + "id": "quality_1", + "quality_type": "correct_quality_type", + "material": "correct_material" + } +] + +@pytest.fixture +def container_registry(): + result = MagicMock() + def findContainersMetadata(**kwargs): + return [metadata for metadata in metadatas if kwargs.items() <= metadata.items()] + result.findContainersMetadata = findContainersMetadata + result.findInstanceContainersMetadata = findContainersMetadata + return result + +def test_qualityNode_machine_1(container_registry): + material_node = MagicMock() + material_node.variant.machine.quality_definition = "correct_definition" + material_node.variant.variant_name = "correct_variant" + + with patch("cura.Machines.QualityNode.IntentNode"): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + node = QualityNode("quality_1", material_node) + + assert len(node.intents) == 3 + assert "matching_intent" in node.intents + assert "matching_intent_2" in node.intents + assert "empty_intent" in node.intents \ No newline at end of file diff --git a/tests/Machines/TestVariantNode.py b/tests/Machines/TestVariantNode.py new file mode 100644 index 0000000000..9a0213ef99 --- /dev/null +++ b/tests/Machines/TestVariantNode.py @@ -0,0 +1,186 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import collections # For OrderedDict to ensure that the first iteration of preferred material is dependable. +from unittest.mock import patch, MagicMock +import pytest + +from cura.Machines.VariantNode import VariantNode +import copy + +instance_container_metadata_dict = {"fdmprinter": {"no_variant": [{"base_file": "material_1", "id": "material_1"}, {"base_file": "material_2", "id": "material_2"}]}, + "machine_1": {"no_variant": [{"base_file": "material_1", "id": "material_1"}, {"base_file": "material_2", "id": "material_2"}], + "Variant One": [{"base_file": "material_1", "id": "material_1"}, {"base_file": "material_2", "id": "material_2"}]}} + + +material_node_added_test_data = [({"type": "Not a material"}, ["material_1", "material_2"]), # Wrong type + ({"type": "material", "base_file": "material_3"}, ["material_1", "material_2"]), # material_3 is on the "NOPE" list. + ({"type": "material", "base_file": "material_4", "definition": "machine_3"}, ["material_1", "material_2"]), # Wrong machine + ({"type": "material", "base_file": "material_4", "definition": "machine_1"}, ["material_1", "material_2", "material_4"]), # No variant + ({"type": "material", "base_file": "material_4", "definition": "machine_1", "variant_name": "Variant Three"}, ["material_1", "material_2"]), # Wrong variant + ({"type": "material", "base_file": "material_4", "definition": "machine_1", "variant_name": "Variant One"}, ["material_1", "material_2", "material_4"]) + ] + +material_node_update_test_data = [({"type": "material", "base_file": "material_1", "definition": "machine_1", "variant_name": "Variant One"}, ["material_1"], ["material_2"]), + ({"type": "material", "base_file": "material_1", "definition": "fdmprinter", "variant_name": "Variant One"}, [], ["material_2", "material_1"]), # Too generic + ({"type": "material", "base_file": "material_1", "definition": "machine_2", "variant_name": "Variant One"}, [], ["material_2", "material_1"]) # Wrong definition + ] + +metadata_dict = {} + + +def getMetadataEntrySideEffect(*args, **kwargs): + return metadata_dict.get(args[0]) + + +def getInstanceContainerSideEffect(*args, **kwargs): + variant = kwargs.get("variant") + definition = kwargs.get("definition") + + if variant is not None: + return instance_container_metadata_dict.get(definition).get(variant) + return instance_container_metadata_dict.get(definition).get("no_variant") + + +@pytest.fixture +def machine_node(): + mocked_machine_node = MagicMock() + mocked_machine_node.container_id = "machine_1" + mocked_machine_node.preferred_material = "preferred_material" + return mocked_machine_node + +## Constructs a variant node without any subnodes. +# +# This is useful for performing tests on VariantNode without being dependent +# on how _loadAll works. +@pytest.fixture +def empty_variant_node(machine_node): + container_registry = MagicMock( + findContainersMetadata = MagicMock(return_value = [{"name": "test variant name"}]) + ) + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Machines.VariantNode.VariantNode._loadAll", MagicMock()): + result = VariantNode("test_variant", machine = machine_node) + return result + +@pytest.fixture +def container_registry(): + result = MagicMock() + result.findInstanceContainersMetadata = MagicMock(side_effect = getInstanceContainerSideEffect) + result.findContainersMetadata = MagicMock(return_value = [{"name": "Variant One"}]) + return result + + +def createMockedInstanceContainer(): + result = MagicMock() + result.getMetaDataEntry = MagicMock(side_effect=getMetadataEntrySideEffect) + return result + + +def createVariantNode(container_id, machine_node, container_registry): + with patch("cura.Machines.VariantNode.MaterialNode"): # We're not testing the material node here, so patch it out. + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + return VariantNode(container_id, machine_node) + + +def test_variantNodeInit(container_registry, machine_node): + node = createVariantNode("variant_1", machine_node, container_registry) + + assert "material_1" in node.materials + assert "material_2" in node.materials + assert len(node.materials) == 2 + + +def test_variantNodeInit_excludedMaterial(container_registry, machine_node): + machine_node.exclude_materials = ["material_1"] + node = createVariantNode("variant_1", machine_node, container_registry) + + assert "material_1" not in node.materials + assert "material_2" in node.materials + assert len(node.materials) == 1 + + +@pytest.mark.parametrize("metadata,material_result_list", material_node_added_test_data) +def test_materialAdded(container_registry, machine_node, metadata, material_result_list): + variant_node = createVariantNode("machine_1", machine_node, container_registry) + machine_node.exclude_materials = ["material_3"] + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Machines.VariantNode.MaterialNode"): # We're not testing the material node here, so patch it out. + with patch.dict(metadata_dict, metadata): + mocked_container = createMockedInstanceContainer() + variant_node._materialAdded(mocked_container) + + assert len(material_result_list) == len(variant_node.materials) + for name in material_result_list: + assert name in variant_node.materials + + +@pytest.mark.parametrize("metadata,changed_material_list,unchanged_material_list", material_node_update_test_data) +def test_materialAdded_update(container_registry, machine_node, metadata, changed_material_list, unchanged_material_list): + variant_node = createVariantNode("machine_1", machine_node, container_registry) + original_material_nodes = copy.copy(variant_node.materials) + + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Machines.VariantNode.MaterialNode"): # We're not testing the material node here, so patch it out. + with patch.dict(metadata_dict, metadata): + mocked_container = createMockedInstanceContainer() + variant_node._materialAdded(mocked_container) + + for key in unchanged_material_list: + assert original_material_nodes[key] == variant_node.materials[key] + + for key in changed_material_list: + assert original_material_nodes[key] != variant_node.materials[key] + +## Tests the preferred material when the exact base file is available in the +# materials list for this node. +def test_preferredMaterialExactMatch(empty_variant_node): + empty_variant_node.materials = { + "some_different_material": MagicMock(getMetaDataEntry = lambda x: 3), + "preferred_material": MagicMock(getMetaDataEntry = lambda x: 3) # Exact match. + } + empty_variant_node.machine.preferred_material = "preferred_material" + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material"], "It should match exactly on this one since it's the preferred material." + +## Tests the preferred material when a submaterial is available in the +# materials list for this node. +def test_preferredMaterialSubmaterial(empty_variant_node): + empty_variant_node.materials = { + "some_different_material": MagicMock(getMetaDataEntry = lambda x: 3), + "preferred_material_base_file_aa04": MagicMock(getMetaDataEntry = lambda x: 3) # This is a submaterial of the preferred material. + } + empty_variant_node.machine.preferred_material = "preferred_material_base_file_aa04" + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material_base_file_aa04"], "It should match on the submaterial just as well." + +## Tests the preferred material matching on the approximate diameter of the +# filament. +def test_preferredMaterialDiameter(empty_variant_node): + empty_variant_node.materials = { + "some_different_material": MagicMock(getMetaDataEntry = lambda x: 3), + "preferred_material_wrong_diameter": MagicMock(getMetaDataEntry = lambda x: 2), # Approximate diameter is 2 instead of 3. + "preferred_material_correct_diameter": MagicMock(getMetaDataEntry = lambda x: 3) # Correct approximate diameter. + } + empty_variant_node.machine.preferred_material = "preferred_material_correct_diameter" + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["preferred_material_correct_diameter"], "It should match only on the material with correct diameter." + +## Tests the preferred material matching on a different material if the +# diameter is wrong. +def test_preferredMaterialDiameterNoMatch(empty_variant_node): + empty_variant_node.materials = collections.OrderedDict() + empty_variant_node.materials["some_different_material"] = MagicMock(getMetaDataEntry = lambda x: 3) # This one first so that it gets iterated over first. + empty_variant_node.materials["preferred_material"] = MagicMock(getMetaDataEntry = lambda x: 2) # Wrong diameter. + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["some_different_material"], "It should match on another material with the correct diameter if the preferred one is unavailable." + +## Tests that the material diameter is considered more important to match than +# the preferred diameter. +def test_preferredMaterialDiameterPreference(empty_variant_node): + empty_variant_node.materials = collections.OrderedDict() + empty_variant_node.materials["some_different_material"] = MagicMock(getMetaDataEntry = lambda x: 2) # This one first so that it gets iterated over first. + empty_variant_node.materials["preferred_material"] = MagicMock(getMetaDataEntry = lambda x: 2) # Matches on ID but not diameter. + empty_variant_node.materials["not_preferred_but_correct_diameter"] = MagicMock(getMetaDataEntry = lambda x: 3) # Matches diameter but not ID. + + assert empty_variant_node.preferredMaterial(approximate_diameter = 3) == empty_variant_node.materials["not_preferred_but_correct_diameter"], "It should match on the correct diameter even if it's not the preferred one." \ No newline at end of file diff --git a/tests/PrinterOutput/Models/TestPrinterOutputModel.py b/tests/PrinterOutput/Models/TestPrinterOutputModel.py index 3fdb61adbd..9848e0a5fa 100644 --- a/tests/PrinterOutput/Models/TestPrinterOutputModel.py +++ b/tests/PrinterOutput/Models/TestPrinterOutputModel.py @@ -5,11 +5,14 @@ from unittest.mock import MagicMock import pytest 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/TestPrinterOutputDevice.py b/tests/PrinterOutput/TestPrinterOutputDevice.py index 4c12a34859..7a9e4e2cc5 100644 --- a/tests/PrinterOutput/TestPrinterOutputDevice.py +++ b/tests/PrinterOutput/TestPrinterOutputDevice.py @@ -1,6 +1,12 @@ 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 = [ @@ -8,10 +14,15 @@ test_validate_data_get_set = [ {"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): - model = PrinterOutputDevice("whatever") +def test_getAndSet(data, printer_output_device): + model = printer_output_device # Convert the first letter into a capital attribute = list(data["attribute"]) @@ -35,3 +46,43 @@ def test_getAndSet(data): getattr(model, "set" + attribute)(data["value"]) # The signal should not fire again assert signal.emit.call_count == 1 + + +def test_uniqueConfigurations(printer_output_device): + printer = PrinterOutputModel(MagicMock()) + # Add a printer and fire the signal that ensures they get hooked up correctly. + printer_output_device._printers = [printer] + printer_output_device._onPrintersChanged() + + assert printer_output_device.uniqueConfigurations == [] + configuration = PrinterConfigurationModel() + printer.addAvailableConfiguration(configuration) + + assert printer_output_device.uniqueConfigurations == [configuration] + + # Once the type of printer is set, it's active configuration counts as being set. + # In that case, that should also be added to the list of available configurations + printer.updateType("blarg!") + loaded_material = MaterialOutputModel(guid = "", type = "PLA", color = "Blue", brand = "Generic", name = "Blue PLA") + loaded_left_extruder = ExtruderConfigurationModel(0) + loaded_left_extruder.setMaterial(loaded_material) + loaded_right_extruder = ExtruderConfigurationModel(1) + loaded_right_extruder.setMaterial(loaded_material) + printer.printerConfiguration.setExtruderConfigurations([loaded_left_extruder, loaded_right_extruder]) + assert printer_output_device.uniqueConfigurations == [configuration, printer.printerConfiguration] + + +def test_uniqueConfigurations_empty_is_filtered_out(printer_output_device): + printer = PrinterOutputModel(MagicMock()) + # Add a printer and fire the signal that ensures they get hooked up correctly. + printer_output_device._printers = [printer] + printer_output_device._onPrintersChanged() + + printer.updateType("blarg!") + empty_material = MaterialOutputModel(guid = "", type = "empty", color = "empty", brand = "Generic", name = "Empty") + empty_left_extruder = ExtruderConfigurationModel(0) + empty_left_extruder.setMaterial(empty_material) + empty_right_extruder = ExtruderConfigurationModel(1) + empty_right_extruder.setMaterial(empty_material) + printer.printerConfiguration.setExtruderConfigurations([empty_left_extruder, empty_right_extruder]) + assert printer_output_device.uniqueConfigurations == [] diff --git a/tests/Settings/MockContainer.py b/tests/Settings/MockContainer.py new file mode 100644 index 0000000000..0400359154 --- /dev/null +++ b/tests/Settings/MockContainer.py @@ -0,0 +1,134 @@ +from typing import Optional + +from UM.Settings.Interfaces import ContainerInterface +import UM.PluginObject +from UM.Signal import Signal + + +## Fake container class to add to the container registry. +# +# This allows us to test the container registry without testing the container +# class. If something is wrong in the container class it won't influence this +# test. + +class MockContainer(ContainerInterface, UM.PluginObject.PluginObject): + ## Initialise a new definition container. + # + # The container will have the specified ID and all metadata in the + # provided dictionary. + def __init__(self, metadata = None): + super().__init__() + if metadata is None: + self._metadata = {} + else: + self._metadata = metadata + self._plugin_id = "MockContainerPlugin" + + ## Gets the ID that was provided at initialisation. + # + # \return The ID of the container. + def getId(self): + return self._metadata["id"] + + ## Gets all metadata of this container. + # + # This returns the metadata dictionary that was provided in the + # constructor of this mock container. + # + # \return The metadata for this container. + def getMetaData(self): + return self._metadata + + ## Gets a metadata entry from the metadata dictionary. + # + # \param key The key of the metadata entry. + # \return The value of the metadata entry, or None if there is no such + # entry. + def getMetaDataEntry(self, entry, default = None): + if entry in self._metadata: + return self._metadata[entry] + return default + + ## Gets a human-readable name for this container. + # \return The name from the metadata, or "MockContainer" if there was no + # name provided. + def getName(self): + return self._metadata.get("name", "MockContainer") + + ## Get whether a container stack is enabled or not. + # \return Always returns True. + @property + def isEnabled(self): + return True + + ## Get whether the container item is stored on a read only location in the filesystem. + # + # \return Always returns False + def isReadOnly(self): + return False + + ## Mock get path + def getPath(self): + return "/path/to/the/light/side" + + ## Mock set path + def setPath(self, path): + pass + + def getAllKeys(self): + pass + + # Should return false (or even throw an exception) if trust (or other verification) is invalidated. + def _trustHook(self, file_name: Optional[str]) -> bool: + return True + + def setProperty(self, key, property_name, property_value, container = None, set_from_cache = False): + pass + + def getProperty(self, key, property_name, context=None): + if key in self.items: + return self.items[key] + + return None + + ## Get the value of a container item. + # + # Since this mock container cannot contain any items, it always returns + # None. + # + # \return Always returns None. + def getValue(self, key): + pass + + ## Get whether the container item has a specific property. + # + # This method is not implemented in the mock container. + def hasProperty(self, key, property_name): + return key in self.items + + ## Serializes the container to a string representation. + # + # This method is not implemented in the mock container. + def serialize(self, ignored_metadata_keys = None): + raise NotImplementedError() + + ## Deserializes the container from a string representation. + # + # This method is not implemented in the mock container. + def deserialize(self, serialized, file_name: Optional[str] = None): + raise NotImplementedError() + + @classmethod + def getConfigurationTypeFromSerialized(cls, serialized: str): + raise NotImplementedError() + + @classmethod + def getVersionFromSerialized(cls, serialized): + raise NotImplementedError() + + def isDirty(self): + return True + + metaDataChanged = Signal() + propertyChanged = Signal() + containersChanged = Signal() diff --git a/tests/Settings/TestContainerManager.py b/tests/Settings/TestContainerManager.py index f4aa140b6b..ff23b727e6 100644 --- a/tests/Settings/TestContainerManager.py +++ b/tests/Settings/TestContainerManager.py @@ -2,7 +2,7 @@ from unittest import TestCase from unittest.mock import MagicMock from PyQt5.QtCore import QUrl - +from unittest.mock import patch from UM.MimeTypeDatabase import MimeTypeDatabase from cura.Settings.ContainerManager import ContainerManager import tempfile @@ -42,20 +42,23 @@ class TestContainerManager(TestCase): MimeTypeDatabase.removeMimeType(self._mocked_mime) def test_getContainerMetaDataEntry(self): - assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg" - assert self._container_manager.getContainerMetaDataEntry("test", "entry_that_is_not_defined") == "" + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + assert self._container_manager.getContainerMetaDataEntry("test", "test_data") == "omg" + assert self._container_manager.getContainerMetaDataEntry("test", "entry_that_is_not_defined") == "" def test_clearUserContainer(self): - self._container_manager.clearUserContainers() + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + self._container_manager.clearUserContainers() assert self._machine_manager.activeMachine.userChanges.clear.call_count == 1 def test_getContainerNameFilters(self): - # If nothing is added, we still expect to get the all files filter - assert self._container_manager.getContainerNameFilters("") == ['All Files (*)'] + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + # If nothing is added, we still expect to get the all files filter + assert self._container_manager.getContainerNameFilters("") == ['All Files (*)'] - # Pretend that a new type was added. - self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)]) - assert self._container_manager.getContainerNameFilters("") == ['UnitTest! (*.omg)', 'All Files (*)'] + # Pretend that a new type was added. + self._container_registry.getContainerTypes = MagicMock(return_value=[("None", None)]) + assert self._container_manager.getContainerNameFilters("") == ['UnitTest! (*.omg)', 'All Files (*)'] def test_exportContainerUnknownFileType(self): # The filetype is not known, so this should cause an error! @@ -69,8 +72,9 @@ class TestContainerManager(TestCase): assert self._container_manager.exportContainer("", "whatever", "whatever")["status"] == "error" def test_exportContainer(self): - with tempfile.TemporaryDirectory() as tmpdirname: - result = self._container_manager.exportContainer("test", "whatever", os.path.join(tmpdirname, "whatever.omg")) - assert(os.path.exists(result["path"])) - with open(result["path"], "r", encoding="utf-8") as f: - assert f.read() == self._mocked_container_data + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=self._application)): + with tempfile.TemporaryDirectory() as tmpdirname: + result = self._container_manager.exportContainer("test", "whatever", os.path.join(tmpdirname, "whatever.omg")) + assert(os.path.exists(result["path"])) + with open(result["path"], "r", encoding="utf-8") as f: + assert f.read() == self._mocked_container_data \ No newline at end of file diff --git a/tests/Settings/TestCuraContainerRegistry.py b/tests/Settings/TestCuraContainerRegistry.py index 06f3f581ba..6918329397 100644 --- a/tests/Settings/TestCuraContainerRegistry.py +++ b/tests/Settings/TestCuraContainerRegistry.py @@ -12,7 +12,7 @@ from cura.Settings.GlobalStack import GlobalStack #Testing for returning the cor 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. @@ -36,16 +36,22 @@ def test_createUniqueName(container_registry): # It should add a #2 to test2 assert container_registry.createUniqueName("user", "test", "test2", "nope") == "test2 #2" + # The provided suggestion is already correct, so nothing to do + assert container_registry.createUniqueName("user", "test", "test2 #2", "nope") == "test2 #2" + + # In case we don't provide a new name, use the fallback + assert container_registry.createUniqueName("user", "test", "", "nope") == "nope" + ## Tests whether addContainer properly converts to ExtruderStack. def test_addContainerExtruderStack(container_registry, definition_container, definition_changes_container): container_registry.addContainer(definition_container) container_registry.addContainer(definition_changes_container) - container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Extruder Stack") #A container we're going to convert. + container_stack = ExtruderStack("Test Extruder Stack") #A container we're going to convert. container_stack.setMetaDataEntry("type", "extruder_train") #This is now an extruder train. - container_stack.insertContainer(0, definition_container) #Add a definition to it so it doesn't complain. - container_stack.insertContainer(1, definition_changes_container) + container_stack.setDefinition(definition_container) #Add a definition to it so it doesn't complain. + container_stack.setDefinitionChanges(definition_changes_container) mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -61,10 +67,10 @@ def test_addContainerGlobalStack(container_registry, definition_container, defin container_registry.addContainer(definition_container) container_registry.addContainer(definition_changes_container) - container_stack = UM.Settings.ContainerStack.ContainerStack(stack_id = "Test Global Stack") #A container we're going to convert. + container_stack = GlobalStack("Test Global Stack") #A container we're going to convert. container_stack.setMetaDataEntry("type", "machine") #This is now a global stack. - container_stack.insertContainer(0, definition_container) #Must have a definition. - container_stack.insertContainer(1, definition_changes_container) #Must have a definition changes. + container_stack.setDefinition(definition_container) #Must have a definition. + container_stack.setDefinitionChanges(definition_changes_container) #Must have a definition changes. mock_super_add_container = unittest.mock.MagicMock() #Takes the role of the Uranium-ContainerRegistry where the resulting containers get registered. with unittest.mock.patch("UM.Settings.ContainerRegistry.ContainerRegistry.addContainer", mock_super_add_container): @@ -286,12 +292,15 @@ class TestImportProfile: result = container_registry.importProfile("test.zomg") assert result["status"] == "error" + @pytest.mark.skip def test_importProfileSuccess(self, container_registry): container_registry._getIOPlugins = unittest.mock.MagicMock(return_value=[("reader_id", {"profile_reader": [{"extension": "zomg", "description": "dunno"}]})]) + mocked_application.getGlobalContainerStack = unittest.mock.MagicMock(return_value=self.mocked_global_stack) mocked_definition = unittest.mock.MagicMock(name = "definition") + container_registry.findContainers = unittest.mock.MagicMock(return_value=[mocked_definition]) container_registry.findDefinitionContainers = unittest.mock.MagicMock(return_value = [mocked_definition]) mocked_profile = unittest.mock.MagicMock(name = "Mocked_global_profile") @@ -299,4 +308,21 @@ class TestImportProfile: 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" \ No newline at end of file + + 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 index 300536f756..aebde3406f 100644 --- a/tests/Settings/TestCuraStackBuilder.py +++ b/tests/Settings/TestCuraStackBuilder.py @@ -28,6 +28,14 @@ def quality_container(): return container +@pytest.fixture +def intent_container(): + container = InstanceContainer(container_id="intent container") + container.setMetaDataEntry("type", "intent") + + return container + + @pytest.fixture def quality_changes_container(): container = InstanceContainer(container_id="quality changes container") @@ -44,43 +52,53 @@ def test_createMachineWithUnknownDefinition(application, container_registry): 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): +def test_createMachine(application, container_registry, definition_container, global_variant, material_instance_container, + quality_container, intent_container, quality_changes_container): variant_manager = MagicMock(name = "Variant Manager") quality_manager = MagicMock(name = "Quality Manager") - global_variant_node = MagicMock( name = "global variant node") - global_variant_node.getContainer = MagicMock(return_value = global_variant) + global_variant_node = MagicMock(name = "global variant node") + global_variant_node.container = global_variant variant_manager.getDefaultVariantNode = MagicMock(return_value = global_variant_node) quality_group = QualityGroup(name = "zomg", quality_type = "normal") quality_group.node_for_global = MagicMock(name = "Node for global") - quality_group.node_for_global.getContainer = MagicMock(return_value = quality_container) + quality_group.node_for_global.container = quality_container quality_manager.getQualityGroups = MagicMock(return_value = {"normal": quality_group}) application.getContainerRegistry = MagicMock(return_value=container_registry) - application.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_intent_container = intent_container application.empty_quality_changes_container = quality_changes_container + application.empty_variant_container = global_variant metadata = definition_container.getMetaData() metadata["machine_extruder_trains"] = {} metadata["preferred_quality_type"] = "normal" container_registry.addContainer(definition_container) - with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): - machine = CuraStackBuilder.createMachine("Whatever", "Test Definition") + quality_node = MagicMock() + machine_node = MagicMock() + machine_node.preferredGlobalQuality = MagicMock(return_value = quality_node) + quality_node.container = quality_container - assert machine.quality == quality_container - assert machine.definition == definition_container - assert machine.variant == global_variant + # Patch out the creation of MachineNodes since that isn't under test (and would require quite a bit of extra setup) + with patch("cura.Machines.ContainerTree.MachineNode", MagicMock(return_value = machine_node)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + machine = CuraStackBuilder.createMachine("Whatever", "Test Definition") + + assert machine.quality == quality_container + assert machine.definition == definition_container + assert machine.variant == global_variant -def test_createExtruderStack(application, definition_container, global_variant, material_instance_container, quality_container, quality_changes_container): +def test_createExtruderStack(application, definition_container, global_variant, material_instance_container, + quality_container, intent_container, quality_changes_container): application.empty_material_container = material_instance_container application.empty_quality_container = quality_container + application.empty_intent_container = intent_container application.empty_quality_changes_container = quality_changes_container - with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + 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 diff --git a/tests/Settings/TestDefinitionContainer.py b/tests/Settings/TestDefinitionContainer.py index 73d4e89d20..38251e4397 100644 --- a/tests/Settings/TestDefinitionContainer.py +++ b/tests/Settings/TestDefinitionContainer.py @@ -1,26 +1,34 @@ # Copyright (c) 2019 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +import json # To check files for unnecessarily overridden properties. +import os import pytest #This module contains automated tests. +from typing import Any, Dict +import uuid + +from unittest.mock import patch, MagicMock import UM.Settings.ContainerRegistry #To create empty instance containers. import UM.Settings.ContainerStack #To set the container registry the container stacks use. from UM.Settings.DefinitionContainer import DefinitionContainer #To check against the class of DefinitionContainer. - - -import os -import os.path -import uuid - from UM.Resources import Resources Resources.addSearchPath(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "resources"))) -machine_filepaths = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions")) +machine_filepaths = sorted(os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions"))) +machine_filepaths = [os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", filename) for filename in machine_filepaths] +extruder_filepaths = sorted(os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "extruders"))) +extruder_filepaths = [os.path.join(os.path.dirname(__file__), "..", "..", "resources", "extruders", filename) for filename in extruder_filepaths] +definition_filepaths = machine_filepaths + extruder_filepaths all_meshes = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "meshes")) all_images = os.listdir(os.path.join(os.path.dirname(__file__), "..", "..", "resources", "images")) +# Loading definition files needs a functioning ContainerRegistry +cr = UM.Settings.ContainerRegistry.ContainerRegistry(None) + + @pytest.fixture def definition_container(): uid = str(uuid.uuid4()) @@ -30,17 +38,22 @@ def definition_container(): ## Tests all definition containers -@pytest.mark.parametrize("file_name", machine_filepaths) -def test_validateMachineDefinitionContainer(file_name, definition_container): +@pytest.mark.parametrize("file_path", machine_filepaths) +def test_validateMachineDefinitionContainer(file_path, definition_container): + file_name = os.path.basename(file_path) if file_name == "fdmprinter.def.json" or file_name == "fdmextruder.def.json": return # Stop checking, these are root files. - definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions") - assertIsDefinitionValid(definition_container, definition_path, file_name) + from UM.VersionUpgradeManager import FilesDataUpdateResult + + mocked_vum = MagicMock() + mocked_vum.updateFilesData = lambda ct, v, fdl, fnl: FilesDataUpdateResult(ct, v, fdl, fnl) + with patch("UM.VersionUpgradeManager.VersionUpgradeManager.getInstance", MagicMock(return_value = mocked_vum)): + assertIsDefinitionValid(definition_container, file_path) -def assertIsDefinitionValid(definition_container, path, file_name): - with open(os.path.join(path, file_name), encoding = "utf-8") as data: +def assertIsDefinitionValid(definition_container, file_path): + with open(file_path, encoding = "utf-8") as data: json = data.read() parser, is_valid = definition_container.readAndValidateSerialized(json) assert is_valid #The definition has invalid JSON structure. @@ -51,4 +64,128 @@ def assertIsDefinitionValid(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 \ No newline at end of file + assert metadata[0]["platform_texture"] in all_images + +## Tests whether setting values are not being hidden by parent containers. +# +# When a definition container defines a "default_value" but inherits from a +# definition that defines a "value", the "default_value" is ineffective. This +# test fails on those things. +@pytest.mark.parametrize("file_path", definition_filepaths) +def test_validateOverridingDefaultValue(file_path: str): + with open(file_path, encoding = "utf-8") as f: + doc = json.load(f) + + if "inherits" not in doc: + return # We only want to check for documents where the inheritance overrides the children. If there's no inheritance, this can't happen so it's fine. + if "overrides" not in doc: + return # No settings are being overridden. No need to check anything. + parent_settings = getInheritedSettings(doc["inherits"]) + faulty_keys = set() + for key, val in doc["overrides"].items(): + if key in parent_settings and "value" in parent_settings[key]: + if "default_value" in val: + faulty_keys.add(key) + assert not faulty_keys, "Unnecessary default_values for {faulty_keys} in {file_name}".format(faulty_keys = sorted(faulty_keys), file_name = file_path) # If there is a value in the parent settings, then the default_value is not effective. + +## Get all settings and their properties from a definition we're inheriting +# from. +# \param definition_id The definition we're inheriting from. +# \return A dictionary of settings by key. Each setting is a dictionary of +# properties. +def getInheritedSettings(definition_id: str) -> Dict[str, Any]: + definition_path = os.path.join(os.path.dirname(__file__), "..", "..", "resources", "definitions", definition_id + ".def.json") + with open(definition_path, encoding = "utf-8") as f: + doc = json.load(f) + result = {} + + if "inherits" in doc: # Recursive inheritance. + result.update(getInheritedSettings(doc["inherits"])) + if "settings" in doc: + result.update(flattenSettings(doc["settings"])) + if "overrides" in doc: + result = merge_dicts(result, doc["overrides"]) + + return result + +## Put all settings in the main dictionary rather than in children dicts. +# \param settings Nested settings. The keys are the setting IDs. The values +# are dictionaries of properties per setting, including the "children" +# property. +# \return A dictionary of settings by key. Each setting is a dictionary of +# properties. +def flattenSettings(settings: Dict[str, Any]) -> Dict[str, Any]: + result = {} + for entry, contents in settings.items(): + if "children" in contents: + result.update(flattenSettings(contents["children"])) + del contents["children"] + result[entry] = contents + return result + +## Make one dictionary override the other. Nested dictionaries override each +# other in the same way. +# \param base A dictionary of settings that will get overridden by the other. +# \param overrides A dictionary of settings that will override the other. +# \return Combined setting data. +def merge_dicts(base: Dict[str, Any], overrides: Dict[str, Any]) -> Dict[str, Any]: + result = {} + result.update(base) + for key, val in overrides.items(): + if key not in result: + result[key] = val + continue + + if isinstance(result[key], dict) and isinstance(val, dict): + result[key] = merge_dicts(result[key], val) + else: + result[key] = val + return result + +## Verifies that definition contains don't have an ID field. +# +# ID fields are legacy. They should not be used any more. This is legacy that +# people don't seem to be able to get used to. +@pytest.mark.parametrize("file_path", definition_filepaths) +def test_noId(file_path: str): + with open(file_path, encoding = "utf-8") as f: + doc = json.load(f) + + assert "id" not in doc, "Definitions should not have an ID field." + +## Verifies that extruders say that they work on the same extruder_nr as what +# is listed in their machine definition. +@pytest.mark.parametrize("file_path", extruder_filepaths) +def test_extruderMatch(file_path: str): + extruder_id = os.path.basename(file_path).split(".")[0] + with open(file_path, encoding = "utf-8") as f: + doc = json.load(f) + + if "metadata" not in doc: + return # May not be desirable either, but it's probably unfinished then. + if "machine" not in doc["metadata"] or "position" not in doc["metadata"]: + return # FDMextruder doesn't have this since it's not linked to a particular printer. + machine = doc["metadata"]["machine"] + position = doc["metadata"]["position"] + + # Find the machine definition. + for machine_filepath in machine_filepaths: + machine_id = os.path.basename(machine_filepath).split(".")[0] + if machine_id == machine: + break + else: + assert False, "The machine ID {machine} is not found.".format(machine = machine) + with open(machine_filepath, encoding = "utf-8") as f: + machine_doc = json.load(f) + + # Make sure that the two match up. + assert "metadata" in machine_doc, "Machine definition missing metadata entry." + assert "machine_extruder_trains" in machine_doc["metadata"], "Machine must define extruder trains." + extruder_trains = machine_doc["metadata"]["machine_extruder_trains"] + assert position in extruder_trains, "There must be a reference to the extruder in the machine definition." + assert extruder_trains[position] == extruder_id, "The extruder referenced in the machine definition must match up." + + # Also test if the extruder_nr setting is properly overridden. + if "overrides" not in doc or "extruder_nr" not in doc["overrides"] or "default_value" not in doc["overrides"]["extruder_nr"]: + assert position == "0" # Default to 0 is allowed. + assert doc["overrides"]["extruder_nr"]["default_value"] == int(position) \ No newline at end of file diff --git a/tests/Settings/__init__.py b/tests/Settings/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/TestBuildVolume.py b/tests/TestBuildVolume.py index 491c0b1b6f..6ccb3d0fb7 100644 --- a/tests/TestBuildVolume.py +++ b/tests/TestBuildVolume.py @@ -1,11 +1,17 @@ from unittest.mock import MagicMock, patch - +from UM.Math.AxisAlignedBox import AxisAlignedBox import pytest -from cura.BuildVolume import BuildVolume +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(): +def build_volume() -> BuildVolume: mocked_application = MagicMock() mocked_platform = MagicMock(name="platform") with patch("cura.BuildVolume.Platform", mocked_platform): @@ -25,3 +31,360 @@ def test_buildVolumeSetSizes(build_volume): 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/TestCuraSceneNode.py b/tests/TestCuraSceneNode.py new file mode 100644 index 0000000000..9e2fcb1188 --- /dev/null +++ b/tests/TestCuraSceneNode.py @@ -0,0 +1,57 @@ +from UM.Math.Polygon import Polygon +from UM.Scene.SceneNodeDecorator import SceneNodeDecorator +from cura.Scene.CuraSceneNode import CuraSceneNode +import pytest + +from unittest.mock import patch + + +class MockedConvexHullDecorator(SceneNodeDecorator): + def __init__(self): + super().__init__() + + def getConvexHull(self): + return Polygon([[5, 5], [-5, 5], [-5, -5], [5, -5]]) + + def getPrintingArea(self): + return Polygon([[5, 5], [-5, 5], [-5, -5], [5, -5]]) + + +class InvalidConvexHullDecorator(SceneNodeDecorator): + def __init__(self): + super().__init__() + + def getConvexHull(self): + return Polygon() + + +@pytest.fixture() +def cura_scene_node(): + # Replace the SettingOverrideDecorator with an empty decorator + with patch("cura.Scene.CuraSceneNode.SettingOverrideDecorator", SceneNodeDecorator): + return CuraSceneNode() + + +class TestCollidesWithAreas: + def test_noConvexHull(self, cura_scene_node): + assert not cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])]) + + def test_convexHullIntersects(self, cura_scene_node): + cura_scene_node.addDecorator(MockedConvexHullDecorator()) + assert cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])]) + + def test_convexHullNoIntersection(self, cura_scene_node): + cura_scene_node.addDecorator(MockedConvexHullDecorator()) + + assert not cura_scene_node.collidesWithAreas([Polygon([[60, 60], [40, 60], [40, 40], [60, 40]])]) + + def test_invalidConvexHull(self, cura_scene_node): + cura_scene_node.addDecorator(InvalidConvexHullDecorator()) + assert not cura_scene_node.collidesWithAreas([Polygon([[10, 10], [-10, 10], [-10, -10], [10, -10]])]) + + +def test_outsideBuildArea(cura_scene_node): + cura_scene_node.setOutsideBuildArea(True) + assert cura_scene_node.isOutsideBuildArea + + diff --git a/tests/TestExtruderManager.py b/tests/TestExtruderManager.py new file mode 100644 index 0000000000..4ad75989de --- /dev/null +++ b/tests/TestExtruderManager.py @@ -0,0 +1,31 @@ + +from unittest.mock import MagicMock, patch + + +def createMockedExtruder(extruder_id): + extruder = MagicMock() + extruder.getId = MagicMock(return_value = extruder_id) + return extruder + + +def test_getAllExtruderSettings(extruder_manager): + extruder_1 = createMockedExtruder("extruder_1") + extruder_1.getProperty = MagicMock(return_value ="beep") + extruder_2 = createMockedExtruder("extruder_2") + extruder_2.getProperty = MagicMock(return_value="zomg") + extruder_manager.getActiveExtruderStacks = MagicMock(return_value = [extruder_1, extruder_2]) + assert extruder_manager.getAllExtruderSettings("whatever", "value") == ["beep", "zomg"] + + +def test_registerExtruder(extruder_manager): + extruder = createMockedExtruder("beep") + extruder.getMetaDataEntry = MagicMock(return_value = "0") # because the extruder position gets called + + extruder_manager.extrudersChanged = MagicMock() + extruder_manager.registerExtruder(extruder, "zomg") + + assert extruder_manager.extrudersChanged.emit.call_count == 1 + + # Doing it again should not trigger anything + extruder_manager.registerExtruder(extruder, "zomg") + assert extruder_manager.extrudersChanged.emit.call_count == 1 diff --git a/tests/TestIntentManager.py b/tests/TestIntentManager.py new file mode 100644 index 0000000000..66e3085337 --- /dev/null +++ b/tests/TestIntentManager.py @@ -0,0 +1,172 @@ +# Copyright (c) 2019 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from unittest.mock import MagicMock, patch + +import pytest +from typing import Any, Dict, List + +from cura.Settings.IntentManager import IntentManager +from cura.Machines.QualityGroup import QualityGroup + +from tests.Settings.MockContainer import MockContainer + +mocked_intent_metadata = [ + {"id": "um3_aa4_pla_smooth_normal", "GUID": "abcxyz", "definition": "ultimaker3", "variant": "AA 0.4", + "material_id": "generic_pla", "intent_category": "smooth", "quality_type": "normal"}, + {"id": "um3_aa4_pla_strong_abnorm", "GUID": "defqrs", "definition": "ultimaker3", "variant": "AA 0.4", + "material_id": "generic_pla", "intent_category": "strong", "quality_type": "abnorm"}] # type:List[Dict[str, str]] + +mocked_qualitygroup_metadata = { + "normal": QualityGroup("um3_aa4_pla_normal", "normal"), + "abnorm": QualityGroup("um3_aa4_pla_abnorm", "abnorm")} # type: Dict[str, QualityGroup] + +@pytest.fixture +def mock_container_tree() -> MagicMock: + container_tree = MagicMock() + container_tree.getCurrentQualityGroups = MagicMock(return_value = mocked_qualitygroup_metadata) + container_tree.machines = { + "ultimaker3": MagicMock( + variants = { + "AA 0.4": MagicMock( + materials = { + "generic_pla": MagicMock( + qualities = { + "um3_aa4_pla_normal": MagicMock( + quality_type = "normal", + intents = { + "um3_aa4_pla_smooth_normal": MagicMock( + intent_category = "smooth", + getMetadata = MagicMock(return_value = mocked_intent_metadata[0]) + ) + } + ), + "um3_aa4_pla_abnorm": MagicMock( + quality_type = "abnorm", + intents = { + "um3_aa4_pla_strong_abnorm": MagicMock( + intent_category = "strong", + getMetadata = MagicMock(return_value = mocked_intent_metadata[1]) + ) + } + ) + } + ) + } + ) + } + ) + } + return container_tree + +@pytest.fixture +def intent_manager(application, extruder_manager, machine_manager, container_registry, global_stack) -> IntentManager: + application.getExtruderManager = MagicMock(return_value = extruder_manager) + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + application.getMachineManager = MagicMock(return_value = machine_manager) + machine_manager.setIntentByCategory = MagicMock() + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + manager = IntentManager() + return manager + +def mockFindMetadata(**kwargs) -> List[Dict[str, Any]]: + if "id" in kwargs: + return [x for x in mocked_intent_metadata if x["id"] == kwargs["id"]] + else: + result = [] + for data in mocked_intent_metadata: + should_add = True + for key, value in kwargs.items(): + if key in data.keys(): + should_add &= (data[key] == value) + if should_add: + result.append(data) + return result + + +def mockFindContainers(**kwargs) -> List[MockContainer]: + result = [] + metadatas = mockFindMetadata(**kwargs) + for metadata in metadatas: + result.append(MockContainer(metadata)) + return result + + +def doSetup(application, extruder_manager, container_registry, global_stack) -> None: + container_registry.findContainersMetadata = MagicMock(side_effect = mockFindMetadata) + container_registry.findContainers = MagicMock(side_effect = mockFindContainers) + + for qualitygroup in mocked_qualitygroup_metadata.values(): + qualitygroup.node_for_global = MagicMock(name = "Node for global") + + global_stack.definition = MockContainer({"id": "ultimaker3"}) + + extruder_stack_a = MockContainer({"id": "Extruder The First"}) + extruder_stack_a.variant = MockContainer({"name": "AA 0.4"}) + extruder_stack_a.quality = MockContainer({"id": "um3_aa4_pla_normal"}) + extruder_stack_a.material = MockContainer({"base_file": "generic_pla"}) + extruder_stack_a.intent = MockContainer({"id": "empty_intent", "intent_category": "default"}) + extruder_stack_a.qualityChanges = MockContainer({"id": "empty_quality_changes", "intent_category": "default"}) + extruder_stack_b = MockContainer({"id": "Extruder II: Plastic Boogaloo"}) + extruder_stack_b.variant = MockContainer({"name": "AA 0.4"}) + extruder_stack_b.quality = MockContainer({"id": "um3_aa4_pla_normal"}) + extruder_stack_b.material = MockContainer({"base_file": "generic_pla"}) + extruder_stack_b.intent = MockContainer({"id": "empty_intent", "intent_category": "default"}) + extruder_stack_b.qualityChanges = MockContainer({"id": "empty_quality_changes", "intent_category": "default"}) + global_stack.extruderList = [extruder_stack_a, extruder_stack_b] + + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + extruder_manager.getUsedExtruderStacks = MagicMock(return_value = [extruder_stack_a, extruder_stack_b]) + + +def test_intentCategories(intent_manager, mock_container_tree): + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + categories = intent_manager.intentCategories("ultimaker3", "AA 0.4", "generic_pla") # type:List[str] + assert "default" in categories, "default should always be in categories" + assert "strong" in categories, "strong should be in categories" + assert "smooth" in categories, "smooth should be in categories" + + +def test_getCurrentAvailableIntents(application, extruder_manager, intent_manager, container_registry, global_stack, mock_container_tree): + doSetup(application, extruder_manager, container_registry, global_stack) + + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + intents = intent_manager.getCurrentAvailableIntents() + assert ("smooth", "normal") in intents + assert ("strong", "abnorm") in intents + #assert ("default", "normal") in intents # Pending to-do in 'IntentManager'. + #assert ("default", "abnorm") in intents # Pending to-do in 'IntentManager'. + assert len(intents) == 2 # Or 4? pending to-do in 'IntentManager'. + + +def test_currentAvailableIntentCategories(application, extruder_manager, intent_manager, container_registry, global_stack, mock_container_tree): + doSetup(application, extruder_manager, container_registry, global_stack) + + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value = extruder_manager)): + categories = intent_manager.currentAvailableIntentCategories() + assert "default" in categories # Currently inconsistent with 'currentAvailableIntents'! + assert "smooth" in categories + assert "strong" in categories + assert len(categories) == 3 + + +def test_selectIntent(application, extruder_manager, intent_manager, container_registry, global_stack, mock_container_tree): + doSetup(application, extruder_manager, container_registry, global_stack) + + with patch("cura.Machines.ContainerTree.ContainerTree.getInstance", MagicMock(return_value = mock_container_tree)): + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value = application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value = container_registry)): + with patch("cura.Settings.ExtruderManager.ExtruderManager.getInstance", MagicMock(return_value = extruder_manager)): + intents = intent_manager.getCurrentAvailableIntents() + for intent, quality in intents: + intent_manager.selectIntent(intent, quality) + extruder_stacks = extruder_manager.getUsedExtruderStacks() + assert len(extruder_stacks) == 2 + assert extruder_stacks[0].intent.getMetaDataEntry("intent_category") == intent + assert extruder_stacks[1].intent.getMetaDataEntry("intent_category") == intent diff --git a/tests/TestLayer.py b/tests/TestLayer.py new file mode 100644 index 0000000000..f8183437d6 --- /dev/null +++ b/tests/TestLayer.py @@ -0,0 +1,39 @@ +from cura.Layer import Layer +from unittest.mock import MagicMock + + +def test_lineMeshVertexCount(): + layer = Layer(1) + layer_polygon = MagicMock() + layer_polygon.lineMeshVertexCount = MagicMock(return_value = 9001) + layer.polygons.append(layer_polygon) + assert layer.lineMeshVertexCount() == 9001 + + +def test_lineMeshElementCount(): + layer = Layer(1) + layer_polygon = MagicMock() + layer_polygon.lineMeshElementCount = MagicMock(return_value = 9001) + layer.polygons.append(layer_polygon) + assert layer.lineMeshElementCount() == 9001 + + +def test_getAndSet(): + layer = Layer(0) + + layer.setThickness(12) + assert layer.thickness == 12 + + layer.setHeight(0.1) + assert layer.height == 0.1 + + +def test_elementCount(): + layer = Layer(1) + layer_polygon = MagicMock() + layer_polygon.lineMeshElementCount = MagicMock(return_value=9002) + layer_polygon.lineMeshVertexCount = MagicMock(return_value=9001) + layer_polygon.elementCount = 12 + layer.polygons.append(layer_polygon) + assert layer.build(0, 0, [], [], [], [], [] ,[] , []) == (9001, 9002) + assert layer.elementCount == 12 \ No newline at end of file diff --git a/tests/TestMachineManager.py b/tests/TestMachineManager.py index 6de6fdd941..a5d9d314cd 100644 --- a/tests/TestMachineManager.py +++ b/tests/TestMachineManager.py @@ -1,32 +1,13 @@ 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 global_stack(): - return MagicMock(name="Global Stack") - -@pytest.fixture() -def container_registry() -> ContainerRegistry: - return MagicMock(name = "ContainerRegistry") - - -@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 - + stack = MagicMock(name = "Global Stack") + stack.getId = MagicMock(return_value = "GlobalStack") + return stack @pytest.fixture() def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager: @@ -37,7 +18,7 @@ def machine_manager(application, extruder_manager, container_registry, global_st return manager - +@pytest.mark.skip(reason = "Outdated test") def test_setActiveMachine(machine_manager): registry = MagicMock() @@ -53,6 +34,29 @@ def test_setActiveMachine(machine_manager): 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() @@ -62,3 +66,45 @@ def test_hasUserSettings(machine_manager, application): assert machine_manager.numUserSettings == 12 assert machine_manager.hasUserSettings + + +def test_totalNumberOfSettings(machine_manager): + registry = MagicMock() + mocked_definition = MagicMock() + mocked_definition.getAllKeys = MagicMock(return_value = ["omg", "zomg", "foo"]) + registry.findDefinitionContainers = MagicMock(return_value = [mocked_definition]) + with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=registry)): + assert machine_manager.totalNumberOfSettings == 3 + + +def createMockedExtruder(extruder_id): + extruder = MagicMock() + extruder.getId = MagicMock(return_value = extruder_id) + return extruder + + +def createMockedInstanceContainer(instance_id, name = ""): + instance = MagicMock() + instance.getName = MagicMock(return_value = name) + instance.getId = MagicMock(return_value=instance_id) + return instance + + +def test_globalVariantName(machine_manager, application): + global_stack = application.getGlobalContainerStack() + global_stack.variant = createMockedInstanceContainer("beep", "zomg") + assert machine_manager.globalVariantName == "zomg" + + +def test_resetSettingForAllExtruders(machine_manager): + global_stack = machine_manager.activeMachine + extruder_1 = createMockedExtruder("extruder_1") + extruder_2 = createMockedExtruder("extruder_2") + extruder_1.userChanges = createMockedInstanceContainer("settings_1") + extruder_2.userChanges = createMockedInstanceContainer("settings_2") + global_stack.extruderList = [extruder_1, extruder_2] + + machine_manager.resetSettingForAllExtruders("whatever") + + extruder_1.userChanges.removeInstance.assert_called_once_with("whatever") + extruder_2.userChanges.removeInstance.assert_called_once_with("whatever") \ No newline at end of file diff --git a/tests/TestMaterialManager.py b/tests/TestMaterialManager.py deleted file mode 100644 index 92380d40ae..0000000000 --- a/tests/TestMaterialManager.py +++ /dev/null @@ -1,90 +0,0 @@ -from unittest.mock import MagicMock, patch - -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} -mocked_registry.findContainersMetadata = MagicMock(return_value = [material_1, material_2]) - - -mocked_definition = MagicMock() -mocked_definition.getId = MagicMock(return_value = "fdmmachine") -mocked_definition.getMetaDataEntry = MagicMock(return_value = []) - - -def test_initialize(application): - # Just test if the simple loading works - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - # Double check that we actually got some material nodes - assert manager.getMaterialGroup("base_material").name == "base_material" - assert manager.getMaterialGroup("test").name == "test" - - -def test_getAvailableMaterials(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_getMaterialNode(application): - with patch("UM.Application.Application.getInstance", MagicMock(return_value=application)): - manager = MaterialManager(mocked_registry) - manager.initialize() - - 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 fa0639e65a..1e305c6549 100644 --- a/tests/TestOAuth2.py +++ b/tests/TestOAuth2.py @@ -1,9 +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 @@ -101,7 +102,7 @@ def test_initialize(): initialize_preferences = MagicMock() authorization_service = AuthorizationService(OAUTH_SETTINGS, original_preference) authorization_service.initialize(initialize_preferences) - assert initialize_preferences.addPreference.called + initialize_preferences.addPreference.assert_called_once_with("test/auth_data", "{}") original_preference.addPreference.assert_not_called() @@ -172,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/TestQualityManager.py b/tests/TestQualityManager.py deleted file mode 100644 index 50318260b2..0000000000 --- a/tests/TestQualityManager.py +++ /dev/null @@ -1,60 +0,0 @@ -from unittest.mock import MagicMock - -import pytest - -from cura.Machines.QualityManager import QualityManager - - - -mocked_stack = MagicMock() -mocked_extruder = MagicMock() - -mocked_material = MagicMock() -mocked_material.getMetaDataEntry = MagicMock(return_value = "base_material") - -mocked_extruder.material = mocked_material -mocked_stack.extruders = {"0": mocked_extruder} - -@pytest.fixture() -def material_manager(): - result = MagicMock() - result.getRootMaterialIDWithoutDiameter = MagicMock(return_value = "base_material") - return result - -@pytest.fixture() -def container_registry(): - result = MagicMock() - mocked_metadata = [{"id": "test", "definition": "fdmprinter", "quality_type": "normal", "name": "test_name", "global_quality": True, "type": "quality"}, - {"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) - return result - - -@pytest.fixture() -def quality_mocked_application(material_manager, container_registry): - result = MagicMock() - result.getMaterialManager = MagicMock(return_value=material_manager) - result.getContainerRegistry = MagicMock(return_value=container_registry) - return result - - -def test_getQualityGroups(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - - assert "normal" in manager.getQualityGroups(mocked_stack) - - -def test_getQualityGroupsForMachineDefinition(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - - assert "normal" in manager.getQualityGroupsForMachineDefinition(mocked_stack) - - -def test_getQualityChangesGroup(quality_mocked_application): - manager = QualityManager(quality_mocked_application) - manager.initialize() - - assert "herp" in manager.getQualityChangesGroups(mocked_stack) diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/conftest.py b/tests/conftest.py index 7f46c202b3..876fb4f541 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -3,7 +3,7 @@ # The purpose of this class is to create fixtures or methods that can be shared among all tests. -import unittest.mock +from unittest.mock import MagicMock, patch import pytest # Prevents error: "PyCapsule_GetPointer called with incorrect name" with conflicting SIP configurations between Arcus and PyQt: Import Arcus and Savitar first! @@ -13,16 +13,51 @@ from UM.Qt.QtApplication import QtApplication # QtApplication import is require # Even though your IDE says these files are not used, don't believe it. It's lying. They need to be there. from cura.CuraApplication import CuraApplication +from cura.Settings.ExtruderManager import ExtruderManager +from cura.Settings.MachineManager import MachineManager from cura.UI.MachineActionManager import MachineActionManager +from UM.Settings.ContainerRegistry import ContainerRegistry # Create a CuraApplication object that will be shared among all tests. It needs to be initialized. # Since we need to use it more that once, we create the application the first time and use its instance afterwards. @pytest.fixture() def application() -> CuraApplication: - app = unittest.mock.MagicMock() + app = MagicMock() return app # Returns a MachineActionManager instance. @pytest.fixture() def machine_action_manager(application) -> MachineActionManager: return MachineActionManager(application) + +@pytest.fixture() +def global_stack(): + return MagicMock(name="Global Stack") + +@pytest.fixture() +def container_registry(application, global_stack) -> ContainerRegistry: + result = MagicMock() + result.findContainerStacks = MagicMock(return_value = [global_stack]) + application.getContainerRegistry = MagicMock(return_value = result) + return result + +@pytest.fixture() +def extruder_manager(application, container_registry) -> ExtruderManager: + if ExtruderManager.getInstance() is not None: + # Reset the data + ExtruderManager._ExtruderManager__instance = None + + with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)): + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = ExtruderManager() + return manager + + +@pytest.fixture() +def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager: + application.getExtruderManager = MagicMock(return_value = extruder_manager) + application.getGlobalContainerStack = MagicMock(return_value = global_stack) + with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)): + manager = MachineManager(application) + + return manager